配置 SquidGuard、启用内容规则和分析 Squid 日志 - 第 6 部分
LFCE(Linux 基金会认证工程师)是具有在 Linux 系统中安装、管理和排除网络服务故障所需技能的专业人员,并负责整个系统架构的设计、实施和持续维护。
介绍 Linux 基金会认证计划。
在之前的文章中,我们讨论了如何安装Squid + squidGuard以及如何配置squid以正确处理或限制访问请求。请确保您阅读了这两个教程并安装了 Squid 和 squidGuard,然后再继续,因为它们为我们将在本文中介绍的内容设置了背景和上下文:在工作鱿鱼环境中集成鱿鱼防护以实现黑名单规则和内容控制代理服务器。
要求
- 安装 Squid 和 SquidGuard – 第 1 部分
- 配置 Squid 代理服务器以限制访问 – 第 5 部分
我可以/不可以使用 SquidGuard 做什么?
虽然squidGuard肯定会增强和增强Squid的功能,但重要的是要强调它能做什么和不能做什么。
鱿鱼卫士可用于:
- 将某些用户允许的 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 和域分别是网址和域。请参阅下图了解更多详细信息。
安装黑名单
整个 blacklist 软件包或单个类别的安装是通过将 BL 目录或其子目录之一分别复制到 /var/ 来执行的。 lib/squidguard/db 目录。
当然,您可以首先将 blacklist tarball 下载到此目录,但前面解释的方法使您可以更好地控制在特定时间应阻止(或不阻止)哪些类别。
接下来,我将向您展示如何安装anonvpn、hacking和chat黑名单以及如何配置squidGuard来使用它们。
第 1 步:从 /opt/3rdparty/ 递归复制 anonvpn、hacking 和 chat 目录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/ 聊天),您将被重定向到另一个 URL,在本例中为 www.lds.org。
您可以验证请求是否已向代理服务器发出,但被拒绝(301 http 响应 - 永久移动)并被重定向到 www.lds.org。
取消限制
如果由于某种原因需要启用过去被阻止的类别,请从 /var/lib/squidguard/db 中删除相应的目录,并注释(或删除)相关的 acl 在 squidguard.conf 文件中。
例如,如果您想要启用 anonvpn 类别列入黑名单的域和 URL,则需要执行以下步骤。
rm -rf /var/lib/squidguard/db/anonvpn
并按如下方式编辑 squidguard.conf 文件。
请注意,之前下以黄色突出显示的部分已在之后中删除。
将特定域和 URL 列入白名单
有时您可能希望允许某些URL或域,但不是整个黑名单目录。在这种情况下,您应该创建一个名为 myWhiteLists(或您选择的任何名称)的目录,并在 下插入所需的 URL 和 域 /var/lib/squidguard/db/myWhiteLists 分别位于名为 urls 和domains 的文件中。
然后,像以前一样初始化新的内容规则,
squidGuard -C all
并按如下方式修改squidguard.conf。
和以前一样,以黄色突出显示的部分表示需要添加的更改。请注意,myWhiteLists 字符串需要位于以 pass 开头的行的第一个位置。
最后,记得重新启动 Squid 才能应用更改。
结论
遵循本教程中概述的步骤后,您应该拥有一个功能强大的内容过滤器和 URL 重定向器,与您的 Squid 代理一起工作。如果您在安装/配置过程中遇到任何问题或有任何疑问或意见,您可能需要参考squidGuard的网络文档,但请随时使用下面的表格给我们留言,我们会尽快回复您可能的。