В этой статье я расскажу как установить и настроить кэширующий прокси-сервер SQUID в связке с HAVP(HTTP Anti Virus Proxy). В результате мы получим некоторую экономию на трафике, быстродействие (в случае если страница уже находится в кэше прокси-сервера) и проверку загружаемого контента антивирусным модулем clamav. Разумеется это несколько бюджетный вариант и решение подойдет для домашнего использования и в мелких организациях, где нет возможности приобрести коммерческое и более функциональное решение. Хотя вкупе с IDC Snort и грамотно настроенным межсетевым экраном, я думаю 90-95% «заразы» отразить на шлюзе вполне реально. Итак, приступим.
В веб-административной панели pfSense переходим в менеджер пакетов и устанавливаем пакеты squid и havp. Как устанавливать пакеты подробно описано в статьях «Установка и настройка IDS/IPS SNORT в pfSense» и «Установка и настройка FreeRadius Server в pfSense», поэтому заострять подробно внимание на этом, я думаю, нет смысла.
После успешной инсталляции пакетов переходим непосредственно к их конфигурации. Здесь я сделаю некоторое отступление, я буду использовать такой вариант этой связки:
Internet — HAVP — SQUID — Client
Преимущества данного решения: в кэш прокси-сервера будет попадать заведомо проверенный антивирусным модулем контент. Соответственно кэш прокси-сервера должен быть чист и не должен содержать вредоносного ПО, но в качестве подстраховки, я думаю, время от времени все же стоит проверять содержимое кэша антивирусным модулем.
Настройка HAVP.
Переходим по вкладке Services-Antivirus и попадаем в меню настройки HTTP Anti Virus Proxy.

HTTP proxy:
enable включение или отключение прокси.
Proxy mode в нашем случае нужно установить в parent for squid(родительский для squid)
Proxy interfaces выставляем в LAN.
Proxy port я выбрал 8080.
Block file if error scanning отмечаем этот параметр, чтобы блокировать файлы, которые антивирусный модуль не смог просканировать.
Enable RAM disk включение данного параметра приведет к использованию оперативной памяти как хранилища для временных файлов havp, при достаточном объеме свободной RAM можно достигнуть некоторого быстродействия в сканировании. Соответственно при не достаточном объеме свободной памяти, включение данного параметра не рекомендуется.
Scan max file size определяет максимальный размер файла, который havp будет сканировать, прежде чем отдаст пользователю. Здесь можно оставить параметр по умолчанию(5000K). Размер файла имеет смысл увеличить если аппаратные ресурсы шлюза позволяют, а пользователи часто качают файлы большего объема. Хотя лично мое мнение, увеличивать этот параметр не целесообразно.
Scan images этот параметр отвечает за сканирование фото на страницах, соответственно включение данного параметра повышает безопасность, но снижает процесс сканирования. Этот параметр лучше включить.
Scan media stream включает сканирование аудио/видео потока, осуществляет защиту от эксплоитов нацеленных на медиа проигрыватели. Аналогично предыдущему параметру, лучше включить.
Syslog, log включает логирование событий, включаем эти параметры если вы будете отслеживать логи havp, вообще, я думаю лишнем не будет, хотябы быть в курсе как работает связка.
Для применения настроек жмем SAVE.
Files Scanner:
Сканирование файла или каталога, указываем путь и жмем Start scan. В качестве объекта сканирования можно задать три директории по умолчанию.

Settings:
AV base Update с помощью выпадающего списка выбираем временной промежуток обновления баз антивирусного модуля.
Regional AV database update mirror зеркало обновлений выбираем — russian.
Syslog, Log включение ведения логов.
Для применения настроек жмем SAVE, затем обновляем базы антивирусного модуля — UPDATE_AV.

Настройка SQUID.
Переходим по вкладке Services-Proxy server и попадаем в меню настройки General Settings.
General Settings:
Proxy intarface интерфейс на котором «слушает» прокси, в нашем случае это LAN.
Allow users on interface включаем этот параметр для разрешения доступа к прокси пользователям входящим в одну подсеть с интерфейсом указанным в параметре Proxy intarface.
Transparent Proxy этот параметр включает прозрачный режим прокси, в этом режиме не нужно перестраивать ПО на стороне клиента. В pf создается правило перенаправления пользовательских запросов на «слушающий» порт прокси.
Enabled logging включаем ведение лога.
Suppress Squid Version включаем этот параметр, чтобы отключить вывод версии squid в заголовках http и html страниц ошибок.
thank you very much howto is great
стоит в офисе Pfsense, все работают через NAT. Хотел сделать учёт трафика по вашей статье. Всё поставил, пускал через прозрачный прокси, нету инета, HTTP антивирус вообще не запускается.Незнаю где рыть? Спасибо)
Опишите подробней конфигурацию Pfsense(версия, какие пакеты еще установлены), вообще статья, как и многие здесь написана как шпаргалка, эту связку я настраивал не единожды, даже пару дней назад на 2.0 beta 3, но правда без антивируса.
Спасибо за инструкцию! Но я пытаюсь настроить указанную связку — HAVP запускается а Squid не хочет. Пробовал по отдельности — результат тот же, вирусы с тестовой страницы пропускает. Система — Pfsense 2.0-BETA4 + Dashboard Widget: Antivirus Status, Dashboard Widget: HAVP, File Manаger, HAVP antivirus, Lightsquid, phpSysInfo, squid. Работает только dnsmasq, ntpd, кроме HAVP и Squid. Такая же проблема была раньше на Pfsense 1.2.3 и другом железе. Интернет работает, в памяти RAМ-диск есть(видно по занимаемому объему, 25% из 1Гб), при попытке запустить Squid вручную надпись: squid has been started, а в колонке Status — Stopped. Посоветуйте куда смотреть?
andrey Я бы всетаки пробовал настраивать на стабильной версии Pfsense, а не betta, насколько мне известно, что в бетте как раз проблемы со сквидом.
Добрый день.
Настроил фаервол по инструкции, все заработало, вирусы ловил, обновлялся. Но после неожиданного зависания(все это происходило на тестовой машине) и аварийного зависания с холодной перезагрузкой работать он перестал. Т.е. в сервисах все ок, обновляется, в системных логах все впорядке, а вот на вирусы просто перестал обращать внимание. Что же могло произойти?
Добрый день. Вы уверены,что трафик идет через HAVP? Перепроверьте конфигурацию. Если уж совсем тяжко, можно сохранить текущую конфигурацию и переустановить пакет с последующим восстановлением конфигурации.
А не означает ли сообщение
Clamd Socket Scanner passed EICAR virus test (Eicar-Test-Signature)
что антивирус понимает что это безопасная сигнатура и пропускает её ввиду последних обновлений?
Выполнил полную переустановку pfsens’a , снова установил связку по инструкции — результат тот же — все сервисы запущены, но файл не ловит. При ручном сканировании им же — реагирует и удаляет. Да, возможно траффик идет не через него. Не подскажете как проверить?
Единственное не нормальное поведение — сквид не стартует после ребута. Пишет следующее:
php: : SQUID is installed but not started. Not installing «filter» rules.
php: : SQUID is installed but not started. Not installing «nat» rules.
При ручном запуске — включается. Кэш пополняется и растет — отсюда делаю вывод, что сквид таки работает(или нет?)
Сообщения от хавпа следующие:
freshclam[7489]: Your ClamAV installation is OUTDATED!
freshclam[7489]: Local version: 0.95.3 Recommended version: 0.97
freshclam[7489]: Your ClamAV installation is OUTDATED!
havp[2386]: Process ID: 2386
havp[2375]: — All scanners initialized
havp[2375]: Clamd Socket Scanner passed EICAR virus test (Eicar-Test-Signature)
havp[2375]: — Initializing Clamd Socket Scanner
havp[2375]: Running as user: havp, group: squid
havp[2375]: === Mandatory locking disabled! KEEPBACK settings not used!
havp[2375]: === Starting HAVP Version: 0.91
Не подскажете в чем проблема?
Спасибо заранее.
Извиняюсь, но забыл дописать, что при установки squid’a и первой перезагрузке он не смог создать кэш директорию и попросил выполнить ‘squid -z’, что я и сделал. Это приходилось выполнять при всех моих переустановках связки. Даже в последний(при переустановки всего pfsens’a)
Еще раз извиняюсь за назойливость — но проблему решить таки удалось!
Все дело в сквиде, который почему-то не запускается при ребуте. Если после запуска системы запустить вручную сквид, а потом перезапустить хавп — все работает. Но отчего так проиходит — еще предстоит разобраться.
Добрый день, а что используете? Бетту? Если да, то не стоит ждать стабильности :)
По поводу:
Он вам сообщает, что доступна более свежая и рекомендованная версия, а та что в репозитории устарела.
Не подскажете, с чем может быть связана следующая проблема?
Feb 17 18:23:47 havp[55013]: 127.0.0.1 GET 200 287+179 SCANERROR Clamd: Could not connect to scanner socket
Feb 17 18:23:47 havp[55013]: Scanner errors: Clamd: Could not connect to scanner socket (lasturl: )
Feb 17 18:23:47 havp[55022]: Clamd: Could not connect to scanner! Scanner down?
Feb 17 18:23:47 havp[55022]: connect() failed: Operation not permitted
Затрудняюсь ответить