在之前的文章中,讨论了安装一个功能强大的基于FreeBSD的防火墙解决方案,称为pfSense 。 pfSense,如前面的文章所提到的,是一个非常强大而灵活的防火墙解决方案,可以利用一台旧电脑,而这些旧电脑可能不会太多。
本文将讨论一个名为pfBlockerNG的pfsense的精彩附加包。
pfBlockerNG是一个可以安装在pfSense中的软件包,可以使防火墙管理员能够将防火墙的功能扩展到传统的有状态的L2 / L3 / L4防火墙之外。
随着攻击者和网络犯罪分子的能力不断提高,防御力也将随之而来,阻挠他们的努力。 与计算世界中的任何东西一样,没有一个解决方案可以修复所有产品。
pfBlockerNG为pfSense提供了防火墙做出允许/拒绝决策的项目的能力,例如IP地址的地理位置,资源的域名或特定网站的Alexa评级。
限制域名等项目的能力是非常有利的,因为它允许管理员阻止尝试连接到已知不良域的内部机器的尝试(换句话说,可能已知有恶意软件,非法内容或其他阴险的数据)。
本指南将通过配置pfSense防火墙设备来使用pfBlockerNG软件包以及可以添加/配置到pfBlockerNG工具的域块列表的一些基本示例。
要求
本文将作几个假设,并将构建关于pfSense的先前安装文章。 假设如下:
- pfSense已经安装,没有当前配置的规则(干净的slate)。
- 防火墙只有一个WAN和一个LAN端口(2个端口)。
- LAN侧使用的IP方案为192.168.0.0/24。
应该注意的是,pfBlockerNG可以在已经运行/配置的pfSense防火墙上进行配置 。 这里假设的原因只是为了理智的缘故,许多将完成的任务仍然可以在非干净的slate 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 SSL警告
成功点击“ 高级 ”,然后单击“ 添加例外... ”,确认安全例外。 然后将显示pfSense登录页面,并允许管理员登录到防火墙设备。
pfSense登录窗口
登录主pfSense页面后,点击“ 系统 ”下拉菜单,然后选择“ 包管理器 ”。
pfSense软件包管理器
单击此链接将更改为包管理器窗口。 加载的第一页将是所有当前安装的软件包,并将为空白(再次,本指南假定使用干净的pfSense安装)。 点击文本“ 可用包 ”以提供pfSense的可安装软件包的列表。
pfSense可用包
加载“ 可用包 ”页面后,在“ 搜索字词 ”框中键入“ pfblocker ”,然后单击“ 搜索 ”。 返回的第一个项目应该是pfBlockerNG。 找到pfBlockerNG描述右侧的“ 安装 ”按钮,然后单击'+'
安装软件包。
该页面将重新加载,并通过点击“ 确认 ”请求管理员确认安装。
为pfSense安装pfBlockerNG
一旦确认,pfSense将开始安装pfBlockerNG。 不要离开安装程序页面! 等待页面显示安装成功。
pfBlockerNG安装
一旦安装完成,pfBlockerNG配置就可以开始。 需要完成的第一个任务是对pfBlockerNG配置正确后会发生什么的一些解释。
一旦pfBlockerNG被配置,DNS请求的网站应该由运行pfBlockerNG软件的pfSense防火墙拦截。 然后,pfBlockerNG将具有映射到错误IP地址的已知不良域的更新列表。
pfSense防火墙需要拦截DNS请求,以便能够过滤坏域,并使用称为UnBound的本地DNS解析器。 这意味着LAN接口上的客户端需要使用pfSense防火墙作为DNS解析器。
如果客户端请求pfBlockerNG的块列表中的域,那么pfBlockerNG将返回域的一个错误的ip地址。 让我们开始这个过程!
pfBlockerNG pfSense的配置
第一步是在pfSense防火墙上启用UnBound DNS解析器。 为此,请点击“ 服务 ”下拉菜单,然后选择“ DNS解析器 ”。
pfSense DNS解析器
当页面重新加载时,DNS解析器常规设置将可配置。 此第一个需要配置的选项是“ 启用DNS解析器 ”复选框。
下一个设置是设置DNS监听端口(通常是端口53),设置DNS解析器应该监听的网络接口(在这种配置中,应该是LAN端口和Localhost),然后设置出口端口(应该在此配置中为WAN)。
pfSense启用DNS解析器
选择完成后,请务必点击页面底部的“ 保存 ”,然后点击页面顶部将出现的“ 应用更改 ”按钮。
下一步是pfBlockerNG的第一步配置。 导航到“ 防火墙 ”菜单下的pfBlockerNG配置页面,然后单击“ pfBlockerNG ”。
pfBlockerNG配置
一旦pfBlockerNG加载,请先点击“ DNSBL ”选项卡,开始设置DNS列表,然后再激活pfBlockerNG。
设置DNS列表
当加载“ 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拒绝的域。
为pfSense启用DNSBL
向下滚动页面,还有一些值得一提的设置。 第一个是“ DNSBL听力界面 ”。 对于此设置和大多数设置,此设置应设置为“ LAN ”。
另一个设置是“ DNSBL IP防火墙设置 ”下的“ 列表操作 ”。 此设置确定当DNSBL源提供IP地址时应该发生什么。
pfBlockerNG规则可以设置为执行任意数量的操作,但很可能“ 拒绝两者 ”将是所需的选项。 这样可以防止DNSBL提要上的IP /域的入站和出站连接。
为pfSense配置DNSBL
选择项目后,滚动到页面底部,然后单击“ 保存 ”按钮。 页面重新加载后,现在是配置应该使用的DNS阻止列表的时候了。
pfBlockerNG为管理员提供了可以根据管理员的首选项独立或一起配置的两个选项。 这两个选项是来自其他网页或EasyLists的手动Feed。
要了解有关不同EasyLists的更多信息,请访问项目主页: https : //easylist.to/
配置pfBlockerNG EasyList
我们首先讨论并配置EasyLists。 大多数家庭用户将会发现这些列表是足够的,而且管理上的负担最小。
pfBlockerNG中的两个EasyLists是“ EasyList w / o元素隐藏 ”和“ EasyPrivacy ”。 要使用这些列表之一,请先点击页面顶部的“ DNSBL EasyList ”。
配置DNSBL EasyList
页面重新加载后, EasyList配置部分将可用。 需要配置以下设置:
- DNS组名称 - 用户选择,但不包含特殊字符
- 说明 - 用户选择,允许特殊字符
- EasyList Feeds状态 - 是否使用已配置的列表
- EasyList Feed - 可以添加要使用的列表(EasyList或EasyPrivacy)
- 标题/标签 - 用户选择,但没有特殊字符
pfSense的EasyList配置
下一部分用于确定列表的哪些部分将被阻止。 再次,这些都是用户偏好,如果需要,可以选择多个。 “ DNSBL - EasyList设置 ”中的重要设置如下:
- 类别 - 可以选择用户偏好和倍数
- 列表操作 - 需要设置为“未绑定”以检查DNS请求
- 更新频率 - pfSense将更新不良网站列表的频率
DNSBL EasyList设置
当EasyList设置配置为用户的首选项时,请确保滚动到页面底部,然后单击“ 保存 ”按钮。 页面重新加载后,滚动到页面顶部,然后单击“ 更新 ”选项卡。
在更新选项卡上,检查“ 重新加载 ”的单选按钮,然后单击“ 全部 ”单选按钮。 这将通过一系列Web下载来获取在EasyList配置页面上选择的块列表。
这必须手动完成,否则直到预定的cron任务才会下载列表。 随时更改(添加或删除列表)确保运行此步骤。
更新EasyList设置
看下面的日志窗口有任何错误。 如果一切顺利,防火墙的LAN端的客户端机器应该可以查询pfSense防火墙了解已知的坏站点并收到不良的IP地址。 再次,客户端机器必须设置为使用pfsense框作为它们的DNS解析器!
检查Nslookup的错误
请注意上面的nslookup,url返回在pfBlockerNG配置中较早配置的伪IP。 这是期望的结果。 这将导致对“ 100pour.com ”的URL的任何请求被指向虚拟IP地址为10.0.0.1。
为pfSense配置DNSBL Feed
与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 ” - > “ DSNBL ”再次进入pfBlockerNG的配置菜单。
再次在DNSBL配置页面上,点击“ DNSBL Feeds ”文本,然后在页面刷新后单击“ 添加 ”按钮。
为pfSense配置DNSBL Feed
添加按钮将允许管理员向pfBlockerNG软件添加更多的不良IP地址或DNS名称列表(列表中的两个项目是作者的测试)。 添加按钮将管理员带到可以将DNSBL列表添加到防火墙的页面。
DNS BadList配置
此输出中的重要设置如下:
- DNS组名称 - 用户选择
- 说明 - 有助于保持组织的组织
- DNSBL设置 - 这些是实际列表
- 状态 - 是否使用该来源以及如何获取
- 源 - DNS黑名单的链接/源
- 标题/标签 - 用户选择; 没有特殊字符
- 列表操作 - 设置为取消绑定
- 更新频率 - 列表应该更新的频率
设置完这些设置后,点击页面底部的保存按钮。 与pfBlockerNG的任何更改一样,更改将在下一个计划的cron间隔生效,或者管理员可以手动强制重新加载,方法是导航到“ 更新 ”选项卡,单击“ 重新加载 ”单选按钮,然后单击“ 全部 ”单选按钮。 一旦选中,点击“ 运行 ”按钮。
DNSBL Feeds更新设置
看下面的日志窗口有任何错误。 如果一切都进行了规划,通过简单地尝试从lan侧的客户端到DNSBL配置中使用的一个文本文件中列出的域之一来尝试执行nslookup来测试列表的工作。
观看DNS查找
从上面的输出可以看出,pfSense设备正在将在pfBlockerNG中配置的虚拟IP地址作为黑名单域的不良IP。
此时,管理员可以通过添加更多列表或创建自定义域/ IP列表来继续调整列表。 pfBlockerNG将继续将这些受限域重定向到一个假的IP地址。
感谢您阅读有关pfBlockerNG的文章。 请您对pfSense软件以及pfBlockerNG表示感谢或支持,无论如何可以继续发展这两款精彩产品。 一如以往任何建议或疑问请在以下评论!