配置 SquidGuard、启用内容规则和分析 Squid 日志 - 第 6 部分
LFCE (Linux 基金会认证工程师)是具备在 Linux 系统中安装、管理和排除网络服务故障所需技能的专业人员,并负责整个系统架构的设计、实施和持续维护。
介绍Linux基金会认证计划。
在之前的文章中,我们讨论了如何安装Squid + squidGuard以及如何配置 squid 以正确处理或限制访问请求。在继续之前,请务必先阅读这两个教程并安装 Squid 和 squidGuard,因为它们为我们在本文中介绍的内容设定了背景和上下文:在工作 squid 环境中集成 squidguard 以实施黑名单规则和对代理服务器的内容控制。
要求
我可以/不能使用 SquidGuard 做什么?
虽然 squidGuard 肯定会增强和提升 Squid 的功能,但强调它能做什么和不能做什么是很重要的。
squidGuard 可用于:
- 将某些用户允许的 Web 访问限制在可接受/知名的 Web 服务器和/或 URL 列表中,同时拒绝访问其他列入黑名单的 Web 服务器和/或 URL。
- 阻止某些用户访问与正则表达式或单词列表匹配的网站(通过 IP 地址或域名)。
- 要求使用域名/禁止在 URL 中使用 IP 地址。
- 将阻止的 URL 重定向至错误或信息页面。
- 根据一天中的时间、一周中的某天、日期等使用不同的访问规则。
- 针对不同的用户群实施不同的规则。
但是,squidGuard 和 Squid 都不能用于:
- 分析文档中的文本并根据结果采取行动。
- 检测或阻止 HTML 代码中嵌入的脚本语言,如 JavaScript、Python 或 VBscript。
黑名单——基础知识
黑名单是 squidGuard 的重要组成部分。基本上,它们是纯文本文件,可让您根据特定关键字实施内容过滤器。有免费和商业黑名单,您可以在squidguard 黑名单项目的网站中找到下载链接。
在本教程中,我将向您展示如何将Shalla Secure Services提供的黑名单集成到您的 squidGuard 安装中。这些黑名单可免费供个人/非商业使用,并且每天更新。截至今天,它们已包含超过1,700,000 个条目。
为了方便起见,我们创建一个目录来下载黑名单包。
# mkdir /opt/3rdparty # cd /opt/3rdparty # wget http://www.shallalist.de/Downloads/shallalist.tar.gz
最新的下载链接始终可用,如下所示。
解压新下载的文件后,我们将浏览到黑名单(BL)文件夹。
# tar xzf shallalist.tar.gz # cd BL # ls
您可以将ls输出中显示的目录视为黑名单类别,将其对应的(可选)子目录视为子类别,一直向下到特定的 URL 和域,它们分别列在文件urls和domains中。有关更多详细信息,请参阅下图。
安装黑名单
整个黑名单包或个别类别的安装是通过将BL目录或其子目录之一分别复制到/var/lib/squidguard/db目录来完成的。
当然,您可以首先将黑名单tarball 下载到此目录,但前面解释的方法可以让您更好地控制在特定时间应阻止(或不阻止)哪些类别。
接下来,我将向您展示如何安装anonvpn、黑客和聊天黑名单以及如何配置 squidGuard 以使用它们。
步骤 1 :将anonvpn、hacking和chat目录从/opt/3rdparty/BL递归复制到/var/lib/squidguard/db。
# cp -a /opt/3rdparty/BL/anonvpn /var/lib/squidguard/db # cp -a /opt/3rdparty/BL/hacking /var/lib/squidguard/db # cp -a /opt/3rdparty/BL/chat /var/lib/squidguard/db
步骤 2:使用域和 URL 文件创建 squidguard 的数据库文件。请注意,以下命令将用于为所有已安装的黑名单创建.db文件 - 即使某个类别有 2 个或更多子类别。
# squidGuard -C all
步骤 3 :将 /var/lib/squidguard/db/目录及其内容的所有权更改为代理用户,以便 Squid 可以读取数据库文件。
# chown -R proxy:proxy /var/lib/squidguard/db/
步骤 4:配置 Squid 以使用 squidGuard。我们将使用/etc/squid/squid.conf中的 Squid url_rewrite_program指令来告诉 Squid 使用 squidGuard 作为 URL 重写器/重定向器。
将以下行添加到squid.conf,确保/usr/bin/squidGuard是您情况下的正确绝对路径。
# which squidGuard # echo "url_rewrite_program $(which squidGuard)" >> /etc/squid/squid.conf # tail -n 1 /etc/squid/squid.conf
步骤5:将必要的指令添加到squidGuard的配置文件(位于/etc/squidguard/squidGuard.conf)。
请参阅上面的屏幕截图,以下代码后面有进一步说明。
src localnet { ip 192.168.0.0/24 } dest anonvpn { domainlist anonvpn/domains urllist anonvpn/urls } dest hacking { domainlist hacking/domains urllist hacking/urls } dest chat { domainlist chat/domains urllist chat/urls } acl { localnet { pass !anonvpn !hacking !chat !in-addr all redirect http://www.lds.org } default { pass local none } }
第 6 步:重新启动 Squid 并测试。
# service squid restart [sysvinit / Upstart-based systems] # systemctl restart squid.service [systemctl-based systems]
在本地网络内的客户端中打开 Web 浏览器并浏览到任何黑名单文件 (域或 URL - 我们将在下面的示例中使用http://spin.de/chat ) 中的站点,您将被重定向到另一个 URL,在本例中为www.lds.org。
您可以验证请求是否已发送到代理服务器但被拒绝(301 http 响应 -永久移动)并且重定向到www.lds.org。
取消限制
如果由于某种原因您需要启用过去已被阻止的类别,请从/var/lib/squidguard/db中删除相应的目录并注释(或删除) squidguard.conf文件中的相关acl。
例如,如果您想启用anonvpn类别列入黑名单的域和 URL,则需要执行以下步骤。
# rm -rf /var/lib/squidguard/db/anonvpn
并如下编辑squidguard.conf文件。
请注意,在“之前”部分中以黄色突出显示的部分已在“之后”部分中删除。
将特定域名和 URL 列入白名单
有时您可能希望允许某些URL或域,但不允许整个列入黑名单的目录。在这种情况下,您应该创建一个名为myWhiteLists (或您选择的任何名称)的目录,并在/var/lib/squidguard/db/myWhiteLists下分别在名为 urls 和 domains 的文件中插入所需的URL和域。
然后,像以前一样初始化新的内容规则,
# squidGuard -C all
并修改squidguard.conf如下。
与之前一样,黄色突出显示的部分表示需要添加的更改。请注意,myWhiteLists字符串需要位于以 pass 开头的行中的第一个。
最后,记得重新启动 Squid 以应用更改。
结论
按照本教程中概述的步骤操作后,您应该会拥有一个功能强大的内容过滤器和 URL 重定向器,可与您的 Squid 代理协同工作。如果您在安装/配置过程中遇到任何问题,或者有任何问题或意见,您可能需要参考squidGuard 的 Web 文档,但请随时使用下面的表格给我们留言,我们会尽快回复您。