如何使用 Squid 和 C-ICAP 启用 URL 过滤

如何使用 Squid 和 C-ICAP 启用 URL 过滤

在发布此问题之前,我在网上阅读了几份设置指南,包括 squid 文档、c-icap 文档以及 ICAP RFC (3507)。遗憾的是,SQUID 和 C-ICAP 的文档在 URL 过滤方面没有提供太多示例,只有使用 ClamAv 的简单设置。

因此,我正在尝试弄清楚如何使用 Squid 和 C-ICAP 服务器设置简单的 URL 过滤。具体来说,我开始尝试使用 SquidGuard 数据库(但不是 Squidguard 程序)作为黑名单来源。我已经设置并运行了 Squid(代理),并且 C-ICAP 也设置并运行了(响应选项请求)。但是,我不知道为什么 URL 过滤没有运行,因为我已经尽可能严格地遵循了示例。

我的 squid.conf 针对 ICAP 设置如下:

#Icap Options
icap_enable on
icap_service svcBlocker reqmod_precache icap://127.0.0.1:1344/srv_url_check bypass=off

在 c-icap.conf 文件的底部,我包含了我想要使用的 icap 服务:

# End module: ldap_module
#URL Check Services
Include srv_url_check.conf

我已经按照 c-icap 文档设置了 srv_url_check.conf 文件:

# Default:
#None set
#Example: url_check.LoadSquidGuardDB audio-video /home/dranfu/Downloads/blacklists/audio-video/

当我向 C-ICAP 发送选项请求时,它运行正常:

ICAP server:localhost, ip:127.0.0.1, port:1344

OPTIONS:
    Allow 204: Yes
    Preview: 1024
    Keep alive: Yes

ICAP HEADERS:
    ICAP/1.0 200 OK:
    Methods:RESPMOD, REQMOD
    Service:C-ICAP/0.2.4 server - Echo demo service
    ISTag:CI0001-XXXXXXXXX
    Transfer-Preview:*
    Options-TTL:3600
    Date:Tue, 26 Feb 2013 10:57:13 GMT
    Preview:1024
    Allow:204
    X-Include:X-Authenticated-User, X-Authenticated-Groups
    Encapsulated:null-body=0

但是,当我向黑名单上的网站发送标准网络请求时,我得到的回应相当空:

/usr/local/c-icap/bin/c-icap-client -p 8080 -req http://mp3.com.au 

ICAP server:localhost, ip:127.0.0.1, port:8080

此外,我仍然可以毫无问题地代理到网站。因此,如果有人有使用 URL 过滤设置纯 C-ICAP 的 squid 的经验,那么如果有任何帮助或基本指南来指导如何使其工作,那就太好了。至少对我来说,文档太少了,无法弄清楚出了什么问题。但毫无疑问,这是我所缺少的东西。

答案1

我正在尝试做同样的事情。我成功配置了 c-icap 来阻止请求。

你的srv_url_check.conf配置似乎不完整。我的配置如下:

Service urlcheck /usr/lib/x86_64-linux-gnu/c_icap/srv_url_check.so
url_check.LookupTableDB denyhosts url hash:/etc/c-icap/denyhosts.txt "Denied Host"
url_check.Profile denyProfile block denyhosts
url_check.ProfileAccess denyProfile all

文件denyhosts.txt是一个简单的文本文件。每行应包含要阻止的主机,例如:

mp3.com.au
xvideos.com
sex.com

最后,您应该取消注释acl all src 0.0.0.0/0.0.0.0c-icap.conf

启动您的 c-icap 服务器/usr/bin/c-icap -D -N -d 1(根据需要调整日志级别 (-d))并使用进行测试/usr/bin/c-icap-client -s url_check -req http://sex.com -v -d 1

作为回复,您将收到:

ICAP HEADERS:
    ICAP/1.0 200 OK
    Server: C-ICAP/0.4.2
    Connection: keep-alive
    ISTag: CI0001-XXXXXXXXX
    X-ICAP-Profile: denyProfile
    X-Attribute: denyhosts
    X-Attribute-Prefix: 7
    X-Response-Info: BLOCKED
    X-Response-Desc: URL category denyhosts is BLOCKED
    Encapsulated: res-hdr=0, res-body=108

RESPMOD HEADERS:
    HTTP/1.0 403 Forbidden
    Server: C-ICAP
    Content-Type: text/html
    Connection: close
    Content-Language: en

这就是我迄今为止所做的……

答案2

Squid 网站上还有其他专门为 ICAP 网络过滤而设计的解决方案(http://www.squid-cache.org/Misc/icap.html), qlproxy 为例。设置 ICAP 可能比 C-ICAP 更容易。

相关内容