注意:
- 本教程需要访问 Oracle Cloud。要注册免费账户,请参阅开始使用 Oracle Cloud Infrastructure 免费套餐。
- 它对 Oracle Cloud Infrastructure 身份证明、租户和区间使用示例值。完成实验室后,请使用特定于云环境的那些值替换这些值。
使用 pfSense 防火墙向域名系统体系结构添加安全性
简介
OraStage 是一家能源领域的领先公司,专注于可再生能源解决方案和创新电力技术,该公司宣布了一项战略性决定,将工作负载迁移到 Oracle Cloud Infrastructure (OCI),以提高性能、可扩展性和安全性。
考虑到 OraStage 概述的具体需求和条件,该公司需要云端的混合域名系统 (DNS) 解决方案,此处的混合意味着除了 OCI DNS 服务之外,还使用自己的 Berkeley Internet Name Domain version 9 (BIND9) DNS 系统,他们希望构建的最终体系结构显示在以下映像中。
OraStage DNS 要求:
-
该公司拥有多个内部域和子域,所有这些域都应通过其在 OCI 中的 BIND9 DNS 进行解析,其中 OraStage 将管理所有相关区域和记录。其中一个域是
orastage.com
,我们将在本教程中使用它。因此,对orastage.com
的任何查询都必须转发到其 BIND9。 -
在某些情况下,他们仍然需要解析 OCI 本机域(
oraclevcn.com
、oraclecloud.com
等),而这可以通过使用 OCI 专用 DNS 组件来实现:专用视图、转发端点和规则以及监听端点。 -
所有查询都必须通过 pfSense 防火墙实例进行检查。
-
为了避免单点故障,OraStage 计划使用另一台 DNS 服务器,并利用 OCI 负载平衡器在主 DNS 和辅助 DNS 之间分配查询。
本教程系列将逐步指导您实现上述概述的要求,从头开始构建整个解决方案。您可以从以下列表中轻松导航到每个教程:
-
教程 1:在 OCI 中配置 BIND9 DNS 。了解如何在计算实例上安装和配置 BIND9,使其成为 OCI 中两个测试环境的本地 DNS 服务器。这些环境将包括“前端”和“后端”服务器,每个服务器都托管在单独的分支网络中。BIND9 服务器将处理定向到
orastage.com
的所有 DNS 查询。 -
教程 2:在 OCI 中的 BIND9 DNS 方案上实施高可用性。本教程重点介绍添加辅助 BIND9 服务器以及配置网络负载平衡器 (Network Load Balancer,NLB) 以在两台服务器之间分配 DNS 流量。对
orastage.com
的 DNS 查询将定向到 NLB IP,这将平衡主 BIND9 服务器和辅助 BIND9 服务器之间的负载。如果一台服务器不可用,DNS 解析将继续,不会中断服务。 -
教程 3:使用 OCI DNS 解析本机域。仅关注特定用例,在需要解析
oraclevcn.com
和oraclecloud.com
等原生域的情况下,我们在 OCI 中使用原生 DNS 组件。BIND9 本教程中未使用 DNS。 -
教程 4:使用 pfSense 防火墙向 DNS 体系结构添加安全性。侧重于在 OCI 中的中心 VCN 中安装 pfSense 防火墙,并执行所需的网络配置以通过要检查的防火墙路由所有东西流量,包括 DNS 查询(在过去的教程中完成)。
概述
在本教程中,我们将探讨如何利用开源防火墙和路由器平台 pfSense 来增强 DNS 架构的安全性。
DNS 是网络基础设施的一个关键组件,但它通常容易受到 DNS 欺骗、缓存中毒和分布式拒绝服务 (DDoS) 等攻击。通过将 pfSense 与 DNS 安全措施集成,您可以添加强大的保护层,从而确保网络的 DNS 流量安全且具有弹性。因此,建议对防火墙进行配置,以过滤 DNS 查询、阻止恶意域并增强整体 DNS 完整性。
将 pfSense 防火墙放置在 DNS 服务器前面有什么好处?
-
流量过滤和访问控制
-
防火墙可以限制对 DNS 服务器的访问,仅允许授权的 IP 地址或特定网络发送 DNS 查询。这可以防止未经授权的用户或系统查询或利用服务器。
-
它可以强制实施访问控制策略,以确保只有合法的 DNS 流量到达服务器,从而阻止可能有害或不需要的流量。
-
-
防范基于 DNS 的攻击
-
DNS 放大/反射攻击防护:防火墙可以检测和缓解 DNS 放大攻击,攻击者会发送欺骗性请求来覆盖服务器。通过限制或速率限制 DNS 查询流量,防火墙将此类攻击的影响降至最低。
-
DNS 欺骗预防:防火墙可以阻止恶意或恶意的 DNS 响应,这些响应用于 DNS 欺骗或中毒攻击,以将用户误导到欺诈网站。
-
DDoS 缓解:防火墙通过监视和限制异常 DNS 流量,防止攻击者淹没您的 DNS 基础设施,提供防御机制来抵御分布式拒绝服务 (DDoS) 攻击。
-
-
DNS 查询检查和日志记录
- 防火墙可以检查 DNS 查询是否存在可疑模式,例如查询已知恶意域。它可以在这些查询到达 DNS 服务器之前阻止它们,从而有助于防止访问危险站点。
- 可以记录 DNS 查询日志以进行审计,从而可以更有效地检测异常行为或调查潜在的安全事件。
-
防止 DNS 隧道
- DNS 隧道是攻击者用来泄露数据或通过 DNS 查询与受感染系统通信的一种技术。防火墙可以检测并阻止 DNS 隧道活动,从而关闭大量数据泄漏向量。
-
速率限制和资源保护
- 防火墙可以限制来自单个源的 DNS 请求数(速率限制),以防止 DNS 服务器过载。这有助于防止可能降低服务器性能或可用性的暴力或过度 DNS 查询攻击。
-
网段
- 通过将 DNS 服务器置于防火墙后,您可以将其隔离在受保护的网络段(例如 DMZ)中,从而确保即使 DNS 服务器受到威胁,攻击者对网络其余部分的访问也会受到限制。
-
支持安全 DNS 协议
- 防火墙可以强制实施安全 DNS 协议,例如基于 HTTPS 的 DNS (DoH) 或基于 TLS 的 DNS (DoT),从而确保对 DNS 流量进行加密。这可以防止窃听或篡改 DNS 查询和响应,从而保护用户免受中间人攻击。
-
减少攻击面
- 通过将 DNS 服务器的真实 IP 地址隐藏在防火墙后面,可以减少对潜在攻击者的暴露。防火墙充当中介,在公共互联网和 DNS 基础设施之间呈现一层防御。
总体而言,将防火墙放置在 DNS 服务器前面可防止未经授权的访问、检测恶意流量以及针对各种与 DNS 相关的威胁提供强有力的保护,从而增强服务器的安全性、性能和弹性。
目标
-
本教程的主要目标是通过要检查的 pfSense 防火墙路由所有东西流量,包括 DNS 查询。此外,我们将使用防火墙的数据包捕获功能监视某些请求。
-
我们还将部署一个公共 Windows 跳转服务器,该服务器将用作管理 OCI VCN(尤其是 pfSense 防火墙)中的其他专用实例的访问点。
-
在本教程结束时,我们的目标是建立一个集线器和辐条网络架构模型。此设置将增强安全性,通过集中通过集线器网络之间的路由控制来简化 OraStage 的网络管理,并提高可扩展性,允许公司随时将新网络添加到现有集线器。
注:
本教程不涵盖针对 DNS 特定攻击的保护功能。相反,我们的重点是部署 pfSense 防火墙并将其集成到现有环境中,以通过它路由所有流量(例如,FE-VM 到 BE-VM、FE-VM 到 DNS-NLB 等)。我们还将演示如何在防火墙上配置基本访问控制规则。
即使您已经部署了其他类型的防火墙解决方案(例如 OCI Network Firewall 或市场网络防火墙(例如 Palo Alto 或 FortiGate)等),您仍可以遵循本教程。
最终架构
先决条件
-
访问 OCI 租户以及管理所需网络、计算和对象存储服务的权限。
-
基本了解 OCI 网络路由和安全及其功能:虚拟云网络 (VCN)、路由表、动态路由网关 (DRG)、安全列表、堡垒和 OCI 网络负载平衡器。
-
基本了解 DNS。
-
务必完成以下教程:
-
需要一个 VCN,请确保使用向导创建它,以便您获取 VCN 内所需的所有默认组件并将其连接到 DRG。有关更多信息,请参见 Task 1.3:Attach VCNs to the DRG 。
- Hub-VCN:公共子网将托管跳转服务器,专用子网将托管 pfSense 防火墙。
-
根据上述先决条件,您应该已经构建了以下体系结构。
任务 1:设置路由和安全网络组件
任务 1.1:创建虚拟云网络 (Hub-VCN)
确保已创建 Hub-VCN (10.4.0.0/16
),其中包含 Hub-Private-Subnet (10.4.0.0/24
) 和 Hub-Public-Subnet (10.4.1.0/24
)。
-
单击左上角的汉堡菜单(≡)。
- 单击 Networking 。
- 单击虚拟云网络。
-
如上所述,我们可以看到已部署的 VCN,请确保使用向导创建该 VCN,因此默认情况下您将获得以下组件:三个网关,一个公共子网具有路由表,一个安全列表连接到该子网,以及一个专用子网具有路由表和附加的安全列表。
注:
从现在起,在路由表和安全列表配置的某些部分内,我们将所有网络:DNS-VCN (
10.0.0.0/16
) 、前端 VCN (10.1.0.0/16
) 、后端 VCN(10.2.0.0/16
) 、 LSN-VCN (10.3.0.0/16
) 、 Hub-VCN (10.4.0.0/16
) 聚合为一个地址块 (10.0.0.0/8
),这样可以简化管理,因为这样可以减少规则的数量。在某些情况下,在集线器和分支拓扑中,分支网络可能需要从集线器网络获取互联网访问,以便流量通过防火墙以获得更好的安全性,这就是为什么在分支子网级别上,我们将所有流量路由到 DRG。但是,在本教程中,我们未演示 Internet 访问方案。
任务 1.2:为 Hub-VCN 配置路由和安全
-
这必须在两个子网中的每个子网上执行。导航到“VCN”页面,然后单击 Hub-VCN 。
-
我们将从公共子网开始,单击它。
-
单击 Route Table(路由表),这是一个分配的路由表。
-
添加以下规则。
0.0.0.0/0
— Internet 网关:对 Internet 具有双向访问权。我们需要它以其公共 IP 地址访问跳转服务器。
-
让我们为公共子网执行安全操作。转到 Subnet Details(子网详细信息)页面,然后单击分配的安全列表。
-
允许入站流量:来自任何位置的 RDP 流量(TCP/端口 3389)。
-
允许所有出站流量。
-
导航回 VCN 页面并单击专用子网。
-
单击 Route Table(路由表),这是一个分配的路由表。
-
添加以下规则。
-
0.0.0.0/0
-NAT 网关:要单向访问 Internet,请根据需要安装软件包或修补程序。本教程中的组件并不重要,但如果 pfSense 需要 Internet 访问,则最好使用它。 -
10.0.0.0/8
— DRG:将发往 Frontend-VCN 、 Backend-VCN 、DNS-VCN 或 LSN-VCN 的流量路由到 DRG,就像通过检查流量完成防火墙时一样,它将转出允许的流量,这将使用此路由表并将其发送到 DRG。
-
-
让我们为专用子网执行安全操作。转到 Subnet Details(子网详细信息)页面,然后单击分配的安全列表。
-
允许入站流量:来自 Frontend-VCN 、 Backend-VCN 、DNS-VCN 和 LSN-VCN 的所有类型的流量。
-
允许所有出站流量。
任务 1.3:为 LSN-VCN 配置路由和安全
-
这必须在子网级别执行。导航到“VCN”页并单击 LSN-VCN 。
-
单击专用子网。
-
单击 Route Table(路由表),这是一个分配的路由表。
-
我们将删除所有规则。
-
我们将仅用一个规则替换以下所有规则。
0.0.0.0/0
— DRG:将所有流量路由到 DRG,包括通往其他任何 VCN 的流量以及通往互联网的流量。
-
让我们现在做安全。转到 Subnet Details(子网详细信息)页面,然后单击分配的安全列表。
-
我们将删除允许 DNS 流量的所有入站规则。
-
我们将仅使用这两个规则替换以下规则。
注:请勿更改出站规则中的任何内容。
任务 1.4:为 DNS-VCN 配置路由和安全
-
这必须在子网级别执行。导航到“VCN”页并单击 DNS-VCN 。
-
单击专用子网。
-
单击 Route Table(路由表),这是一个分配的路由表。
-
我们将删除以下所有规则。
-
我们将仅用一个规则替换以下规则。
0.0.0.0/0
— DRG:将所有流量路由到 DRG,包括通往其他任何 VCN 的流量以及通往互联网的流量。
-
让我们现在做安全。转到 Subnet Details(子网详细信息)页面,然后单击分配的安全列表。
-
我们将删除允许 DNS 流量的所有入站规则。
-
我们将仅使用这两个规则替换以下规则。
注:请勿更改出站规则中的任何内容。
任务 1.5:为前端 VCN 配置路由和安全
-
这必须在子网级别执行。导航到“VCN”页,然后单击 Frontend-VCN 。
-
单击专用子网。
-
单击 Route Table(路由表),这是一个分配的路由表。
-
我们将删除以下所有规则。
-
我们将用这两个规则替换以下规则。
-
0.0.0.0/0
— DRG:将所有流量路由到 DRG,包括通往其他任何 VCN 的流量以及通往互联网的流量。 -
Oracle 服务网络中的所有 LIN 服务 - 服务网关:要提供对米兰区域中的 Oracle 服务的访问,需要这样做才能与 OCI 堡垒服务保持连接。此处没有用于访问 Internet 或 Oracle 服务的规则,因此您将遇到堡垒插件错误,您将无法使用堡垒来访问 FE-VM 。
注:请勿更改入站和出站规则中的任何内容。
-
任务 1.6:为后端 VCN 配置路由和安全
-
这必须在子网级别执行。导航到“VCN”页并单击后端 VCN 。
-
单击专用子网。
-
单击 Route Table(路由表),这是一个分配的路由表。
-
我们将删除以下所有规则。
-
我们将用这两个规则替换以下规则。
-
0.0.0.0/0
— DRG:将所有流量路由到 DRG,包括通往其他任何 VCN 的流量以及通往互联网的流量。 -
Oracle 服务网络中的所有 LIN 服务 - 服务网关:要提供对米兰区域中的 Oracle 服务的访问,需要这样做才能与 OCI 堡垒服务保持连接。此处没有用于访问 Internet 或 Oracle 服务的规则,则堡垒插件将出现错误,您将无法使用堡垒来访问 BE-VM。
-
注:请勿更改入站和出站规则中的任何内容。
任务 1.7:在 DRG 上配置请求 VCN 路由
此任务的目的是确保从任何网络(DNS/LSN/前端/后端)发送并在 DRG 上接收的所有流量都路由到中心,由防火墙对其进行检查。
-
单击左上角的汉堡菜单(≡)。
- 单击 Networking 。
- 单击动态路由网关。
-
单击 DRG 。
- 单击 VCN 附件。VCN 附加表示将 VCN 连接到 DRG 以启用 VCN 与外部网络或其他 VCN 之间的网络通信的链接。
- 您会注意到,我们已连接了所有 VCN。
- 单击 DRG 路由表。
- 单击 Create DRG route table 。
- 输入路由表的名称。
- 添加路由规则:选择将所有内容路由到集线器附加的
0.0.0.0/0
和 Hub VCN Attachment 。 - 单击 Create DRG route table 。
- 已成功创建路由表。
-
将路由表分配给所有分支 VCN 附加,从后端 VCN 附加开始,然后单击该表。
- 单击编辑。
- 单击显示高级选项。
- 单击 DRG 路由表。
- 选择 Spoke-DRG-RT 。
- 单击保存更改。
- 已成功将 DRG 路由表分配给后端 VCN 附加。现在,从后端 VCN 传出到 DRG 的所有流量都将路由到 Hub-VCN 。
-
对其余附件重复步骤 1 到 6。
任务 2:预配 Windows Jump 服务器
-
在本任务中,我们将预配新的 Windows 计算实例并利用它与其他专用资源进行连接。其预期用途包括:
-
(必需)通过浏览器 (HTTP/S) 访问和管理 pfSense 防火墙。
-
(可选)访问 FE-VM 实例并执行测试。您可以使用 OCI 堡垒服务,也可以将此服务器用作新的跳转箱。
-
-
单击左上角的汉堡菜单(≡)。
- 单击计算。
- 单击实例。
-
单击创建实例。
-
输入实例名称。
- 单击更改图像。
- 选择 Windows 。
- 选择 Windows Server 2016 Standard 映像。
- 选择以同意使用条款。
- 单击 Select image(选择图像)。
- 已成功将实例的操作系统 (operating system,OS) 更改为 Windows Server 2016 Standard 。
-
在主要 VNIC 信息部分中,输入以下信息。
- 选择 Hub-VCN 。
- 选择公共子网,以便为实例分配公共 IP 地址。
- 为实例分配专用 IP 地址
10.4.1.5
。
- 创建 Windows 计算机时,您将看到一条注释,指出将在创建实例后生成初始密码。区别在于 Linux OS,SSH 密钥用于身份验证。
- 单击创建。
-
已成功创建 Jump-Server 计算实例。记下以下详细信息,在访问实例时将使用它们。
- 公共 IP 地址。
- 用户名。
- 初始密码。
-
要从 Windows 个人计算机访问跳转服务器,请打开远程桌面连接,输入实例的公共 IP,然后单击连接。
-
单击是。
-
输入实例页上提供的初始密码,然后单击下一步。
-
登录前必须更改密码,然后单击确定。
-
输入新密码两次。
-
已成功更改密码,请单击确定以继续。
-
输入新密码,然后单击下一步。
-
已成功连接到跳转服务器。
-
体系结构应如下图所示。
任务 3:安装和配置 pfSense 防火墙
注:如果已经有另一种类型的防火墙解决方案,则可以跳过任务 3.1 到 3.7,然后从 3.8 开始。
任务 3.1:下载 pfSense 映像
-
从 Netgate 网站下载 pfSense 图像。确保下载
memstick-serial
版本。我们使用的图像的文件名是pfSense-CE-memstick-serial-2.7.2-RELEASE-amd64.img.gz
。有关更多信息,请访问 Netgate 。 -
安装的文件将采用
.gz
格式。提取图像后,您会发现图像文件名是pfSense-CE-memstick-serial-2.7.2-RELEASE-amd64.img
。
任务 3.2:创建 OCI 对象存储存储桶
在此任务中,我们将创建一个 OCI Object Storage 存储桶,用于上载 pfSense 映像并使用此对象映像在 OCI 中创建定制映像。
-
单击左上角的汉堡菜单(≡)。
- 单击 Storage 。
- 单击时段。
- 单击创建存储桶。
- 输入组名称。
- 选择标准存储层作为默认存储层。
- 单击创建。
-
请注意,已创建存储桶。
任务 3.3:将 pfSense 映像上载到存储桶
-
转至时段详细信息页。
- 在存储桶页面中,向下滚动。
- 单击上传。
-
在上载对象页中,输入以下信息。
- 单击 select files 并选择 pfSense 图像。
- 单击上传。
-
当 pfSense 映像上载到存储桶时,您可以监视进度。
- pfSense 映像完全上载后,进度状态将为已完成。
- 单击关闭。
任务 3.4:创建定制映像
我们已上载 pfSense 映像。现在,我们需要基于它创建 OCI 定制映像。此定制映像将用于创建 pfSense 防火墙实例。
-
单击左上角的汉堡菜单(≡)。
- 单击计算。
- 单击自定义图像。
-
单击导入图像。
-
在导入图像页中,输入以下信息。
- 输入名称。
- 选择 Generic Linux 作为 Operating system 。
- 选择从对象存储桶导入。
- 选择上载映像的存储存储桶。
- 在对象名称中,选择已上载到存储桶的对象(pfSense 图像)。
- 选择 VMDK 作为映像类型。
- 选择半虚拟化模式。
- 单击导入图像。
-
定制映像为 IMPORTING 。
-
几分钟后,状态为 AVAILABLE
任务 3.5:使用定制 pfSense 映像创建实例
-
单击左上角的汉堡菜单(≡)。
- 单击计算。
- 单击实例。
-
单击创建实例。
-
输入防火墙实例的名称。
- 单击更改图像。
- 选择我的图像。
- 单击定制图像。
- 选择在任务 3.4 中创建的定制映像。
- 单击 Select image(选择图像)。
- 请注意,已选择 pfSense 映像。
-
在主要 VNIC 信息部分中,输入以下信息。
- 选择 Hub-VCN 。
- 选择专用子网。
- 为实例分配专用 IP 地址
10.4.0.5
。
- 选择无 SSH 密钥。
- 单击创建。
-
已成功创建 pfSense 防火墙计算实例。
任务 3.6:在实例上安装 pfSense
我们需要执行初始安装并设置 pfSense 防火墙。我们已经有正在运行的实例。
-
要安装 pfSense 防火墙软件,我们需要创建控制台连接。在防火墙实例页中,向下滚动。
- 单击 Console connection(控制台连接)。
- 单击启动 Cloud Shell 连接。
-
将显示一些启动消息。按 ENTER 。
-
阅读版权信息,然后选择 Accept(接受),然后按 ENTER(输入)。
- 选择 Install pfSense 。
- 选择 OK 并按 ENTER 键。
- 选择手动磁盘设置(专家)。
- 选择 OK 并按 ENTER 键。
- 选择 da0 - 47 GB MBR 。
- 选择创建,然后按 ENTER 键。
- 在类型中,输入 freebsd 。
- 在大小中,输入 46 GB 。
- 输入 Mountpoint 。
- 选择 OK 并按 ENTER 键。
- 在 da0s4 中,选择 46 GB BSD 。
- 选择创建,然后按 ENTER 键。
- 在 Type 中,输入 freebsd-ufs 。
- 在大小中,输入 40 GB 。
- 在 Mountpoint 中,输入 / 。
- 选择 OK 并按 ENTER 键。
- 请注意,为
/
创建了挂载点。 - 在 da0s4 中,输入 46 GB BSD 。
- 选择创建,然后按 ENTER 键。
- 在 Type(类型)中,输入 freebsd-swap 。
- 在 Size 中,输入 5670 MB 。
- 输入 Mountpoint 。
- 选择 OK 并按 ENTER 键。
- 请注意,已为交换创建挂载点。
- 选择 Finish(完成),然后按 ENTER(输入)。
-
选择 Commit 并按 ENTER 。
-
选择 Reboot 并按 ENTER 。
-
首次重新引导后,您将获得一些配置选项来配置 WAN 接口。对于 Should VLANS be set up ,输入 n 并按 ENTER 。
-
对于 Enter the WAN interface name or 'a' for auto-detection (vtnet0 or a) ,输入
vtnet0
。 -
在此设置中,我们将创建一个仅包含一个接口的防火墙,因此我们不会配置 LAN 接口,因此,对于 ENTER the LAN interface name or 'a' for auto-detection ,按 ENTER 跳过此接口设置。
- 验证 WAN 接口名称。
- 对于 Do you want to continue(是否要继续),请输入 y 并按 ENTER 键。
-
请注意一些消息,将完成配置。pfSense OS 将执行完全引导。
- 您将看到将使用 DHCP 配置 IP 地址。
- 请注意 pfSense 菜单以执行一些附加的基本配置。
-
体系结构应如下图所示。
任务 3.7:连接到 pfSense Web 图形用户界面 (Web Graphic User Interface,GUI) 并完成初始设置
安装完成,现在我们需要连接到 pfSense 防火墙的 Web GUI。但在此之前,请确保允许来自 Hub-Public-Subnet 的 HTTP/HTTPS 流量,因为我们将从位于其中的 Jump-Server 连接到防火墙 GUI。我们已允许来自所有 VCN (10.0.0.0/8
) 的所有流量通过任务 1.2 中的防火墙。
-
输入 pfSense 防火墙 IP 地址。
- 在 Windows 实例中,打开浏览器并使用 HTTPS 导航到 pfSense 防火墙 IP。
- 单击高级。
-
单击继续。
- 输入默认用户名
admin
。 - 输入默认密码
pfsense
。 - 单击登录。
- 输入默认用户名
-
单击下一步。
-
单击下一步。
- 输入主机名。
- 输入域名名称或保留域名默认值。
- 向下滚动,然后单击下一步。
-
单击下一步。
注:在这种情况下,其工作方式是 Oracle 将在 DHCP 服务器中保留静态 IP,并将此地址分配给 pfSense 防火墙。因此,pfSense 防火墙将始终获得相同的 IP 地址,但从 OCI 的角度来看,这将是一个静态 IP,从 pfSense 的角度来看,这将是一个 DHCP 地址。
- 在 Configure WAN interface 部分中,选择 DHCP 。
- 向下滚动并将其他所有内容保留为默认值,然后单击下一步。
- 输入新的管理口令。
- 输入 Admin Password AGAIN 。
- 单击下一步。
-
单击重新加载。
-
请注意,pfSense 防火墙配置正在重新加载。
-
向下滚动,然后单击完成。
-
单击 Accept 。
-
单击关闭。
如果 pfSense 防火墙无法访问 Internet,则仪表盘页将需要更长时间才能加载。但是,可以通过允许 pfSense 使用我们在任务 1.2 中已经执行的 OCI NAT 网关访问 Internet 来修复此问题。在此图中,请注意已安装 pfSense,并且显示板可见。
任务 3.8:将通信路由到 pfSense 防火墙
在任务 1 中,我们在 VCN 和 DRG 上配置了路由,以强制从发言人发送的所有流量进入中心网络(绿色箭头)。此任务解答如何将所有这些通信路由到 pfSense 防火墙(红色箭头)。
我们将通过创建入站路由表(传输路由表)来执行此操作。这基本上是在 VCN 级别创建的路由表,但是在 DRG 中进行分配,因此进入集线器的流量将路由到您选择的特定目标(在我们的方案中为 pfSense 防火墙)。
-
导航到 pfSense 防火墙实例。
- 单击计算。
- 单击实例。
-
单击 Firewall 。
-
向下滚动。
- 单击 Attached VNICs 。
- 单击三个点。
- 单击 Edit VNIC(编辑 VNIC)。
- 选择 Skip source/destination check(跳过源/目的地检查)。如果错过了此步骤,则在创建路由规则时将面临问题。
- 单击保存更改。
-
导航到“VCN”页,然后输入 Hub-VCN 。
-
向下滚动。
- 单击路由表。
- 单击创建路由表。
- 为路由表输入名称。
- 单击另一个路由规则。
- 选择专用 IP 作为目标类型。
- 输入
0.0.0.0/0
作为目标 CIDR 块。 - 输入 pfSense 的 Private IP 。
- 单击创建。
- 路由表已成功创建,现在必须进行分配。
-
导航到 DRG 页,然后单击 Hub VCN Attachment(Hub VCN 连接)。
-
单击编辑。
-
单击显示高级选项。
- 单击 VCN 路由表。
- 在关联路由表中,选择选择现有路由表。
- 选择我们创建的路由表。
- 单击保存更改。
-
已成功分配 VCN 路由表。
注:在 DRG 附加中,可以分配两种类型的路由表:
- DRG 路由表:我们在任务 1.7 中为分支附件创建的路由表。每次发送 VCN 附加的外部流量时,将检查此表。
- VCN 路由表:我们在此任务 3.8 中创建的路由表。接收流量并进入 VCN 附加时,将检查此表。
-
在此阶段,我们已完成所有与 OCI 相关的配置,确保此架构中任意两个资源之间的流量通过 pfSense 进行路由以供检查。现在,如果通过从 FE-VM 中 ping BE-VM 来执行快速测试,该怎么办?
正如您所观察到的,pfSense 将阻止所有经过的流量,直到您明确允许它,我们将在即将到来的任务中执行此操作。
任务 3.9:允许流量通过 pfSense
在本教程中,我们将利用 pfSense 的两个功能。
-
访问规则:根据协议、端口号、源地址和目标地址允许或拒绝流量。
-
包捕获:应用基于 IP 地址、包类型、端口号等的过滤器,以分析防火墙将检查的包级别的传入和传出流量。
请记住,您可以通过 pfSense 完成更多工作,但此处的重点更多是在 OCI 中安装 pfSense,并将其集成到我们的现有网络架构中,并在 OCI 中实施适当的路由和安全性。
-
在本任务中,我们将允许某些场景中所需的流量。由于本教程系列集中于 DNS,因此我们将添加的规则将专门与 DNS 流量相关(基于 Native 和 BIND9 )。现在,导航到 pfSense Web 管理界面。
- 单击 Firewall 。
- 单击规则。
-
请注意 pfSense 防火墙的默认规则。
第一个规则(可选):
-
连接详细资料。
- 源:跳转服务器 (
10.4.1.5
)。 - 目标: FE-VM (
10.1.0.5
)。 - 协议:SSH 。
- 端口号:
22
。 - 操作:通过。
- 理由:我们希望从 Jump-Server 访问 FE-VM 。这是可选规则,因为您仍然可以使用堡垒进行连接。
- 源:跳转服务器 (
-
单击添加。
- 选择操作以通过。
- 选择 Protocol(协议)到 TCP 。
- 在
10.4.1.5
中输入源地址。 - 在
10.1.0.5
中输入 Destination Address 。 - 在
22
中输入 Destination Port(目标端口)。 - 单击保存。
- 单击应用更改。
- 此时将显示一条消息,指示已成功应用更改。
- 添加规则。
第二条规则:
-
连接详细资料。
- 来源: FE-VM (
10.1.0.5
)。 - 目标: BE-VM (
10.2.0.5
)。 - 协议:ICMP 。
- 操作:通过。
- 理由:为了进行测试,我们需要启用 FE-VM 来 ping BE-VM 。
- 来源: FE-VM (
-
单击添加。
- 选择操作以通过。
- 选择 Protocol 到 ICMP ,选择 Subtype 到 any 。
- 在
10.1.0.5
中输入源地址。 - 在
10.2.0.5
中输入 Destination Address 。 - 单击保存。
- 单击应用更改。
- 此时将显示一条消息,指示已成功应用更改。
- 添加规则。
第三条规则:
-
连接详细资料。
- 来源:前端 VCN 的前端 (
10.1.0.6
)。 - 目标: LSN (
10.3.0.6
)。 - 协议:TCP 和 UDP 。
- 端口号:
53
。 - 操作:通过。
- 理由:我们希望 FE-VM 能够解析 BE-VM (
be-vm.beprivatesubnet.backendvcn.oraclevcn.com
)。为此,前端 VCN 的前端必须能够查询监听程序。因此,必须允许 DNS 流量。
- 来源:前端 VCN 的前端 (
-
单击添加。
- 选择操作以通过。
- 选择 Protocol(协议)到 TCP/UDP 。
- 在
10.1.0.6
中输入源地址。 - 在
10.3.0.6
中输入 Destination Address 。 - 在
53
中输入 Destination Port(目标端口)。 - 单击保存。
- 单击应用更改。
- 此时将显示一条消息,指示已成功应用更改。
- 添加规则。
第四个规则:
-
连接详细资料。
- 来源:前端 VCN 的前端 (
10.1.0.6
)。 - 目标:DNS-NLB (
10.0.0.110
)。 - 协议:TCP 和 UDP 。
- 端口号:
53
。 - 操作:通过。
- 理由:我们希望 FE-VM 能够解析 BE-VM (
be.orastage.com
)。为此,前端 Frontend-VCN 必须能够查询将流量发送到后端 BIND9 DNS 服务器之一的 DNS-NLB 。因此,必须允许 DNS 流量。
- 来源:前端 VCN 的前端 (
-
单击添加。
- 选择操作以通过。
- 选择 Protocol(协议)到 TCP/UDP 。
- 在
10.1.0.6
中输入源地址。 - 在
10.0.0.110
中输入 Destination Address 。 - 在
53
中输入 Destination Port(目标端口)。 - 单击保存。
- 单击应用更改。
- 此时将显示一条消息,指示已成功应用更改。
- 添加规则。
第五条规则:
-
连接详细资料。
- 来源:后端 VCN 的前沿 (
10.2.0.6
)。 - 目标: LSN (
10.3.0.6
)。 - 协议:TCP 和 UDP 。
- 端口号:
53
。 - 操作:通过。
- 理由:我们希望 BE-VM 能够解析 FE-VM (
fe-vm.feprivatesubnet.frontendvcn.oraclevcn.com
)。为此,后端 VCN 的前端必须能够查询监听程序。因此,必须允许 DNS 流量。
注:重复在第三条规则中执行的步骤,但这次的源与 Backend-VCN (
10.2.0.6
) 的源不同。 - 来源:后端 VCN 的前沿 (
第六条规则:
-
连接详细资料。
- 来源:后端 VCN 的前沿 (
10.2.0.6
)。 - 目标:DNS-NLB (
10.0.0.110
)。 - 协议:TCP 和 UDP 。
- 端口号:
53
。 - 操作:通过。
- 理由:我们希望 BE-VM 能够解析 FE-VM (
fe.orastage.com
)。为此,向前看,后端 VCN 必须能够查询 DNS-NLB ,该查询会将流量发送到后端 BIND9 DNS 服务器之一。因此,必须允许 DNS 流量。
注:重复第四个规则中执行的步骤,但这次的源不同,后端 VCN (
10.2.0.6
) 的源不同。 - 来源:后端 VCN 的前沿 (
任务 4:测试和验证
-
我们仅从 FE-VM 实例进行测试。
注:(可选)我们将使用 Windows Jump-Server 连接到 FE-VM ,如果需要,您仍可以通过堡垒进行连接。
- 将我们在 OCI Cloud Shell 中使用的私钥从过去的教程复制到 Windows 实例中。
- 在服务器上安装 OpenSSH。有关更多信息,请参见 Technical :Install OpenSSH SFTP on Windows Server 2016 。
- 运行 SSH 命令。
- 我们已成功登录到 FE-VM 实例。
测试方案 1
-
测试本机域
*.oraclevcn.com
。FE-VM 客户机应该能够解析be-vm.beprivatesubnet.backendvcn.oraclevcn.com
。我们已在 pfSense 中允许此流量。在此测试中,我们将使用 pfSense 中的包捕获功能来确保流量通过该功能。 -
转发流量:
-
响应流量:
-
从 Windows 计算机访问 pfSense。
- 单击诊断。
- 单击包捕获。
- 填写源 IP (FWD - 10.1.0.6) 和目标 IP (LSN - 10.3.0.6)。
- 在
53
中输入端口号。 - 单击开始。
- 您可以监视从 FWD 到 LSN 的 DNS 流量。
-
从 FE-VM 中,对 BE-VM 本机域
be-vm.beprivatesubnet.backendvcn.oraclevcn.com
执行 ping 操作。 -
在包捕获中,每次我们 ping 它执行查询时,您都会注意到。
-
更改过滤器以监视 ping 流量。
-
转发流量:
-
响应流量:
- 填写源 IP (FE-VM - 10.1.0.5) 和目标 IP (BE-VM - 10.2.0.5)。
- 以 ICMPv4 形式输入 Protocol 。
- 单击开始。
- 您可以监视从 FE-VM 到 BE-VM 的 Ping 流量。
-
在 FE-VM 中,对 BE-VM
be-vm.beprivatesubnet.backendvcn.oraclevcn.com
执行其他 ping 操作。 -
在包捕获中,您将注意到 ping 流量。
-
向上滚动并单击 Stop(停止)可在完成测试时停止包捕获。
-
单击清除捕获以启动其他捕获。
注:您可以在测试中执行相同的步骤,但方向相反,从 BE-VM 到 FE-VM
fe-vm.feprivatesubnet.frontendvcn.oraclevcn.com
。由于此方案已允许流量。
测试方案 2
-
测试公司的 BIND9 托管域
*.orastage.com
。FE-VM 客户机应该能够解析be.orastage.com
。我们已在 pfSense 中允许此流量。在本测试中,我们将使用 pfSense 中的包捕获功能来确保流量通过该功能。 -
转发流量:
-
响应流量:
-
从跳转服务器访问 pfSense。
- 单击诊断。
- 单击包捕获。
- 填写源 IP (FWD - 10.1.0.6) 和目标 IP (DNS-NLB - 10.0.0.110)。
- 在
53
中输入端口号。 - 单击开始。
- 您可以监视从 FWD 到 DNS-NLB 的 DNS 流量。
-
从 FE-VM 中,对 BE-VM 域
be.orastage.com
执行 ping 操作。 -
在包捕获中,每次我们 ping 它执行查询时,您都会注意到。
-
更改过滤器以监视 ping 流量。
-
转发流量:
-
响应流量:
- 填写源 IP (FE-VM - 10.1.0.5) 和目标 IP (BE-VM - 10.2.0.5)。
- 以 ICMPv4 形式输入 Protocol 。
- 单击开始。
- 您可以监视从 FE-VM 到 BE-VM 的 Ping 流量。
-
在 FE-VM 中,对 BE-VM
be.orastage.com
执行其他 ping 操作。 -
在包捕获中,您将注意到 ping 流量。
-
向上滚动并单击 Stop(停止)可在完成测试时停止包捕获。
-
在完成测试时单击清除捕获。
注:您可以在测试中执行相同的步骤,但方向相反,从 BE-VM 到 FE-VM
fe.orastage.com
。由于此方案已允许流量。
小结
祝贺您!我们终于完成了 DNS 之旅。
在本教程中,我们专注于通过 pfSense 增强 OraStage 的 DNS 架构,该架构为各种基于 DNS 的攻击和漏洞提供了重要的防御层。通过过滤流量、实施安全 DNS 协议以及阻止恶意域,OraStage 可以确保其 DNS 服务器安全高效地运行。
在整个系列中,您都掌握了 OCI 中的一些重要技能。每个教程都是基于上一个教程构建的,在 OCI 中提供了坚实的基础,同时依赖于渐进式学习方法。这些技能将帮助您有效地管理和优化云基础设施:
- 设置虚拟云网络 (Virtual Cloud Network,VCN) 路由和安全性。
- 设置动态路由网关 (Dynamic Routing Gateway,DRG)。
- 设置和使用 OCI 堡垒来访问专用实例。
- 设置和使用 Windows 跳转服务器来访问专用实例。
- 在 OCI 中安装和配置 BIND9 DNS 解决方案。
- 配置和使用 OCI 网络负载平衡器以实现高可用性。
- 配置和使用 OCI 专用 DNS 组件来解析本机域。
- 在 OCI 中安装和配置 pfSense 防火墙,并将其集成到中心架构和分支架构中。
确认
- 作者 — Anas abdallah(云网络专家)
更多学习资源
浏览 docs.oracle.com/learn 上的其他实验室,或者访问 Oracle Learning YouTube 渠道上的更多免费学习内容。此外,请访问 education.oracle.com/learning-explorer 成为 Oracle Learning Explorer。
有关产品文档,请访问 Oracle 帮助中心。
Adding Security to the Domain Name System Architecture using pfSense Firewall
G19402-02
Copyright ©2025, Oracle and/or its affiliates.