pfSense安装和配置pfBlockerNg

pfBlockerNG是一个可以安装在pfSense中的软件包,可以将防火墙的功能扩展到L2 / L3 / L4防火墙之上。由于攻击者和网络犯罪分子的能力不断提高,管理员必须不断提高防火墙的防御能力。

pfBlockerNG为pfSense提供了允许/拒绝决策的能力,例如IP地址的地理位置、域名或特定网站的Alexa评级等。限制域名的功能非常有用,它允许管理员阻止尝试连接到已知不良域名。

本教程将通过配置pfSense防火墙设备来使用pfBlockerNG软件包,以及添加/配置pfBlockerNG域名阻止列表的示例。

基本要求

本教程的基本配置环境如下:

  • 全新安装的pfSense防火墙。
  • 一个WAN和一个LAN接口。
  • LAN的IP范围:192.168.0.0/24。

实验图

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

pfSense Network Diagram

pfSense 网络拓扑

在pfsense中安装pfBlockerNG

第一步是连接到pfSense防火墙的Web界面。 这个实验室环境使用192.168.0.0/24网络,防火墙网关地址为192.168.0.1。在浏览器地址栏输入“https://192.168.0.1”,进入pfSense登录页面。

pfSense Login Window

pfSense 登陆窗口

登录pfSense页面后,点击‘System(系统)’菜单,进入‘Package Manager(软件包管理)’。

pfSense Package Manager

pfSense 软件包管理

单击‘Available Packages(可用软件包)’。

pfSense Available Packages

pfSense 可用软件包

找到‘pfBlockerNG软件包,单击边上的 ‘ ’ 进行安装。并单击“Confirm(确认)”开始安装。

Install pfBlockerNG for pfSense

安装fBlockerNG

一旦确认,pfSense将开始安装pfBlockerNG。 这里注意不要离开安装页面, 等待安装结束。

pfBlockerNG Installation

pfBlockerNG 安装

安装完成后,我们开始pfBlockerNG配置。pfBlockerNG配置后,DNS请求的网站将会由运行pfBlockerNG软件的pfSense防火墙进行筛分和拦截。 pfBlockerNG会将已知不良域名的更新列表映射到错误IP地址。

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

如果客户端请求pfBlockerNG阻止列表中的域名,那么pfBlockerNG将返回该域名的一个虚拟IP地址。

pfBlockerNG 配置

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

pfSense DNS Resolver

pfSense DNS 解析器

首先选中“Enable DNS resolver(启用DNS解析器)”的复选框。

Listening port(侦听端口),选53。

Network Interfaces(网络接口),一般是LAN接口和Localhost。

Outgoing Network Interfaces(出口网络接口) ,在此配置中选WAN。

pfSense Enable DNS Resolver

启用DNS解析器

选择完成后,请单击页面底部的“Save(保存)”,然后点击页面顶部出现的“Apply Changes(应用更改)”按钮。

下一步是pfBlockerNG配置的第一步。 导航到“Firewall(防火墙)”菜单下的pfBlockerNG,然后单击“pfBlockerNG”。

pfBlockerNG Configuration

配置pfBlockerNG

单击“DNSBL(DNS阻止列表)”选项卡,开始设置DNS阻止列表,然后再激活pfBlockerNG。Setup DNS Lists

设置DNS 列表

选中“Enable DNSBL(启用DNSBL)”复选框(以下以绿色突出显示)。

在“DNSBL Virtual IP(虚拟IP)”中输入虚拟的IP地址。这个地址不是正在使用的pfSense网络上的有效IP。该IP将用于收集统计信息以及监视被pfBlockerNG拒绝的域名。

Enable DNSBL for pfSense

启用NSBL

向下滚动页面,进行其他设置。

DNSBL Listening Interface(侦听接口),设置为“LAN”。

DNSBL IP Firewall Settings(防火墙设置)下的“List Action(列表动作)”, 这个设置决定当DNSBLfeed 提供IP地址时应该做什么。

pfBlockerNG规则可以设置为执行任意数量的操作,一般情况下选择“Deny Both(拒绝两者)”, 这将阻止与DNSBL feed IP /域的入站和出站连接。

Configure DNSBL for pfSense

配置NSBL

选择项目后,滚动到页面底部,然后单击“SAVE(保存)”按钮。

pfBlockerNG为管理员提供了单独或一起配置的两个选项。 这两个选项是来自其他网页或EasyLists的手动Feed。

要了解有关不同EasyLists(简单列表)的更多信息,请访问:https://easylist.to/

配置 pfBlockerNG EasyList(简单列表)

我们首先讨论并配置EasyLists,一般用户有这些列表就已经可以了,而且容易管理。

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

Configure DNSBL EasyList

配置 DNSBL EasyList

需要进行以下设置:

  • DNS Group Name(DNS组名) – 用户自定义,不能使用特殊字符。
  • Description(描述) – 输入一个描述说明,供管理员参考。
  • EasyList Feed – 选择添加哪个列表(EasyList或EasyPrivacy)
  • Header/Label – 用户自定义,不能使用特殊字符。

EasyList Configuration for pfSense

配置EasyList

下面的设置部分都是用户的个人偏好,可以根据需要选择多个。 “DNSBL – EasyList Settings”中比较重要的设置如下:

  • Categories(分类) – 用户选择的列表种类,可以多选。
  • List Action(列表动作) – 为了回应DNS请求,这里请设置为“Unbound”
  • Update Frequency (更新频率)– 列表更新的频率。

DNSBL EasyList Settings

DNSBL EasyList 设置

当EasyList设置完成,请单击页面底部的“Save(保存)”按钮, 页面将会重新加载后,然后再单击“Update(更新)”选项卡。

在更新选项卡上,选中“Reload(重新加载)”选项,然后选中“ALL(所有)”选项, 来下载EasyList配置页面上选择的阻止列表。

以上这些,必须手动完成,否则只能在设定的更新频率后自动下载列表。更改设置后(添加或删除列表)确保运行这个步骤。

Update EasyList Settings

更新asyList 设置

注意查看下面的日志窗口是否有错误, 如果一切顺利,防火墙的LAN端的客户端机器通过pfSense防火墙应该可以查询已知的不良站点,并收到不良IP地址的信息。 注意,客户端机器必须设置使用pfsense作为其解析器!

Check Nslookup for Errors

检查Nslookup的错误

请注意上面的nslookup,网址返回的结果是我们在pfBlockerNG配置的伪IP, 这是我们期望的结果。 这将导致对“100pour.com”网址的任何请求被指向虚拟IP地址10.0.0.1。

为pfSense配置DNSBL Feed

与AdBlock EasyLists相反,我们可以在pfBlockerNG中使用其他的DNS黑名单。 这些列表通常可以被拉入pfBlockerNG。 下面是这些可用资源的列表:

  • 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

 个人最喜爱的一些列表包括以下内容:

  • 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

下面我们来配置添加DNSBL Feed:

首先导航到‘Firewall’ -> ‘pfBlockerNG’ ->’DSNBL’。

在DNSBL配置页面上,点击“DNSBL Feeds”,然后单击“Add(添加)”按钮。

Configure DNSBL Feeds for pfSense

配置DNSBL Feeds

在这里允许向pfBlockerNG添加其他不良IP地址或DNS名称列表。

DNS BadList Configuration

配置DNS 不良列表

这里的一些重要设置如下:

  • DNS Group Name(DNS组名) – 用户自定义。
  • Description (描述)– 便于管理使用。
  • DNSBL Settings(DNS黑名单设置)
    • State(状态) – 运行状态。
    • Source(源) – DNS黑名单的链接/来源
    • Header/Label – 用户自定义,注意不能使用特殊字符。
  • List Action(列表动作) –  设置为“nbound”。
  • Update Frequency(更新频率) – 设置列表多久更新一次。

设置完以后,点击页面底部的保存按钮。 与pfBlockerNG的任何修改一样,此次修改也将在下一个更新频率到达时自动生效。也可以手动强制重新加载,方法是导航到“Update(更新)”选项卡,选中“Reload(重新加载)”选项,选中“All(全部)” 选项,点击“Run(运行)”按钮。

DNSBL Feeds Update Settings

DNSBL Feeds 更新设置

查看下面的日志窗口是否有任何错误, 如果一切顺利,可以从lan侧的客户端测试一个DNSBL配置中使用的一个域名进行nslookup,以测试列表是否正常工作。

Watch DNS Lookup

查看DNS查询结果

从上面的输出结果可以看出,pfSense正在将在pfBlockerNG中配置的虚拟IP地址作为黑名单域名的不良IP返回。

在日常的管理中,管理员可以通过添加更多列表或创建自定义域/ IP列表来继续调整列表。pfBlockerNG会将这些受限域名重定向到一个假的IP地址。

此条目发表在pfSense分类目录。将固定链接加入收藏夹。