Как включить фильтрацию URL с помощью Squid и C-ICAP

Прежде чем опубликовать этот вопрос, я прочитал в Интернете несколько руководств по настройке, документы по squid, c-icap docus, а также ICAP RFC (3507). К сожалению, документация по SQUID и C-ICAP не дает много примеров, когда речь идет о фильтрации URL, только когда речь идет о простой настройке использования ClamAv.

Итак, я пытаюсь выяснить, как настроить простую фильтрацию URL-адресов с помощью Squid и C-ICAP Server. В частности, я начинаю пытаться использовать базы данных 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

Я настроил файл srv_url_check.conf, следуя документации по c-icap:

# 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

И, кроме того, я все еще могу прокси на сайт без проблем. Так что, если у кого-то есть опыт настройки squid с чистым C-ICAP с использованием фильтрации URL-адресов, было бы замечательно получить какую-либо помощь или базовое руководство о том, как заставить это работать. Документация слишком скудна, по крайней мере для меня, чтобы понять, что происходит не так. Не сомневаюсь, что я что-то упускаю.

2 ответа

Я пытаюсь сделать то же самое. Я добился успеха в настройке 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.0 в c-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

Это то, что я сделал до сих пор...

Существуют и другие решения, специально разработанные для веб-фильтрации ICAP, представленные на веб-сайте Squid ( http://www.squid-cache.org/Misc/icap.html), например, qlproxy. Может быть проще настроить ICAP, чем C-ICAP.

Другие вопросы по тегам