pfSense使用pfBlockerNG过滤广告和恶意网站

在我们访问网站时,运营商、各类搜索引擎等都可以收集我们的数据并通过庞大的互联网对我们进行跟踪,虽然可以通过安装浏览器扩展插件(uBlock Origin,uMatrix等)进行阻止,但需要在每个设备、每个浏览器上进行安装。如果我们有pfSense防火墙,那我们可以在防火墙上安装pfBlockerNG来搭建Web过滤器,保证内网的所有设备都可以过滤广告并阻止恶意网站,确保网络安全。

安装pfBlockerNG

首先,登录pfSense,导航到“系统>插件管理,可用插件”选项卡。找到pfBlockerNG-devel插件。

带pfblockerng的pfsense Web过滤器

点击右侧的“安装”按钮,等待下载pfBlockerNG并安装。

pfblockerng安装完成

pfBlockerNG初始设置

转到防火墙→pfBlockerNG

带pfblockerng的pfsense webfilter

配置向导会引导我们进行设置。点击“下一步”继续。

带pfblockerng的pfsense webfilter

该页面解释了现在正在设置的内容:

  • 为初学者进行标准设置。
  • 如果以前安装过pfBlockerNG,则所有设置将被删除。
  • 安装两个组件:
    • IP:在WAN接口添加防火墙规则阻止已知最差的攻击者。
    • DNSBL:阻止广告和其他已知的恶意域。

点击“下一步”。

带pfblockerng的pfsense webfilter

这里必须选择入站接口(WAN)和出站接口(LAN)。如果有多个内部接口,则可以选择要为其设置pfBlockerNG的所有接口。

pfBlockerNG接口

接下来定义一个VIP地址。pfBlockerNG的Web服务器在该地址上运行,这个地址不能是我们所使用网络的IP!例如,如果LAN网络是192.168.1.1/24,则VIP地址不能在此范围内。在本例中,将地址保留为10.10.10.1,端口保留为默认值。

pfBlockerNG VIP地址

设置完成,单击“完成”,结束初始设置。

pfBlockerNG设置结束

打开pfBlockerNG更新页面,下载并激活所有阻止列表,基于pfblockerNG的Web过滤器已经在pfSense防火墙上运行。

配置pfBlockerNG

在配置之前,为了使更改的设置及时生效(无论是DNSBL还是IP),必须先运行Update→Reload→All→Rungo下载并激活(更改的)列表。
pfblockerng更新

IP

在“ IP”选项卡,建议进行下设置:

  • 浮动规则→启用。如果只有一个内部接口,可以禁用它。如果多个接口,则有必要激活,以方便配置防火墙规则。
  • 杀死状态→启用。当pfBlockerNG更新阻止列表时,将重置与列表中IP的所有活动连接。

带pfblockerng的pfsense webfilter

GeoIP封锁

如果要阻止来自世界某些地区的访问,必须先在MaxMind创建一个免费帐户,随即会收到一个许可证密钥,然后在“IP→MaxMind GeoIP Configuration”输入密钥。之后在“Update → Reload → IP”下载GeoIP数据库

pfblocker geoip

现在,可以在IP→GeoIP下选择所需的大洲或顶级垃圾邮件发送者。先单击右侧的小铅笔,然后在列表中选择所有条目。在底部,选择“Deny Both全部拒绝”(列表操作)。

pfblockerng顶级垃圾邮件发送者

“拒绝入站”和“拒绝出站”(Deny Inbound” 、“Deny Outbound”)注意事项:“拒绝入站”表示所有进入的连接都被阻止IP。例如,内部运行的Web服务器想要阻止某些国家/地区,则可以使用“拒绝入站”来执行此操作。“拒绝出站”适用于所有出站连接,即无法从内部网络中的计算机连接到该IP。例如,如果“拒绝出站”阻止北美的所有IP,那么将无法再访问北美大陆托管的所有网站!

DNSBL /Feeds

pfBlockerNG阻止域和IP,因此,没有中间人攻击来过滤内容,它只是查看一长串列表,以查看是否允许使用域(也适用于HTTPS)。在Feed下,我们可以设置应积极使用的列表。提供IP阻止列表和DNSBL(DNS或域的阻止列表)。

所有激活的Feed在行尾都有一个勾号。如果要添加尚未激活的Feed,只需单击“ +”:

pfblockerng添加供稿

会打开一个页面,这里可以输入有关Feed的详细参数:

  • 状态:ON
  • 动作:Unbound
  • 更新频率:Once a day(每天一次)

pfblockerng Feed详细信息

如果想添加不在列表中的Feed,例如来自Steven Black的单个Feed,可以转到DNSBL→DNSBL Groups,然后单击底部的“添加”:

pfblockerng添加供稿

这里可以给DNSBL组命名,并将DNSBL源定义添加到Feed中。

  • 名称: StevenBlack
  • 状态: ON
  • 源: https://raw.githubusercontent.com/StevenBlack/hosts/master/alternates/gambling/hosts
  • 标头/标签: Gambling
  • 动作: Unbound
  • 更新频率: Once a day

单击“保存”,完成Feed的添加。

pfblockerng自定义Feed

白名单

如果希望不阻止某个域,则可以将它添加到DNSBL→DNSBL Whitelist的白名单中。如果在域名前面加上一个点(“.”),则所有子域都将列入白名单,否则只会阻止输入的(子)域。

pfblockerng DNSBL白名单

安全搜索

DNSBL→DNSBL安全搜索中,可以给最受欢迎的搜索引擎设置安全搜索。也可以通过Firefox阻止HTTPS上的DNS,并为YouTube设置限制。

pfblockerng DNSBL安全搜索

强制将pfSense作为DNS服务器

为了确保pfBlockerNG过滤内部网络中的所有请求,必须防止网络中的设备使用与pfSense不同的DNS服务器,必须在防火墙的LAN接口上添加如下两条防火墙规则,具体可以参考阻止外部客户端DNS查询

导航到”防火墙>规则,LAN”选项卡,单击 添加,在列表顶部创建一个新规则,填写以下字段:

  • 动作:拒绝
  • 接口:LAN
  • 通讯协定:TCP / UDP
  • 目的地:any
  • 目标端口范围:DNS(53)
  • 说明:Block DNS to Everything Else

在阻止规则上方,创建通过规则来允许DNS进入防火墙,单击 添加,在列表顶部创建一个新规则,填写以下字段:

  • 动作:通过
  • 接口:局域网
  • 通讯协定:TCP / UDP
  • 目的地:局域网地址
  • 目标端口范围:DNS(53)
  • 说明:Pass DNS to the Firewall

单击“应用更改”,重新加载规则集

完成后,将有两个规则条目,如下图所示:

pfsense DNS规则

测试

打开一个在DNS阻止列表中的网址,如果一切设置正常,将会看到以下提示:

带pfblockerng的pfsens Web过滤器

原文地址