2008-07-28

HTTP AntiVirus Proxy

Вот вспомнил про замечательную штука HAVP и решился прикрутить проверку на вирусы HTTP-трафика.
Поскольку прокси-сервер уже имелся (в лице SQUID) будем их каскадировать.

После некоторых раздумий склонился к схеме squid -> havp, что даёт чистый кэш, меньшую нагрузку на антивирус, хотя и имеются некоторые недостатки - в таком варианте HAVP не проксирует FTP, ну и если метафизический вирус попадёт в кэш, до того как.. короче, будет печально.

дистрибутив на этот раз ubuntu-server-8.04, установлен (с настройками по-умолчанию) clamav,
ну и конешно же squid
havp наличествует в репозитории:
#sudo apt-get install havp

после чего обнаружилось, что и делать больше ничего не надо =) файловая система для врменных файлов
создана с сложена в /var/lib/havp/havp.loop и монтируется из init.d-скрипта при старте с нужными опциями
(HAVP требует mount -o mand для временных файлов)

конфиг /etc/havp/havp.config показал, что для антивирусной проверки используется libclamav что не есть хорошо,
при уже и без того запущеном и работающем clamav-daemon
поэтому приводим конфиг к виду:

#слушаем порт
PORT 3129
#адрес:
BIND_ADDRESS 127.0.0.1
#использовать libclamav
ENABLECLAMLIB false
#использовать clamav-daemon
ENABLECLAMD true
#сокет
CLAMDSOCKET /var/run/clamav/clamd.ctl
#можно подключить еще кучу антивирусов, которых у меня нет =(
ENABLEFPROT false
ENABLEAVG false
ENABLEAVESERVER false
ENABLESOPHIE false
ENABLETROPHIE false
ENABLENOD32 false
ENABLEAVAST false
ENABLEARCAVIR false


Для доступа к сокета надо добавить пользователя calmav в группу havp
# sudo adduser clamav havp


теперь займемся squid.

в конфик squid.conf дописываем:
cache_peer localhost parent 3129 0 proxy-only default
acl ftp proto FTP
acl havp proto HTTP
always_direct allow ftp
always_direct deny all
never_direct allow havp

первая строка указывает сквиду на родительский прокси,
остальные разрешают прямой доступ для FTP-трафика, который HAVP в такой последовательности обработать не может.

остаётся перезапустить:
# sudo invoke-rc.d clamav-daemon restart
# sudo invoke-rc.d squid restart
# sudo invoke-rc.d havp restart

И конечно же проверить работоспособность, путём скачивания EICAR-сигнатур