本教程使用pfBlockerNG的DNSBL部分拦截广告,更重要的是,它能阻止恶意广告。它基本上创建了一个类似于pi-Hole的功能,但是不需要单独的硬件。我们只需要使用pfSense的插件pfBlockerNG的部分功能就可以!

pfBlockerNG是由@ BBcan177维护的pfSense插件 。值得一提的是,BBCan177有一个Patreon活动  ,你可以轻松捐出几块钱,以确保他继续维护并添加新的功能到这个插件中去。

为何删除广告?

广告很棒,因为它支付内容创作者的工作。毕竟,即使这个网站使用Google广告,尽管非常轻微。那么,我为什么要阻止广告?因为有些已知广告带有恶意病毒或不适宜浏览的内宾,但是我们又无法正确区分这两者。所以,为了提高安全性,有必要在防火墙对广告进行拦截。

安装/配置

进入系统 - >插件管理并搜索pfBlockerNG,并点击右侧的安装图标进行安装。安装完成后,进入防火墙 - > pfBlockerNG菜单。在General Settings页面上点击“Enable pfBlockerNG”。在下面的图例中,还设置了其他项目,这些项目与阻止列表/ IPv4配置有关,但目前不需要这些项目。设置完成后不要忘记点击“SAVE”。

在pfSense上使用pfBlockerNG(DNSBL)拦截广告_pfsense pfBlockerNG

接下来,转到DNSBL选项卡。勾选Enable DNSBL如果你只有一个内部接口(如lan),那么你就不需要做其他任何事情。只需点击“save”并转到DNSBL Feeds。
注意:如果有多个内部接口,并且你想用DNSBL保护它们,那么您需要注意下面的'DNSBL Firewall rule'部分。首先,勾选'DNSBL Firewall rule'复选框(下方红色方块)。然后,按住'Ctrl'键并单击鼠标左键,选择各种接口(向右)。设置完成后,点击底部的"save"。

在pfSense上使用pfBlockerNG(DNSBL)拦截广告_pfsense pfBlockerNG _02

DNSBL Feeds

现在,转到“DNSBL Feeds”标签并点击“Add”。如下图所示,后面也提供了文本链接,你可以轻松地将其复制/粘贴到页面中。要添加更多,请点击下面红色框中的“Add”。设置完成后,点击底部的"save"。

在pfSense上使用pfBlockerNG(DNSBL)拦截广告_pfsense pfBlockerNG _03

SWC
http://someonewhocares.org/hosts/hosts
hpHosts
https://hosts-file.net/ad_servers.txt
Quidsup
https://raw.githubusercontent.com/quidsup/notrack/master/trackers.txt
Adaway 
https://adaway.org/hosts.txt
Cameleon
http://sysctl.org/cameleon/hosts

点击“save”后,将被带回到DNSBL Feeds列表中,如下图所示。

在pfSense上使用pfBlockerNG(DNSBL)拦截广告_pfsense pfBlockerNG _04

其他/恶意DNSBL源

下面是一些其他DNSBL源。你可以根据上面的填写说明进行添加,建议区分不同的组,以方便识别。

AbuseDOMBL
https://ransomwaretracker.abuse.ch/downloads/RW_DOMBL.txt

ISClow
https://isc.sans.edu/feeds/suspiciousdomains_Low.txt

Immortal
https://mirror1.malwaredomains.com/files/immortal_domains.txt

下面的Feed很大,但它们是非常好的Feed。如果你的内存有限,那么这些可能不适合你。如有疑问,请慢慢添加Feed并留意内存,CPU等占用。 

BBCDGAAgr
https://osint.bambenekconsulting.com/feeds/dga-feed.gz

hpHostsFSA
https://hosts-file.net/fsa.txt

网站静静地自动填写并提取电子邮件地址和其他信息以进行跟踪。

Princeton
https://gist.githubusercontent.com/BBcan177/b6df57cef74e28d90acf1eec93d62d3b/raw/f0996cf5248657ada2adb396f3636be8716b99eb/MS-4

一个旨在防止浏览器挖掘的列表。

CoinlistBrowser
https://raw.githubusercontent.com/ZeroDot1/CoinBlockerLists/master/hosts_browser

这些列表(与上面的两个结合)是pi洞项目默认使用的。

StevenBlack
https://raw.githubusercontent.com/StevenBlack/hosts/master/hosts

MalwareDomains
https://mirror1.malwaredomains.com/files/justdomains

Zeustracker
https://zeustracker.abuse.ch/blocklist.php?download=domainblocklist

DisconnectTracking
https://s3.amazonaws.com/lists.disconnect.me/simple_tracking.txt

DisconnectAds
https://s3.amazonaws.com/lists.disconnect.me/simple_ad.txt

DNSBL Easylist

接下来,转到DNSBL Easylist选项卡。这些额外的Feeds更容易添加。如下图所示,添加完成以后,点击底部的“save”。注意:如果要选择所有EASYLIST类别,只要按住“Ctrl”键的同时左键单击每个类别。需要说明的是,它们是EASYLIST中与隐私相关的选项在我这里几乎无法使用,会选成一些网站无法访问(如亚马逊),你应该根据不同的应用场景谨慎选择

在pfSense上使用pfBlockerNG(DNSBL)拦截广告_pfsense pfBlockerNG _05

现在,转到pfBlockerNG的Update选项卡。注意第一个红色框中的警告,并确保在cron作业自动运行时,不会运行更新。如果倒数计时器少于3分钟,推荐使用它,而是等待系统自动运行它。否则,请继续并点击“Run”按钮。在下面的灰色窗口中可以看到更新进度,包括每个列表下载的域的数量。另外请注意,pfBlockerNG足够智能,可检查并消除列表之间的重复DNS(#Dups)条目。

在pfSense上使用pfBlockerNG(DNSBL)拦截广告_pfsense pfBlockerNG _06

[ SWC ] Downloading update .. 200 OK.
 Whitelist: localhost.localdomain|
 ----------------------------------------------------------------------
 Orig. Unique # Dups # White # Alexa Final 
 ----------------------------------------------------------------------
 13170 13165 310 1 0 12854 
 ----------------------------------------------------------------------

[ hpHosts ] Downloading update [ 01/04/18 15:58:40 ] .. 200 OK.
 ----------------------------------------------------------------------
 Orig. Unique # Dups # White # Alexa Final 
 ----------------------------------------------------------------------
 47811 47808 3658 0 0 44150 
 ----------------------------------------------------------------------

[ Quidsup ] Downloading update [ 01/04/18 15:58:44 ] .. 200 OK
 Remote timestamp missing .
 ----------------------------------------------------------------------
 Orig. Unique # Dups # White # Alexa Final 
 ----------------------------------------------------------------------
 12570 12570 714 0 0 11856 
 ----------------------------------------------------------------------

[ Adaway ] Downloading update [ 01/04/18 15:58:45 ] .. 200 OK.
 ----------------------------------------------------------------------
 Orig. Unique # Dups # White # Alexa Final 
 ----------------------------------------------------------------------
 409 409 280 0 0 129 
 ----------------------------------------------------------------------

===[ DNSBL Domain/IP Counts ] ===================================
78530 total
 44150 /var/db/pfblockerng/dnsbl/hpHosts.txt
 12854 /var/db/pfblockerng/dnsbl/SWC.txt
 11856 /var/db/pfblockerng/dnsbl/Quidsup.txt
 9541 /var/db/pfblockerng/dnsbl/Easy.txt
 129 /var/db/pfblockerng/dnsbl/Adaway.txt
===============================================================

浏览测试

设置完成后会是什么样?在YouTube上,你会看到像下面显示的灰色框,被拦截的广告通常是这样的。

在pfSense上使用pfBlockerNG(DNSBL)拦截广告_pfsense pfBlockerNG _07

如果访问Yahoo.com,pfBlockerNG直接消除了你通常看到的广告(下面的红色框)。

在pfSense上使用pfBlockerNG(DNSBL)拦截广告_pfsense pfBlockerNG _08

它是如何工作的 - 从命令行进行测试

这只是你在浏览时看到最终结果,但是究竟发生了什么?你可能并不知道。我们可以通过命令行来看pfBlockerNG的DNSBL部分如何工作。通常情况下,你可以ping 302br.net并获取他们的实际IP地址。但是,使用pfBlockerNG在正确设置后,你将看到10.10.10.1的回复,这是DNSBL创建的默认虚拟IP地址。广告/恶意广告域名会被屏蔽掉,不会进行解析。

Integral Ad Science

# ping 302br.net
PING 302br.net (10.10.10.1) 56(84) bytes of data.
64 bytes from 10.10.10.1 (10.10.10.1): icmp_seq=1 ttl=64 time=0.684 ms

Yahoo – analytics.yahoo.com

# ping analytics.yahoo.com 
PING analytics.yahoo.com (10.10.10.1) 56(84) bytes of data.
64 bytes from 10.10.10.1 (10.10.10.1): icmp_seq=1 ttl=64 time=1.18 ms

故障排除/白名单

当一个网站被无意中阻止时怎么办?毕竟,它肯定会发生。你可以完全删除违规列表,也可以更优选地删除违规列表,只需将域列入白名单。最简单的方法是返回主DNSBL选项卡并单击“+”以显示输入的文本框。只需在单独的行中输入每个域,然后在完成后单击“save”。如果你希望更改早于此时间发生,请返回“update”标签并点击“Run行”。如果您不想独自进行反复试验,我在下面提供了一些白名单建议。

在pfSense上使用pfBlockerNG(DNSBL)拦截广告_pfsense pfBlockerNG _09

另外,如果一个域名已经被系统解析到10.10.10.1,那么你可能需要清除你的本地DNS缓存,或浏览器缓存,或两者。要清除电脑缓存,请在Windows的命令行中输入'ipconfig / flushdns'。多数情况下,只需重新启用网络接口即可使用。每个浏览器清除缓存的方式稍有不同,但是,如果按住“Shift” 同时单击刷新/重新加载按钮,则所有浏览器都将重新刷新页面显示的内容。

如果广告没有被阻止,并且上面的ping命令没有返回虚拟IP地址,那么本地计算机也可能没有将pfSense的地址用在DNS设置上。如果使用的是Windows,请检查您的网络设置并确保它已设置为您的pfSense IP地址如果没有将pfSense用作本地电脑的的DHCP服务器,则可能需要进行一些额外设置。

白名单建议

这些是我看到的几个域名,如果它们最终导致各种DNSBL出现问题,你可以轻松地将它们复制并粘贴到“custom list(自定义列表)”中。如果不使用(仅基于它们的名字),请随时从列表中忽略它们。

.amazon-adsystem.com
.adsafeprotected.com
control.kochava.com
device-metrics-us-2.amazon.com
secure-gl.imrworldwide.com
.githubusercontent.com
.github.com
.apple.com
.sourceforge.net

顶级域名黑名单

TLD(顶级域名)黑名单是DNSBL的另一个选项。虽然通常不会提倡静态黑名单,因为有经验的人会绕过它,但是TLD黑名单可以消除一些潜在的攻击途径,尽管它的用处完全取决于你自己使用情况。TLD是域名上最后一个点的后面的字符,例如com,net和biz是一些常见的字符。2017年初,顶级域名数量猛增,超过1500个!随着时间的推移,一些顶级域名(TLD)已成为诸如命令和控制服务器等恶意活动的领地。如果你没有计划与某个顶级域名(TLD)建立联系,并且其证明信誉低下,即大多数理智的公司不打算尝试使用该域名,则可以转至主DNSBL选项卡,并使用以下部分完全阻止。

在pfSense上使用pfBlockerNG(DNSBL)拦截广告_pfsense pfBlockerNG _10

如果你正在寻找更多关于“bad”的指导,请查看Spamhaus以及下面的网站链接。Spamhaus不断更新此列表和相关统计信息,因此请直接查看最新信息。在下面的链接中,你还可以找到一个下拉菜单,向你展示每个顶级域名(TLD)的“bad”,甚至超过前十名单。至少,我会建议在绿色框中添加顶级3顶级域名。添加整个前10名可能会导致出现问题,也许会有误报。例如,下面列表中的第8是.biz,它经常使用。我在图片下方添加了TLD列表的文本版本,可以轻松地将其复制/粘贴到防火墙中。

https://www.spamhaus.org/statistics/tlds/

在pfSense上使用pfBlockerNG(DNSBL)拦截广告_pfsense pfBlockerNG _11

party
click
link
technology
gdn
study
men
biz
reise
stream

原文地址