网站搜索

安装并配置 pfBlockerNg 以在 pfSense 防火墙中列入 DNS 黑名单


在之前的一篇文章中,讨论了基于 FreeBSD 的强大防火墙解决方案(称为 pfSense)的安装。正如前面的文章中提到的,pfSense 是一个非常强大且灵活的防火墙解决方案,可以利用可能闲置而没有做太多事情的旧计算机。

本文将讨论一个名为 pfBlockerNG 的 pfsense 精彩附加包。

pfBlockerNG 是一个可以安装在 pfSense 中的软件包,使防火墙管理员能够将防火墙的功能扩展到传统的有状态 L2/L3/L4 防火墙之外。

随着攻击者和网络犯罪分子的能力不断提高,为阻止他们的攻击而采取的防御措施也必须随之提高。与计算世界中的任何事物一样,没有一种解决方案可以修复所有产品。

pfBlockerNG 为 pfSense 提供了防火墙基于项目做出允许/拒绝决策的能力,例如 IP 地址的地理位置、资源的域名或特定网站的 Alexa 评级。

限制域名等项目的能力非常有利,因为它允许管理员阻止内部计算机尝试连接到已知的坏域(换句话说,可能已知存在恶意软件、非法内容或其他内容的域)。阴险的数据)。

本指南将逐步配置 pfSense 防火墙设备以使用 pfBlockerNG 软件包,以及可添加/配置到 pfBlockerNG 工具中的域阻止列表的一些基本示例。

要求

本文将做出一些假设,并将以之前有关 pfSense 的安装文章为基础。假设如下:

  • pfSense 已安装,当前没有配置任何规则(全新)。
  • 防火墙只有一个 WAN 和一个 LAN 端口(2 个端口)。
  • LAN 侧使用的 IP 方案是 192.168.0.0/24。

应该注意的是,pfBlockerNG 可以在已经运行/配置的 pfSense 防火墙上配置。这里做出这些假设的原因只是为了理智起见,许多将要完成的任务仍然可以在非干净的 pfSense 盒子上完成。

实验室图

下图是本文将使用的 pfSense 环境的实验图。

为 pfSense 安装 pfBlockerNG

实验室准备就绪后,就可以开始了!第一步是连接到 pfSense 防火墙的 Web 界面。该实验室环境再次使用 192.168.0.0/24 网络,防火墙充当地址为 192.168.0.1 的网关。使用网络浏览器并导航到“https://192.168.0.1”将显示 pfSense 登录页面。

有些浏览器可能会抱怨 SSL 证书,这是正常的,因为证书是由 pfSense 防火墙自签名的。您可以安全地接受警告消息,如果需要,可以安装由合法 CA 签名的有效证书,但这超出了本文的范围。

成功点击“高级”和“添加例外...”后,点击确认安全例外。然后将显示 pfSense 登录页面并允许管理员登录防火墙设备。

登录 pfSense 主页面后,单击“系统”下拉菜单,然后选择“包管理器”。

单击此链接将更改为包管理器窗口。要加载的第一页将是所有当前安装的软件包,并且为空白(本指南再次假设干净的 pfSense 安装)。单击文本“可用软件包”即可获得 pfSense 可安装软件包的列表。

加载“可用软件包”页面后,在“搜索词”框中输入“pfblocker”,然后单击“搜索 '。返回的第一个项目应该是 pfBlockerNG。找到 pfBlockerNG 描述右侧的“安装”按钮,然后单击“+” 安装该软件包。

该页面将重新加载并请求管理员通过单击“确认”确认安装。

一旦确认,pfSense 将开始安装 pfBlockerNG。不要离开安装程序页面!等待页面显示安装成功。

安装完成后,即可开始 pfBlockerNG 配置。不过,需要完成的第一个任务是解释正确配置 pfBlockerNG 后会发生什么。

配置 pfBlockerNG 后,运行 pfBlockerNG 软件的 pfSense 防火墙应拦截网站的 DNS 请求。然后,pfBlockerNG 将更新映射到不良 IP 地址的已知不良域名列表。

pfSense 防火墙需要拦截 DNS 请求,以便能够过滤掉坏域,并将使用名为 UnBound 的本地 DNS 解析器。这意味着 LAN 接口上的客户端需要使用 pfSense 防火墙作为 DNS 解析器。

如果客户端请求的域位于 pfBlockerNG 的阻止列表中,则 pfBlockerNG 将返回该域的错误 IP 地址。让我们开始这个过程吧!

pfSense 的 pfBlockerNG 配置

第一步是在 pfSense 防火墙上启用 UnBound DNS 解析器。为此,请单击“服务”下拉菜单,然后选择“DNS 解析器”。

当页面重新加载时,DNS 解析器常规设置将是可配置的。需要配置的第一个选项是“启用 DNS 解析器”复选框。

接下来的设置是设置 DNS 侦听端口(通常为端口 53),设置 DNS 解析器应侦听的网络接口(在此配置中,应为 LAN 端口和 Localhost),然后设置出口端口(应为在此配置中为 WAN)。

做出选择后,请务必单击页面底部的“保存”,然后单击页面顶部出现的“应用更改”按钮这一页。

下一步是pfBlockerNG具体配置的第一步。导航到“防火墙”菜单下的 pfBlockerNG 配置页面,然后单击“pfBlockerNG”。

pfBlockerNG 加载后,首先单击“DNSBL”选项卡开始设置 DNS 列表,然后再激活 pfBlockerNG。

当“DNSBL”页面加载时,pfBlockerNG 菜单下方将出现一组新菜单(下面以绿色突出显示)。需要解决的第一项是“启用 DNSBL”复选框(下面以绿色突出显示)。

此复选框将要求在 pfSense 框中使用UnBound DNS 解析器,以便检查来自 LAN 客户端的 dns 请求。别担心 UnBound 已在之前配置,但需要选中此框!在此屏幕上需要填写的另一个项目是“DNSBL 虚拟 IP”。

该 IP 需要位于专用网络范围内,并且不是使用 pfSense 的网络上的有效 IP。例如,192.168.0.0/24 上的 LAN 网络可以使用 10.0.0.1 IP,因为它是私有 IP,不属于 LAN 网络。

该 IP 将用于收集统计数据以及监视被 pfBlockerNG 拒绝的域。

向下滚动页面,还有一些值得一提的设置。第一个是“DNSBL 监听接口”。对于此设置以及大多数设置,此设置应设置为“LAN”。

另一个设置是“DNSBL IP 防火墙设置”下的“列表操作”。此设置确定当 DNSBL 源提供 IP 地址时应发生的情况。

pfBlockerNG 规则可以设置为执行任意数量的操作,但最有可能的是“拒绝两者”将是所需的选项。这将阻止与 DNSBL 源上的 IP/域的入站和出站连接。

选择项目后,滚动到页面底部并单击“保存”按钮。页面重新加载后,就可以配置应使用的 DNS 阻止列表了。

pfBlockerNG 为管理员提供了两个选项,可以根据管理员的偏好单独或一起配置。这两个选项是来自其他网页或 EasyLists 的手动提要。

要了解有关不同 EasyList 的更多信息,请访问该项目的主页:https://easylist.to/

配置 pfBlockerNG EasyList

我们首先讨论并配置 EasyLists。大多数家庭用户会发现这些列表足够了,而且管理负担也最少。

pfBlockerNG 中提供的两个 EasyList 是“EasyList w/o Element Hiding”和“EasyPrivacy”。要使用这些列表之一,请首先单击页面顶部的“DNSBL EasyList”。

页面重新加载后,EasyList 配置部分将可用。需要配置以下设置:

  • DNS 组名称 – 用户选择,但没有特殊字符
  • 描述 – 用户选择,允许使用特殊字符
  • EasyList Feeds State – 是否使用配置的列表
  • EasyList Feed – 可以添加要使用的列表(EasyList 或 EasyPrivacy)
  • 标题/标签 – 用户选择,但没有特殊字符

下一部分用于确定列表的哪些部分将被阻止。同样,这些都是用户偏好,如果需要,可以选择多个。 “DNSBL – EasyList 设置”中的重要设置如下:

  • 类别 – 用户偏好和多个可以选择
  • 列出操作 – 需要设置为“未绑定”才能检查 DNS 请求
  • 更新频率 – pfSense 更新不良网站列表的频率

根据用户的首选项配置 EasyList 设置后,请务必滚动到页面底部并单击“保存”按钮。页面重新加载后,滚动到页面顶部并单击“更新”选项卡。

进入更新选项卡后,选中“重新加载”单选按钮,然后选中“全部”单选按钮。这将通过一系列网络下载来获取之前在 EasyList 配置页面上选择的阻止列表。

这必须手动完成,否则在计划的 cron 任务之前不会下载列表。每当进行更改(添加或删除列表)时,请务必运行此步骤。

观察下面的日志窗口是否有任何错误。如果一切按计划进行,防火墙 LAN 端的客户端计算机应该能够向 pfSense 防火墙查询已知的不良站点并收到不良 IP 地址作为回报。同样,客户端计算机必须设置为使用 pfsense 框作为其 DNS 解析器!

请注意,在上面的 nslookup 中,url 返回之前在 pfBlockerNG 配置中配置的错误 IP。这是期望的结果。这将导致对 URL“100pour.com”的任何请求被定向到虚假 IP 地址 10.0.0.1。

为 pfSense 配置 DNSBL 源

AdBlock EasyLists 相比,pfBlockerNG 中还可以使用其他 DNS 黑名单。有数百个列表用于跟踪恶意软件命令和控制、间谍软件、广告软件、tor 节点以及各种其他有用的列表。

这些列表通常可以被拉入 pfBlockerNG 中,也可以用作进一步的 DNS 黑名单。有很多资源提供了有用的列表:

  • https://forum.pfsense.org/index.php?topic=114499.0
  • https://forum.pfsense.org/index.php?topic=102470.0
  • https://forum.pfsense.org/index.php?topic=86212.0

上面的链接提供了 pfSense 论坛上的主题,其中成员发布了他们使用的大量列表。作者最喜欢的一些列表包括:

  • http://adaway.org/hosts.txt
  • http://www.malwaredomainlist.com/hostslist/hosts.txt
  • http://pgl.yoyo.org/adservers/serverlist.php?hostformat=hosts&mimetype=plaintext
  • https://zeustracker.abuse.ch/blocklist.php?download=domainblocklist
  • https://gist.githubusercontent.com/BBcan177/4a8bf37c131be4803cb2/raw

同样,还有大量其他列表,作者强烈鼓励人们寻找更多/其他列表。不过,让我们继续配置任务。

第一步是通过“防火墙->pfBlockerNG->再次进入pfBlockerNG的配置菜单'DSNBL'。

再次进入 DNSBL 配置页面后,单击“DNSBL Feeds”文本,然后在页面刷新后单击“添加”按钮。

添加按钮将允许管理员向 pfBlockerNG 软件添加更多不良 IP 地址或 DNS 名称列表(列表中已有的两项是作者测试所得)。添加按钮会将管理员带到可以将 DNSBL 列表添加到防火墙的页面。

此输出中的重要设置如下:

  • DNS 组名称 – 用户选择
  • 描述 – 有助于保持群组井井有条
  • DNSBL 设置 – 这些是实际列表
    • 状态 – 该来源是否被使用以及如何获取
    • 来源 – DNS 黑名单的链接/来源
    • 标题/标签 – 用户选择;没有特殊字符
  • 列表操作 – 设置为未绑定
  • 更新频率 – 列表应更新的频率

设置完这些设置后,单击页面底部的保存按钮。与对 pfBlockerNG 的任何更改一样,更改将在下一个计划的 cron 间隔生效,或者管理员可以通过导航到“更新”选项卡,单击“重新加载<”来手动强制重新加载。”单选按钮,然后单击“全部”单选按钮。选择这些后,单击“运行”按钮。

观察下面的日志窗口是否有任何错误。如果一切按计划进行,只需尝试从 LAN 端的客户端对 DNSBL 配置中使用的文本文件之一中列出的域之一进行 nslookup 即可测试列表是否正常工作。

从上面的输出中可以看出,pfSense 设备返回在 pfBlockerNG 中配置为黑名单域的错误 IP 的虚拟 IP 地址。

此时,管理员可以通过添加更多列表或创建自定义域/IP 列表来继续调整列表。 pfBlockerNG 将继续将这些受限域重定向到虚假 IP 地址。

感谢您阅读这篇有关 pfBlockerNG 的文章。请尽一切可能为这两种出色产品的持续开发做出贡献,以表达您对 pfSense 软件以及 pfBlockerNG 的赞赏或支持。一如既往,如有任何建议或问题,请在下面评论!