Ключевые слова:squid, virus, clamav, filter, (найти похожие документы)
From: Андрей Маркелов <http://www.markelov.net>
Date: Mon, 16 Dec 2007 14:31:37 +0000 (UTC)
Subject: Проверяем HTTP-трафик в squid на лету
Оригинал: http://www.markelov.net/articles.php?lng=ru&pg=186
Впервые опубликованно в журнале "Системный администратор" No.07/2005
Сегодня антивирусная защита - непременный атрибут грамотно
спланированной 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
и удаляем строчку:
Example
Наконец, запускаем демон командой:
# /usr/local/sbin/clamd
Теперь пробуем проверить наше свежеустановленное решение. После того
как в настройках браузера укажете порт, назначенный HAVP, и IP-адрес
прокси, по ссылке [7] можно попробовать скачать тестовую сигнатуру
вируса.
Не забудьте запретить пользователям подключаться напрямую к Squid.
Если все получилось, то я могу вас поздравить с очередным успешным
шагом в создании защищенной локальной сети.
Литература, ссылки:
1. Маркелов А. Броня моллюска. Обзор и установка антивируса ClamAV. -
Журнал "Компьютерра" No.21, 2004 г. - 34-35 с. Статья доступна в
Интернете по адресу: http://www.markelov.net/articles.php?lng=ru&pg=44.
2. Яремчук С. Свободный антивирус. - Журнал "Системный
администратор", No.8, 2004 г. - 24-25 с.
3. Супрунов С. Еще раз о ClamAV: особенности установки в FreeBSD. -
Журнал "Системный администратор", No.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