Debian/Ubuntu Linux:为Squid 3.x安装SquidGuard Web过滤器插件以阻止不需要的站点
如何为Squid安装和配置SquidGuard Web筛选器插件,以基于访问控制列表限制对域/URL的访问?
如何在学校使用Debian或者Ubuntu Linux服务器下使用Squid代理服务器版本3.x阻止色情,赌博和其他网站?
squidGuard是用于squid代理服务器的灵活且超快速的筛选器,重定向器和访问控制器插件(它与squid 2.x和3.x版均可用)。
它使您可以为Squid缓存上的不同用户组定义具有不同限制的多个访问规则。
squidGuard使用Squid标准重定向程序接口。
步骤1:安装squidguard
打开一个终端,然后以root用户身份在服务器上执行以下命令:
# apt-get install squidguard
步骤2:安装黑名单
黑名单是每个URL过滤器的核心。
Squidgurd支持网上免费和商业分发黑名单,或者创建和使用您自己的黑名单(或者它们的任意组合)。
免费数据库列表:
- MESD黑名单(免费)。
- Shallas黑名单(非商业/私人用途免费)。
- 网址黑名单(商业)
使用wget命令从mustalist.de下载黑名单,如下所示:
# cd /tmp # wget -c http://www.shallalist.de/Downloads/shallalist.tar.gz
输出示例:
--2012-08-22 00:34:16-- http://www.shallalist.de/Downloads/shallalist.tar.gz Resolving www.shallalist.de... 78.47.242.85 Connecting to www.shallalist.de|78.47.242.85|:80... connected. HTTP request sent, awaiting response... 206 Partial Content Length: 9935263 (9.5M), 7448411 (7.1M) remaining [application/x-tar] Saving to: `shallalist.tar.gz' 100%[++++++++++++++===========================================- ] 99,35,263 475K/s in 16s 2012-08-22 00:34:33 (459 KB/s) - `shallalist.tar.gz' saved [9935263/9935263]
解开tar包,执行:
# tar -zxvf shallalist.tar.gz
输出示例:
BL/ BL/porn/ BL/porn/domains BL/porn/urls BL/gamble/ BL/gamble/domains BL/gamble/urls BL/chat/ BL/chat/domains BL/chat/urls BL/automobile/ .... .. BL/radiotv/domains BL/radiotv/urls BL/urlshortener/ BL/urlshortener/domains BL/urlshortener/urls BL/anonvpn/ BL/anonvpn/urls BL/anonvpn/domains
在此示例中,使用cp命令如下安装porn blacklist:
# cp -avr BL/porn/ /var/lib/squidguard/db/
输出示例:
`BL/porn/' -> `/var/lib/squidguard/db/porn' `BL/porn/domains' -> `/var/lib/squidguard/db/porn/domains' `BL/porn/urls' -> `/var/lib/squidguard/db/porn/urls'
最后,从文本文件创建数据库,如下所示:
# cd /var/lib/squidguard/db/porn # squidGuard -b -C domains # squidGuard -b -C urls
输出示例:
Processing file and database /var/lib/squidguard/db/porn/domains [==================================================] 100 % done Processing file and database /var/lib/squidguard/db/porn/urls [==================================================] 100 % done
其中:
- -b:更新黑名单时在进度条上显示。
-C fileName
:从在fileName中指定的URL /域文件创建新的.db文件。
设置权限,以便Squid可以使用chown命令读取文件:
# chown proxy:proxy -R /var/lib/squidguard/db/
步骤3:配置Squid 3
我假设Squid 3已正确安装和配置。
编辑/etc/squid3/squid.conf
,执行:
# vi /etc/squid3/squid.conf
您需要使用url_rewrite_program为URL重写器指定可执行文件的位置,如下所示:
url_rewrite_program /usr/bin/squidGuard
保存并关闭文件。
步骤4:配置SquidGuard
最后编辑/etc/squid/squidGuard.conf
,执行:
# vi /etc/squid/squidGuard.conf
添加以下指令:
## Block adult/porn sites for school ## dest porn { domainlist porn/domains urllist porn/urls }
编辑/更新ACL,如下所示:
acl { default { pass !porn all redirect http://192.168.1.11/blocked.html?clientaddr=%a+clientname=%n+clientident=%i+srcclass=%s+targetclass=%t+url=%u } }
保存并关闭文件。
在192.168.1.11网络服务器上创建一个blocked.html:
<html> <head> <title>URL Blocked</title> </head> <body> <h1>URL Blocked</h1> <p>Access to this site / url has been blocked.</p> <p>If you think this is an error, please contact the help-desk:</p> <p>Call us - 123-456-789 (ext. 333)</p> <p>Email us - [email protected]</p> </body> </head> </html>
最后,重新加载Squid2/3代理服务器:
# /usr/sbin/squid3 -k reconfigure
验证squid和squidguard均正常运行,运行:
# tail -f /var/log/squid3/cache.log
输出示例:
2012/08/22 01:23:40| Processing Configuration File: /etc/squid3/squid.conf (depth 0) 2012/08/22 01:23:40| Squid modules loaded: 0 2012/08/22 01:23:40| Adaptation support is off. 2012/08/22 01:23:40| Store logging disabled 2012/08/22 01:23:40| DNS Socket created at [::], FD 8 2012/08/22 01:23:40| DNS Socket created at 0.0.0.0, FD 9 2012/08/22 01:23:40| Adding nameserver 127.0.0.1 from /etc/resolv.conf 2012/08/22 01:23:40| helperOpenServers: Starting 5/5 'squidGuard' processes 2012/08/22 01:23:40| Accepting HTTP connections at [::]:3128, FD 30. 2012/08/22 01:23:40| HTCP Disabled. 2012/08/22 01:23:40| Loaded Icons. 2012/08/22 01:23:40| Ready to serve requests.
步骤5:验证配置
执行以下命令,以验证squidguard是否正常工作并阻止了URL:
echo "http://DOMAIN-NAME-HERE / - - GET" | squidGuard -d echo "http://sex.com / - - GET" | squidGuard -d
输出示例:
2012-08-22 01:26:05 [3365] New setting: dbhome: /var/lib/squidguard/db 2012-08-22 01:26:05 [3365] New setting: logdir: /var/log/squid3 2012-08-22 01:26:05 [3365] destblock good missing active content, set inactive 2012-08-22 01:26:05 [3365] destblock local missing active content, set inactive 2012-08-22 01:26:05 [3365] init domainlist /var/lib/squidguard/db/porn/domains 2012-08-22 01:26:05 [3365] loading dbfile /var/lib/squidguard/db/porn/domains.db 2012-08-22 01:26:05 [3365] init urllist /var/lib/squidguard/db/porn/urls 2012-08-22 01:26:05 [3365] loading dbfile /var/lib/squidguard/db/porn/urls.db 2012-08-22 01:26:05 [3365] squidGuard 1.4 started (1345578965.473) 2012-08-22 01:26:05 [3365] Info: recalculating alarm in 23635 seconds 2012-08-22 01:26:05 [3365] squidGuard ready for requests (1345578965.476) 2012-08-22 01:26:05 [3365] source not found 2012-08-22 01:26:05 [3365] no ACL matching source, using default http://192.168.1.11/blocked.html?clientaddr=+clientname=+clientident=+srcclass=default+targetclass=porn+url=http://sex.com /- - 2012-08-22 01:26:05 [3365] squidGuard stopped (1345578965.477)
或者,您可以在浏览器中看到以下内容:
SquidGuard运行中
如何阻止其他类别?
如下更新/etc/squid/squidGuard.conf
。
定义您的类别。
就像您在色情片上所做的一样:
dest gamble { domainlist gamble/domains urllist gamble/urls } dest alcohol { domainlist alcohol/domains urllist alcohol/urls }
更新acl
条目,如下所示:
acl { default { pass !porn !gamble !alcohol all redirect http://192.168.1.11/blocked.html?clientaddr=%a+clientname=%n+clientident=%i+srcclass=%s+targetclass=%t+url=%u } }
您还需要在/var/lib/squidguard/db /目录中安装数据库:
# cd /tmp # cp -avr BL/alcohol/ /var/lib/squidguard/db/ # cp -avr BL/gamble/ /var/lib/squidguard/db/
要初始化黑名单,请运行:
# squidGuard -C all
或者只是初始化新创建的类别:
# squidGuard -C /var/lib/squidguard/db/alcohol/domains squidGuard -C /var/lib/squidguard/db/alcohol/urls
最后,设置权限:
# chown proxy:proxy -R /var/lib/squidguard/db/
重新加载Squid3:
# /usr/sbin/squid3 -k reconfigure
不允许通过IP地址绕过URL过滤器
为了确保用户不会仅仅通过使用IP地址而不是FQDN来绕过URL过滤器,请使用!in-addr
指令如下编辑acl条目:
acl { default { pass !porn !gamble !alcohol !in-addr all redirect http://192.168.1.11/blocked.html?clientaddr=%a+clientname=%n+clientident=%i+srcclass=%s+targetclass=%t+url=%u } }
重新加载Squid,如下所示:
# /usr/sbin/squid3 -k reconfigure