Debian/Ubuntu Linux:为Squid 3.x安装SquidGuard Web过滤器插件以阻止不需要的站点

时间:2020-01-09 10:43:44  来源:igfitidea点击:

如何为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