Андрей Маркелов
Сегодня антивирусная защита – непременный атрибут грамотно
спланированной 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. Если все получилось, то я могу вас поздравить с очередным
успешным шагом в создании защищенной локальной сети.
Литература,
ссылки:
1. Маркелов
А. Броня моллюска. Обзор и установка антивируса ClamAV. – Журнал «Компьютерра»
№21, 2004 г. – 34-35 с. Статья доступна в Интернете по адресу: http://www.markelov.net/articles.php?lng=ru&pg=44.
2. Яремчук
С. Свободный антивирус. – Журнал «Системный администратор», №8, 2004 г. – 24-25
с.
3. Супрунов
С. Еще раз о ClamAV: особенности установки в FreeBSD. – Журнал «Системный
администратор», №3, 2004 г. – 32-37 с.
4. HAVP – http://www.server-side.de.
5. Методы
проверки HTTP-трафика при помощи Clamav – http://www.clamav.net/3rdparty.html#webftp.
6. http://www.clamav.net.
7. Тестовая
сигнатура вируса – http://www.eicar.org/anti_virus_test_file.htm.