АНДРЕЙ МАРКЕЛОВ
Проверяем HTTP-трафик на лету
Сегодня антивирусная защита – непременный атрибут грамотно спланированной IT-стратегии организации. Для не обремененного лишними деньгами бюджета IT-отдела закупка и установка на всех пользовательских компьютерах антивирусных программ может стать вполне весомой статьей расходов. Можно ли как-то избежать лишних затрат?
Представим, что у пользователей отсутствуют или отключены НГМД (про CD-ROM и USB я даже не упоминаю – на мой взгляд, это непозволительная роскошь для клиентских рабочих мест). Почта уже проверяется каким-нибудь открытым антивирусом типа Clamav. В таком случае единственным возможным источником вирусов может являться «дикий Интернет». И если доступ пользователям открыт только через протокол HTTP, то только его нам и остается сканировать на предмет вирусов. Делать это удобнее и дешевле на сервере при помощи открытого ПО, чем мы и займемся.
Для проверки наличия вирусов традиционно предлагаю использовать наиболее распространенный из свободных антивирусов – Clam AntiVirus (http://www.clamav.net). Я не буду подробно рассказывать о его преимуществах и особенностях, о которых уже написано в статьях [1, 2, 3]. Сегодня мы разберем практические вопросы установки и интеграции антивируса с прокси-сервером. В качестве прокси мы возьмем HTTP AntiVirus proxy (HAVP) [4].
Помимо HAVP также рассматривались и другие варианты. Но они либо на платной основе в случае коммерческого применения как dansguardian.org (plug-in к нему), либо показались менее стабильными, по отзывам в форумах. Наверняка это не единственное, и, возможно, не самое лучшее решение, но тем не менее оно существует и вполне справляется с поставленными задачами. С возможными альтернативными вариантами вы можете ознакомиться по ссылке [5].
HTTP AntiVirus proxy – это прокси-сервер с фильтром – антивирусом. Сканируется весь трафик, и проверка на вирусы является единственной задачей данного прокси-сервера. Поэтому вполне разумным было бы использовать HAVP в связке с кэширующим прокси, умеющим фильтровать трафик, например Squid. Ключевыми особенностями HAVP являются возможность непрерывной проверки трафика без тайм-аутов и блокировок, а также корректная работа с динамическими и защищенными паролем страницами.
Предполагается, что у вас уже имеется настроенный прокси-сервер, например Squid. На момент написания статьи последней версией HAVP была 0.62. Установка производилась на Red Hat Linux Enterprise 4, но без проблем все должно работать и на других UNIX-системах.
Устанавливаем HAVP
Для начала создадим отдельную ФС для временных файлов HAVP. Отдельную – потому что ее необходимо монтировать с поддержкой так называемых «ручных блокировок» для файлов (mandatory locks).
Это делается при помощи опции mand, команды mount. Я предпочел для ускорения работы и снижения нагрузки на дисковый массив создать такую файловую систему в ОЗУ:
# mkdir /var/tmp/havp
# chown nobody /var/tmp/havp
# chgrp nobody /var/tmp/havp
# mount -t tmpfs -o size=100M,mand tmpfs /var/tmp/havp
Соответствующая строчка, которую необходимо добавить в /etc/fstab для автоматического создания файловой системы во время загрузки, выглядит следующим образом:
# <fs> <mt_point> <type> <options> <dump> <pass>
tmpfs /var/tmp/havp tmpfs auto,size=100M,mand 0 0
Проверяем, как смонтировалась наша файловая система. Мы должны получить что-нибудь похожее на:
# df -h /var/tmp/havp
tmpfs 100M 0 100M 0% /var/tmp/havp |
Кроме того, создадим директорию для лог-файлов прокси-сервера и выставим владельца:
# mkdir /var/log/havp
# chown nobody /var/log/havp
# chgrp nobody /var/log/havp
Теперь развернем предварительно скачанный со странички [4] исходные коды прокси-сервера.
# tar zxvf havp-0.62.tar.gz
Далее, заходим в директорию havp-0.62 и начинаем править файл havp/default.h. Изменить требуется следующее:
#define GROUP "nobody"
// В дополнение к пользователю, из-под которого будет запускаться служба, меняем на nobody и группу
#define PARENTPROXY "localhost"
#define PARENTPORT 3128
// Указываем хост и порт, на котором установлен кэширующий прокси-сервер, например Squid. Если «родительского»
// прокси у вас нет, то комментируем
#define SCANTEMPFILE "/var/tmp/havp-XXXXXX"
#define ACCESSLOG "/var/log/havp/access.txt"
#define ERRORLOG "/var/log/havp/error.txt"
// Указываем шаблон временных файлов и имена файлов журналов. При этом все три указанные директории и два
// файла журналов должны быть созданы вручную и иметь соответствующие разрешения для пользователя,
// из-под которого запускается HAVP. Естественно, вы можете изменить пути и названия файлов по своему усмотрению
Остальное можно оставить без изменений. Теперь выполним стандартные для компиляции и установки программы шаги:
# ./configure
# make
# make install
Сервис запускается командой /usr/local/bin/havp. Следующим шагом необходимо установить антивирус Clamav. Как это делать, описано ниже.
Устанавливаем Clamav
Про установку антивируса Clamav читайте в [1, 2, 3]. Здесь же я приведу минимально необходимые для установки сведения. Добавляем группу и пользователя, из-под которого будет запускаться демон:
# groupadd clamav
# useradd -g clamav -s /bin/false clamav
Скачиваем с сайта проекта [6] последнюю версию исходников, разархивируем и правим в clamav-config.h переменную SCANBUFF. Ее значение должно быть меньше, чем указанное в переменной MAXRECV файла havp/default.h. После чего выполняем привычные:
# ./configure
# make
# make install
Добавляем в crontab строчку, запускающую команду по обновлению антивирусных баз:
1 * * * * /usr/local/bin/freshclam -quiet
Правим файл /usr/local/etc/clamav.conf. Добавляем:
LocalSocket /var/run/clamd.sock
StreamSaveToDisk
и удаляем строчку:
Example
Наконец, запускаем демон командой:
# /usr/local/sbin/clamd
Теперь пробуем проверить наше свежеустановленное решение. После того как в настройках браузера укажете порт, назначенный HAVP, и IP-адрес прокси, по ссылке [7] можно попробовать скачать тестовую сигнатуру вируса. Что должно получиться при этой попытке, вы видите на рис. 1, 2.
Рисунок 1. Пытаемся скачать файл с вирусом
Рисунок 2. Сработала защита
Не забудьте запретить пользователям подключаться напрямую к Squid. Если все получилось, то я могу вас поздравить с очередным успешным шагом в создании защищенной локальной сети.
Литература, ссылки:
- Маркелов А. Броня моллюска. Обзор и установка антивируса ClamAV. – Журнал «Компьютерра» №21, 2004 г. – 34-35 с. Статья доступна в Интернете по адресу: http://www.markelov.net/articles.php?lng=ru&pg=44.
- Яремчук С. Свободный антивирус. – Журнал «Системный администратор», №3, 2004 г. – 32-37 с (http://www.samag.ru/cgi-bin/go.pl?q=articles;n=03.2004;a=06).
- Супрунов С. Еще раз о ClamAV: особенности установки в FreeBSD. – Журнал «Системный администратор», №8, 2004 г. – 24-25 с (http://www.samag.ru/cgi-bin/go.pl?q=articles;n=08.2004;a=10).
- HAVP – http://www.server-side.de.
- Методы проверки HTTP-трафика при помощи Clamav – http://www.clamav.net/3rdparty.html#webftp.
- http://www.clamav.net.
- Тестовая сигнатура вируса – http://www.eicar.org/anti_virus_test_file.htm.