本教程使用pfBlockerNG的DNSBL部分来删除广告,特别是那些恶意广告。它本质上创建了一个类似于pi-Hole项目的功能,但是它不需要单独的硬件,我们只需在pfSense上添加+pfBlockerNG插件就可以。

注意,本教程适用于pfBlockerNG的最新开发版本。pfBlockerNG-devel插件在可用插件的列表之中,虽然开发版本,但在生产中使用没有任何问题。

为何删除广告

网站投放广告很常见,因为它为内容创作者的工作付费。那么我为什么要阻止广告呢?因为广告占用了我们的网络带宽,影响我们的浏览效果,恶意的广告甚至会带来病毒及***等威胁。

安装

转到系统 - >插件管理 - >可用插件,然后在搜索输入“pfblocker”,然后单击“搜索”。确保版本末尾有'-devel'字样,然后单击右侧的'install'。pfSense将开始安装pfblocker的开发版本。

在pfSense上使用pfBlockerNG(DNSBL)来阻止广告_第1张图片

安装完成后,我们从主页面启用它(防火墙 > pfBlockerNG)。在此页面上,单击pfBlockerNG旁边的“启用”,然后单击“Keep Settings(保留设置)”旁边的“启用”。不要忘记点击底部的“保存”。

在pfSense上使用pfBlockerNG(DNSBL)来阻止广告_第2张图片

配置DNSBL

接下来,转到DNSBL选项卡。勾选DNSBL旁边的“启用”(见下图)。如果你只有一个内部接口,如LAN,那么你不需要做任何其他事情。如果你有多个内部接口并且想要使用DNSBL保护它们,那么需要注意下面的“Permit Firewall Rules(允许防火墙规则)”部分。首先,勾选“启用”框(下方红色方框)。然后,按住“Ctrl”键并单击鼠标左键,选择其他接口(右侧)。不要忘记点击“Save DNSBL settings(保存DNSBL设置)”并转到DNSBL提供部分。

如果你的pfSense内存足够大,另一个值得考虑的功能是TLD(在下图中的DNSBL选项之下)。此选项是教程后面讨论的TLD黑名单所必需的。TLD功能提供什么?通常,DNSBL(以及其他DNS黑洞软件)会阻止Feed中指定的域。TLD的不同之处在于它将阻止除域的所有子域之外指定的域。因此,坏人无法通过创建随机子域名来规避黑名单,例如abcd1234.linuxincluded.com(如果linuxincluded.com在DNSBL feed中)。这非常强大,这是为数不多的DNS***软件之一。你可以点击TLD旁边的蓝色“i”图标,了解内存要求。如果你的pfSense上的内存少于2GB,则不要选中它。

在pfSense上使用pfBlockerNG(DNSBL)来阻止广告_第3张图片

配置DNSBL订阅源

转到顶部的“Feed”(不是DNSBL Feeds)。在这里,您将看到IPv4,IPv6和DNSBL类别的所有预配置订阅源。

向下滚动到“DNSBL类别”标题。单击ADs标题旁边的“+”(下面的红色框),添加与该类别相关的所有Feed。注意:如果你改为单击每行(紫色框)最右侧的“+”,你将只需添加该单个Feed。

在pfSense上使用pfBlockerNG(DNSBL)来阻止广告_第4张图片

如果你点击广告类别旁边的“+”,您将进入DNSBL Feed页面,其中预先填充了该类别下的所有Feed。列表中的所有订阅源最初都处于“关闭”状态。你可以单独浏览并启用每个,也可以单击列表底部的“全部启用”(下面的第一个红框)。接下来,确保将“Action动作”从“Disabled禁用”切换为“ Unbound未绑定”(下面的第二个红色框)。点击页面底部的“保存DNSBL设置”,你应该会在“已保存[Type:DNSBL, Name:ADs]配置”的行顶部收到一条消息。

在pfSense上使用pfBlockerNG(DNSBL)来阻止广告_第5张图片

点击“DNSBL Feed”标签,将进入DNSBL Feed摘要。假设一切按计划进行,你的Feed摘要应与下面的摘要类似。

在pfSense上使用pfBlockerNG(DNSBL)来阻止广告_第6张图片

返回顶部的“Feed”标签,然后再次向下滚动到“DNSBL类别”部分。我们将添加另一个类别(在进行一些更改之后),但让我们解释一下你在这里看到的所有内容,因为有很多事情要发生。查看下面的图像,你会看到ADs类别旁边的第一个左侧橙色框顶部复选标记表示您拥有该组的DNSBL类别别名。这是我们刚刚添加的类别。在右侧,你会看到较大的橙色框。每行/ Feed旁边的复选标记表示所有这些Feed在DNSBL ADs类别中都处于活动状态。当我们添加下一个类别时,这一区别非常重要,因为我们不需要为特定类别启用每个Feed。

在添加“Malicious恶意”类别之前,还有一些值得一提的其他项目。某些feeds 具有可选选项,例如紫色框中的SANS Internet Storm Center feeds 。我个人建议将feed从ISC_SDH(高)切换到ISC_SDL(低),因为high feed低于20个条目,low feed包括high feed。另外,在使用扩展(低)列表时,我没有看到很多误报。另外,请注意下面以红色突出显示的Pulsedive Feed旁边的“info”图形。如果您将鼠标悬停在“i”上,您会看到它表明这是订阅Feed,这意味着您需要为此付费。订阅源可以具有较低的误报率并且更新更频繁。

切换到ISC_SDL后,单击Malicious恶意类别旁边的左侧加号(下面的红色箭头)。我们将在下一个页面中开始删除Feed。

在pfSense上使用pfBlockerNG(DNSBL)来阻止广告_第7张图片

这一次,我们将采用预先配置好所有Feed的DNSBL Feed。当我们添加AD列表时,请继续并单击“Enable All(全部启用)”,然后将“Action(操作)”更改为“Unbound(未绑定)”。不要包含Pulsedive Feed和Malekal Feed,因为经历了几次误报。你的版本可能会有所不同,很可能已经纠正了之前遇到的一些问题。禁用这两个Feed后,我们可以再次点击页面底部的“保存DNSBL设置”。你应该在顶部收到一条消息,说明“Saved [Type:DNSBL, Name:Malicious]配置”。

在pfSense上使用pfBlockerNG(DNSBL)来阻止广告_第8张图片

点击“DNSBL Feed”标签,将返回DNSBL Feed摘要。假设一切按计划进行,我们应该在摘要列表中看到AD和Malicious (恶意)条目。

在pfSense上使用pfBlockerNG(DNSBL)来阻止广告_第9张图片

添加其他Feed非常简单,您可以根据需要添加任意数量的Feed,但请记住,过多的Feed可能会降低防火墙的速度。添加这两个类别对于配置一般的防火墙来说就足够了!这是因为pfBlockerNG会定期下载feeds并进行更新。  如果是使用资源有限的系统(主要是RAM),则需要注意。如有疑问,请慢慢添加Feed,并密切注意内存、CPU的使用率。

除了AD和恶意类别之外,这里有一些其他的DNSBL类别已经进行了广泛的测试,包括:

  • hpHosts(所有这些) - 来自MalwareBytes

  • BBcan177 - 来自pfBlockerNG的创建者

  • BBC(BBC_DGA_Agr) - 来自Bambenek Consulting < - 这个feed非常大

  • Cryptojackers(所有这些) - 它阻止了加密劫持软件和浏览器内的矿工,但它也阻止了各种硬币交换。

配置DNSBL EasyList

接下来,转到DNSBL EasyList选项卡。通过在名称和说明字段中输入EasyList,将EasyList更改为“ON”,然后选择右侧的4个列表,页面如下所示。注意:如果要选择所有EASYLIST类别,你需要在左键单击每个类别的同时按住“Ctrl”键。 你还需要将“Action(操作)”更改为“Unbound(未绑定)”,并将“Update Freqency(更新频率)”更改为每4小时一次。完成这些修改后,单击底部的“保存DNSBL EasyList设置”。值得一提的是,它们是EasyPrivacy部分中与隐私相关的选择。我发现这些几乎无法使用,因为它们影响我使用亚马逊,但也许现在你使用版本可能会有所不同,可能已经修复了这个问题。在pfSense上使用pfBlockerNG(DNSBL)来阻止广告_第10张图片

强制DNSBL Feed更新

接下来,转到pfBlockerNG中的Update选项卡。注意第一个红色框中的警告,并确保在cron作业自动运行的时间附近不会运行更新。如果倒数计时器少于3分钟,不建议运行它,而是等待系统自动运行它。假设剩余时间较多,请继续并单击“Run(运行)”按钮。你将在下面的灰色窗口中看到进度更新,包括每个列表下载的域名数量,上次更新列表时间等。另外请注意一点,pfBlockerNG现在已经足够智能,可以检查并消除重复的DNS(#Dups)条目。

在pfSense上使用pfBlockerNG(DNSBL)来阻止广告_第11张图片

[ Spam404 ] Reload [ 05/29/18 16:20:07 ] . completed ..
----------------------------------------------------------------------
Orig. Unique # Dups # White # TOP1M Final 
----------------------------------------------------------------------
7066 7064 62 0 0 7002 
----------------------------------------------------------------------

[ SFS_Toxic_BD ] Reload [ 05/29/18 16:20:08 ] . completed ..
----------------------------------------------------------------------
Orig. Unique # Dups # White # TOP1M Final 
----------------------------------------------------------------------
14244 14242 6 0 0 14236 
----------------------------------------------------------------------

[ VXVault ] Reload [ 05/29/18 16:20:09 ] . completed ..
----------------------------------------------------------------------
Orig. Unique # Dups # White # TOP1M Final 
----------------------------------------------------------------------
85 62 58 0 0 4 
----------------------------------------------------------------------

Saving DNSBL database... completed

------------------------------------------------------------------------
Assembling DNSBL database... completed [ 05/29/18 16:20:14 ]
Reloading Unbound Resolver..... completed [ 05/29/18 16:20:17 ]
DNSBL update [ 158481 | PASSED ]... completed [ 05/29/18 16:20:18 ]
------------------------------------------------------------------------

===[ GeoIP Process ]============================================


===[ IPv4 Process ]=================================================


===[ IPv6 Process ]=================================================


===[ Aliastables / Rules ]==========================================

No changes to Firewall rules, skipping Filter Reload
No Changes to Aliases, Skipping pfctl Update

===[ FINAL Processing ]=====================================

[ Original IP count ] [ 0 ]

===[ DNSBL Domain/IP Counts ] ===================================

158481 total
43442 /var/db/pfblockerng/dnsbl/hpHosts_ATS.txt
20749 /var/db/pfblockerng/dnsbl/MDS.txt
14641 /var/db/pfblockerng/dnsbl/EasyList.txt
14597 /var/db/pfblockerng/dnsbl/Cameleon.txt
14236 /var/db/pfblockerng/dnsbl/SFS_Toxic_BD.txt
9660 /var/db/pfblockerng/dnsbl/SWC.txt
8466 /var/db/pfblockerng/dnsbl/CCT_BD.txt
7738 /var/db/pfblockerng/dnsbl/Abuse_URLBL.txt
7002 /var/db/pfblockerng/dnsbl/Spam404.txt
4529 /var/db/pfblockerng/dnsbl/Abuse_urlhaus.txt
2592 /var/db/pfblockerng/dnsbl/MDS_Immortal.txt
2255 /var/db/pfblockerng/dnsbl/D_Me_ADs.txt
1899 /var/db/pfblockerng/dnsbl/Abuse_DOMBL.txt
1470 /var/db/pfblockerng/dnsbl/ISC_SDL.txt
1081 /var/db/pfblockerng/dnsbl/MDL.txt
1071 /var/db/pfblockerng/dnsbl/D_Me_Malv.txt
930 /var/db/pfblockerng/dnsbl/MVPS.txt
611 /var/db/pfblockerng/dnsbl/BBC_DC2.txt
495 /var/db/pfblockerng/dnsbl/SBL_ADs.txt
402 /var/db/pfblockerng/dnsbl/Adaway.txt
312 /var/db/pfblockerng/dnsbl/Yoyo.txt
140 /var/db/pfblockerng/dnsbl/Ponmocup.txt
45 /var/db/pfblockerng/dnsbl/Botvrij_Dom.txt
42 /var/db/pfblockerng/dnsbl/Abuse_Zeus_BD.txt
28 /var/db/pfblockerng/dnsbl/D_Me_Tracking.txt
23 /var/db/pfblockerng/dnsbl/Malc0de.txt
21 /var/db/pfblockerng/dnsbl/H3X_1M.txt
4 /var/db/pfblockerng/dnsbl/VXVault.txt
0 /var/db/pfblockerng/dnsbl/D_Me_Malw.txt

====================[ DNSBL Last Updated List Summary ]==============

Jul 31 2015 D_Me_Tracking
Mar 9 2016 D_Me_ADs
Jan 20 18:32 Adaway

通过浏览器进行测试

现在我们在电脑端进行测试,在YouTube等许多网站上,您会看到广告通常会出现的灰色框。像uBlock Origin这样的浏览器插件通过完全删除灰盒来进一步清理它,它还提供了一些辅助保护。如果你访问Yahoo.com,pfBlockerNG消除了你通常看到的广告的荒地(下面的红框)。许多网站看起来与此类似,广告通常会显示广阔的空白区域,也有些网站上的广告与新闻混杂在一块,这都是为了提高点击率的需要!

在pfSense上使用pfBlockerNG(DNSBL)来阻止广告_第12张图片

工作原理 - 从命令行进行测试

我们也可以通过命令行很容易地看到pfBlockerNG的DNSBL部分如何工作。通常,你会ping 302br.net并获取他们的实际IP地址。但是,正确设置pfBlockerNG后,您将看到10.10.10.1的回复,这是DNSBL创建的默认虚拟IP地址。随意对添加的任何一个列表中的任何域名进行测试。如果你按照上面针对广告和恶意网站的所有示例/建议进行操作,那么你可能会拥有一个DNSBL列表,该列表可以达到数十万甚至数百万。

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

统计和图表

新版本的pfBlockerNG内置了一些非常实用的图表,如下所示。你可以看到顶部被阻止的域名,大多数阻止的源IP,阻止的用户代理字符串,TLD等等。同样非常有用的是你需要减少你正在使用的feeds 数量,即这个Feed占你阻止内容的50%,这是其他两个Feed组合的三分之一。只需转到防火墙 - > pfBlockerNG - > DNSBL Stats即可查看所有DNSBL图表/统计数据。

在pfSense上使用pfBlockerNG(DNSBL)来阻止广告_第13张图片

在pfSense上使用pfBlockerNG(DNSBL)来阻止广告_第14张图片

故障排除/白名单

当网站被无意阻止时会发生什么?毕竟,它必然会发生。你可以完全删除违规列表(DNSBL - > DNSBL Feed - >编辑有问题的列表)或者采用更简单的做法,将这个域名列入白名单。转到“Reports(报告)”选项卡并向下滚动到DNSBL部分。单击红色锁(在下面的橙色框中)将暂时解锁域名,以便你可以验证它是否确实是需要列入白名单。单击“+”(在下面的紫色框中)将域名添加到DNSBL白名单。

在pfSense上使用pfBlockerNG(DNSBL)来阻止广告_第15张图片

单击“+”后,你将收到有关是要执行通配符白名单还是仅执行白名单的提示。请阅读说明,一般通常使用白名单,因为它更精确。建议添加一个描述,以便知道为什么要修复它,即便今天它是完全合理的,但也可能在以后不再需要。

在pfSense上使用pfBlockerNG(DNSBL)来阻止广告_第16张图片

如果返回主DNSBL选项卡并将DNSBL白名单部分展开到底部,现在应该看到列入白名单的域名。你可能还注意到,如果列入白名单的域名具有CNAME记录,则pfBlockerNG会自动添加这些记录,如下所示。

在pfSense上使用pfBlockerNG(DNSBL)来阻止广告_第17张图片

正如你可能预期的那样,您也可以在单独的行中输入每个域名,然后在知道要列入白名单的域名时单击“保存”。如果你希望白名单添加/更改尽快发生,你还需要返回“Update(更新)”选项卡并单击“Run(运行)”。如果你不想自己进行试验,下面提供了一些白名单建议。

需要说明的是,如果系统已经解析了系统上的域名并且之前已解析为10.10.10.1,那么你可能需要清除本地DNS缓存、浏览器缓存或两者。要清除电脑的缓存,请从Windows上的命令行输入'ipconfig / flushdns'。你也可以在Linux系统上运行类似的命令,尽管命令可能因安装版本不同而异。每个浏览器都有不同的方式来清除缓存,但是,如果在单击刷新/重新加载按钮的同时按住“Shift”,它们都允许你重新进入网站。

如果广告未被阻止且上述ping命令未返回虚拟IP地址,则本地计算机也可能未使用pfSense进行DNS设置。如果您使用的是Windows,请检查网络设置并确保将其设置为pfSense 的LAN接口IP地址。在Linux / * nix上,检查/etc/resolv.conf或网络管理器(如果使用GUI)。如果在pfSense上没有开启DHCP,你还需要对本地网络进行手动设置。

有时候,一些防病毒软件和后台保护程序可能会破坏您的DNS设置。这些更改可能不一定反映在操作系统的DNS设置中。例如,Avast Premier具有安全DNS功能,该功能将强制你的浏览器使用Avast指定的DNS服务器以防止DNS劫持。如果你发现网络上的其他设备阻止了广告而某个特定设备没有阻止广告,那么您的反病毒或后台保护程序可能就是罪魁祸首。可以使用Wireshark进行数据包捕获,以确保本地主机正在查询指定的DNS服务器。

白名单推荐

如果这些域名最终出现在各种DNSBL上,那么访问这些域名可能会引起问题。我们可以将它们复制并粘贴到“custom list(自定义列表)”中。如果你没有计划使用其中的一部分,你可以从白名单中省略它们。

s3.amazonaws.com
s3-1.amazonaws.com#CNAME for(s3.amazonaws.com)
.github.com
.githubusercontent.com 
(raw.githubusercontent.com)的github.map.fastly.net#CNAME
.apple.com 
.sourceforge.net
.fls-na.amazon.com #alexa
.control.kochava.com #alexa 2
.device-metrics-us-2.amazon.com #alexa 3
.amazon-adsystem.com #amazon app ads
.px.moatads.com #amazon app 2
.wildcard.moatads.com.edgekey.net#CNAME for(px.moatads.com)
.e13136.g.akamaiedge.net#CNAME for(px.moatads.com)
.secure-gl.imrworldwide.com #amazon app 3
.pixel.adsafeprotected.com #amazon app 4
(any.adsafeprotected.com).anycast.pixel.adsafeprotected.com#CNAME
.bs.serving-sys.com #amazon app 5
.bs.eyeblaster.akadns.net#CNAME for(bs.serving-sys.com)
.bsla.eyeblaster.akadns.net#CNAME for(bs.serving-sys.com)
.adsafeprotected.com #amazon app 6
.anycast.static.adsafeprotected.com#CNAME for(static.adsafeprotected.com)
google.com
www.google.com
youtube.com
www.youtube.com
(youtube.com)的youtube-ui.l.google.com#CNAME
stackoverflow.com
www.stackoverflow.com
dropbox.com
www.dropbox.com
www.dropbox-dns.com#CNAME for(dropbox.com)
.adsafeprotected.com
control.kochava.com
secure-gl.imrworldwide.com
pbs.twimg.com #twitter图片
www.pbs.twimg.com #twitter图片
(cbs196.wac.edgecastcdn.net#CNAME for(pbs.twimg.com)
(cbs.twimg.com)的cs2-wac.apr-8315.edgecastdns.net#CNAME
(cbs.twimg.com)cs2-wac-us.8315.ecdns.net#CNAME
(pbs.twimg.com)的cs45.wac.edgecastcdn.net#CNAME

TLD黑名单

TLD(顶级域名)黑名单是DNSBL中的另一种选择。不要忘记你需要在DNSBL配置页面顶部“启用”TLD选项以使用在这里讨论的功能。 虽然通常不提倡静态黑名单,因为坏人只会四处移动,但是TLD黑名单是一个罕见的例子,你可以消除一些潜在的***媒介,尽管它的用处完全取决于你的情况。TLD是域名最后一个点之后的字符,例如com、net和biz这些常见的。顶级域名(TLD)现在数量激增,2017年初有超过1,500个!随着时间的推移,一些TLD已成为指挥和控制服务器等恶意活动的助手。如果你没有计划与特定的顶级域名(TLD)建立连接,并且它已经证明不具备信誉,即大多数理智的公司都不会尝试使用它,你可以直接进入主DNSBL标签并使用下面的部分直接阻止它。

在pfSense上使用pfBlockerNG(DNSBL)来阻止广告_第18张图片

甚至Brian Krebs也谈到了一些顶级域名(TLD)如何被广泛用于域名抢注 - 在.com中省略“o”可能是代价高昂的。如果您不想阅读完整的文章,只需知道如果不是正确的输入remax.com,而是输入remax.cm,则有可能被定向到恶意网站。一些主流网站都有这样被抢注的域名,可见.cm TLD并不友好。

关于顶级域名(TLD)的不良之处,Spamhaus提供了一个列表,并会不断更新此列表和相关统计信息。打开链接会有一个下拉列表,显示了排名前10的不良 TLD。建议添加绿色框中的前3个TLD和.cm TLD。添加整个前10的名单虽然可能不会导致太多问题,但可能会发生误报。如下面列表中的第8名是.biz,这是由合法企业使用的。我在图片下方添加了TLD列表的文本版本,以便你可以轻松地将其复制/粘贴到防火墙中。

在pfSense上使用pfBlockerNG(DNSBL)来阻止广告_第19张图片

cm
party
click
link
technology
gdn
study
men
biz
reise
stream

DNS阻止

DNS黑名单虽然很好,但是如果一个新的勒索软件僵尸网络弹出,用户在广告弹出前很早就被感染了,它会开始调用以前未知的不良域名。如果你的DNSBL源设置为每4小时更新一次,并且它们需要时间才能包含在该列表中,则可能需要一段时间才能捕获并阻止它。

浏览器端阻止 - Ublock Origin

虽然你的配置中包含地球上的每个恶意广告域名,但是从现在起的5分钟内不可避免地会弹出一个新的域名。除了其他一些防御措施之外,强烈建议在所有浏览器上使用uBlock Origin。uBlock Origin适用于Chrome、Firefox等。虽然没有什么是万无一失的,但它是你整体安全性的另一个完美的补充。

在pfSense上使用pfBlockerNG(DNSBL)来阻止广告_第20张图片

使用pfSense作为OpenV-P-N 客户端

如果你将pfSense用作OpenV-P-N服务器,而不是将其用作OpenV-P-N客户端,则此更改不适用于您。在这些少数情况下,用户将所有流量重定向到V-P-N服务,如专用Internet访问(PIA)或ExpressV-P-N。在此方案中,用户在配置上述解决方案后报告其DNS正在泄漏。

你可以通过多种方式处理此问题。一种可能的解决方案是使用DNS over TLS。另一种选择是转到系统服务 - > DNS解析器,并将出站网络接口切换到LAN而不是全部(如下所示)。

在pfSense上使用pfBlockerNG(DNSBL)来阻止广告_第21张图片

原文地址