Прежде чем опубликовать этот вопрос, я прочитал несколько руководств по настройке в Интернете, документацию по squid, c-icap docus, а также ICAP RFC (3507). К сожалению, документация для SQUID и C-ICAP не дает много примеров, когда дело доходит до фильтрации URL-адресов, только когда дело доходит до простой настройки использования ClamAv.
Итак, я пытаюсь понять, как настроить простую фильтрацию URL-адресов с помощью Squid и сервера C-ICAP. В частности, я начинаю с попытки использовать базы данных 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-адресов, было бы здорово получить любую помощь или базовое руководство о том, как заставить это работать. Документация слишком скудна, по крайней мере для меня, чтобы понять, что идет не так. Без сомнения, это то, что мне не хватает.
Я пытаюсь сделать то же самое. Мне удалось настроить 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.