我精疲力尽了。 我刚刚过去的两个小时追逐过去一年之后我曾经过的一只鹅。 这是目标,尽可能简洁。
步骤1:HOSTS文件:
127.0.0.5 NastyAdServer.com 127.0.0.5 xssServer.com 127.0.0.5 SQLInjector.com 127.0.0.5 PornAds.com 127.0.0.5 OtherBadSites.com …
第2步:Apache httpd.conf
<VirtualHost 127.0.0.5:80> ServerName BlackHole DocumentRoot "X:\Docs\…\BlackHole" RewriteEngine On RewriteRule (\.(gif|jpg|png|jpeg)$) /p.png [L] RewriteRule (.*) /ad.htm [L] </VirtualHost>
所以基本上会发生什么是HOSTS文件将指定的域redirect到本地主机,而是redirect到特定的环回IP地址。 Apache会监听这个地址上的任何请求,并提供一个透明的像素graphics,或者一个空的HTML文件。 因此,任何不良网站上的任何页面或graphics都将被replace为任何内容(换句话说就是广告/恶意软件/色情片/等等)。
这工作很好(现在已经有好几年了)。 问题是这些坏事不再局限于HTTPstream量。 例如:
<script src="http://NastyAdServer.com:99"> or <iframe src="https://PornAds.com/ad.html"> or a Trojan using ftp://spammaster.com/[email protected];[email protected];[email protected] or an app “phoning home” with private info in a crafted ICMP packet by pinging CardStealer.ru:99
处理HTTPS是一个相对较小的颠簸。 我可以像上面那样创build一个单独的VirtualHost,用443代替端口80,并添加SSL指令。 这使得其他港口得到处理。
我尝试使用*端口,但后来我得到重叠错误。 我尝试将所有请求redirect到HTTPS服务器,反之亦然, 要么SSL请求不会正确redirect,否则HTTP请求给了你说纯HTTP到一个启用了SSL的服务器端口…错误。 此外,我不知道如何testing其他端口是否被成功redirect(我可以尝试使用浏览器,但FTP,ICMP等呢?)
我意识到我可以使用端口拦截器(例如ProtoWall,PeerBlock等),但是有两个问题。 首先,我用这种方法阻止域名,而不是IP地址,所以要使用端口拦截器,我必须得到每个域名的IP,并频繁地更新主题。 其次,使用这种方法,我可以让Apache保留所有广告/恶意软件/垃圾邮件等的日志。 请求未来分析(我现在的BlackHole日志现在已经是466MB)。
我非常感谢成功设置Apache VirtualHost黑洞的帮助。 谢谢。
有趣的解决scheme..我喜欢它! 但是,您应该使用localhost以外的地址。
绑定另一个IP到网卡上(或使用第二个网卡),然后设置Apache来监听这个地址,不pipe你想要什么端口。 通配符(*)应该工作。 然后,该地址的唯一stream量由HOSTS文件“欺骗”来引导,并且该stream量不会干扰可能访问本地主机的其他(合法)服务。
另外,您可以select使用DNS而不是使用HOSTS文件。 这是恕我直言,一个更好的长期解决scheme。 最后,最简单的解决scheme是最有可能阻止您的防火墙到这些域的stream量。
更新 – 基于评论。 我build议你使用两个不同的IP地址,一个用于HTTP,一个用于HTTPS。 让每个人都监听所有端口,并将stream量引导至相应的端口。 然后,当您将阻止域添加到HOSTS文件时,根据触发添加条目的请求types将其设置为SSL / vanilla IP。
您可以通过将所有的ErrorDocument代码和wildcaard图像typesredirect到与下面相同的空白页面/图像来真正简化操作。 它试图首先匹配一个死锁,然后允许错误文件作为一个破解。 (你可以做所有的错误例程我想,但我认为这是一个螨较慢,作为一个错误例程?)在你的http.conf的末尾什么,并在一个单独的IP地址(使用Listen 192.168.1.9:80例如在我的设置中,它在192.168.1networking上,主服务器在.10上)
<VirtualHost 192.168.1.9:80> ServerName adware DocumentRoot /usr/local/httpsd/adware CustomLog /dev/null common ErrorLog /dev/null <Directory "/usr/local/httpsd/adware"> AllowOverride none Order allow,deny Allow from all </Directory> AliasMatch /*.php /usr/local/httpsd/adware/no.html AliasMatch /*.sql /usr/local/httpsd/adware/no.html AliasMatch /*.html /usr/local/httpsd/adware/no.html AliasMatch /*.htm /usr/local/httpsd/adware/no.html AliasMatch /*.gif /usr/local/httpsd/adware/no.gif AliasMatch /*.jpg /usr/local/httpsd/adware/no.jpg AliasMatch /*.png /usr/local/httpsd/adware/no.png ErrorDocument 400 /usr/local/httpsd/adware/no.html ErrorDocument 401 /usr/local/httpsd/adware/no.html ErrorDocument 403 /usr/local/httpsd/adware/no.html ErrorDocument 404 /usr/local/httpsd/adware/no.html ErrorDocument 405 /usr/local/httpsd/adware/no.html ErrorDocument 414 /usr/local/httpsd/adware/no.html ErrorDocument 500 /usr/local/httpsd/adware/no.html </VirtualHost>
– 为我们工作。 no.html文件是一个Figlet文本:
_______ __ | _ | .-- | | .-----。 | || _ || __ - | __ __ | ___ | ___ || _____ || _____ | __ | __ |
而图像都是1×1各自的空白图像,2的调色板。
我有主机文件绑定在我们的主DNS的转换的广告块网站列表,它捕获所有networking级别。 所以DHCP访问者,工作人员得到相同的礼貌保护。