Защита системы от вирусов и спама: устанавливаем Clam Antivirus и SpamAssassin на FreeBSD

Этот документ описывает, как проверить входящую почту на предмет наличия вирусов и спама. Все действия показаны на примере транспортного агента qmail и не подходят при использовании sendmail. Этот документ рассказывает, как установить qmail-scanner, расширение для qmail, позволяющее входящей почте проходить сторонние фильтры, до того как она будет помещена в локальные каталоги пользователей. Мы будем рассматривать два фильтра: Clam AntiVirus - антивирусный пакет с открытым исходным кодом и SpamAssassin - детектор спама, также с открытым кодом.

Защита системы от вирусов и спама: устанавливаем Clam Antivirus и SpamAssassin на FreeBSD



Paul Hoadley Eric Parsonage

Copyright c 2002 by Paul Hoadley and Eric Parsonage

Перевод: Сгибнев Михаил

Этот документ описывает, как проверить входящую почту на предмет наличия вирусов и спама. Все действия показаны на примере транспортного агента qmail и не подходят при использовании sendmail. Этот документ рассказывает, как установить qmail-scanner, расширение для qmail, позволяющее входящей почте проходить сторонние фильтры, до того как она будет помещена в локальные каталоги пользователей. Мы будем рассматривать два фильтра: Clam AntiVirus - антивирусный пакет с открытым исходным кодом и SpamAssassin - детектор спама, также с открытым кодом.

Содержание:
  1. Вводные
  2. Установка Clam AntiVirus
  3. Установка SpamAssassin
  4. Установка qmail-scanner
  5. Получение и установка модулей PERL с CPAN
  6. Связь с авторами

Вводные

Примем следущие вводные: SpamAssassin и Clam AntiVirus необходимо установить до установки qmail-scanner, поскольку он пытается автоматически обнаружить доступные сторонние сканеры во время инсталляции.

Установка Clam AntiVirus

Установка из исходных текстов

(Пр.п - в оригинальном документе указывается, что clamav нет в системе портов, но в настоящее время он находится в /usr/ports/security/clamav)

Получаем и распаковываем исходники: Создаем нового пользователя и группу для Clam AntiVirus: Конфигурируем и устанавливаем Clam AntiVirus:

Проверка работоспособности

Вы должны почитать документацию на lamscan (man clamscan, или online documentation). Вы можете проверить сканер, выполнив: Очевидно, что местоположение файла журнала и сканируемый каталог могут быть любым. Затем выполним команду freshclam для обновления антивирусных баз:

Запуск freshclam в режиме демона

freshclam, используемый для обновления антивирусных баз может функционировать в режиме демона. Во-первых, создайте журнал для freshclam: Создайте сценарий /usr/local/etc/rc.d/clamav.sh, чтобы запускать freshclam во время начальной загрузки и позволить корректно завершать работу. Сделайте этот скрипт выполняемым:

Регулярное выполнение clamscan

Вы можете выполнять регулярное сканирование дисков с использованием демона cron. В документации Вы можете обнаружить достаточно много примеров для построения собственной схемы проверки. Например Вы можете определить опции --remove, --exclude и т.д.

(Пр.п в настоящее время в этом нет необходимости, так как с пакетом поставляется демон clamd и соответствующая утилита для сканирования clamdscan)

Данный пример сканирует в 6.00 утра каталог /usr: Примечание: Часть задания демона cron показана разбитой на строки для наглядности, в реальности это одна строка

Установка SpamAssassin

Сборка и установка из исходников

SpamAssassin имеется в системе портов, но там находится старая версия (2.41). (Пр.п - у меня в портах в настояшее время 2.63) Установка из системы портов будет выглядеть так: Или скачать и установить более свежую версию вручную: Создадим Makefile: В этом пункте perl выдаст предупреждение об имеющихся зависимостях. Установите необходимые модули используя инструкцию ниже.

Затем компиляция:

Проверка

Вы должны теперь проверить работу SpamAssassin на типовых файлах. Посмотрите результирующий файл spam.out. SpamAssassin должен добавить следующий заголовок к письму: Дополнительно, будет заголовок, объясняющий подробно, какие критерии применялись.

Затем, проверьте SpamAssassin на работу с подлинной электронной почтой: Должен быть добавлен только индикатор, о том, что сообщение не признано спамом: Примечание: SpamAssassin только помечает сообщение, которое он посчитал спамом с помощью заголовка X-Spam- . Он не удаляет спам и поэтому в этой цепочке требуется другой агент, удаляющий такие сообщения. Ниже дана краткая инструкция, как заставить procmail перемещать такие письма в отдельную папку.

Запуск SpamAssassin в режиме демона: spamd

Если SpamAssassin был установлен из системы портов, то сценарий запуска автоматически будет создан как /usr/local/etc/rc.d/spamd.sh. Если SpamAssassin был установлен вручную, то Вы должны создать сценарий запуска spamd (версия демона SpamAssassin), подобно тому, что создали выше для freshclam. Создайте следующий сценарий /usr/local/etc/rc.d/spamd.sh: Затем сделайте этот сценарий выполняемым и запустите его, так как qmail-scanner обнаружит SpamAssassin, только когда SpamAssassin запущен.

Использование procmail для фильтрации спама

Как отмечено выше, SpamAssassin только отмечает спам X-Spam- заголовками. Если Вы не предпримете больше никаких мер, то это письмо все равно окажется у Вас в почтовом ящике, но будет отмечено соответствующим заголовком. Общепринятым решением будет использовать procmail в качестве агента доставки и помещать подозрительные письма в отдельный каталог. Есть много хорошей документации по настройке и установке procmail, и полная настройка этой сложной программы не входит в состав этого документа. Если procmail уже установлен в Вашей системе, или Вы хотите его установить только для того, чтобы переносить спам в специальный каталог, то необходимо выполнить следующее:

Переносим все письма, отмеченные как "спам" в каталог $HOME/Maildir/.Spam/: Эти инструкции должны быть помещены в файл .procmailrc в домашнем каталоге каждого пользователя. Кроме того, помещая это в файле /usr/share/skel/dot.procmailrc мы гарантируем, что любой новый пользователь, будет иметь сгенерированный .procmailrc файл в своем домашнем каталоге. Каждый пользователь будет также должен иметь .Spam Maildir, куда будет складываться спам. Например, чтобы создать Maildir для paulh, введите: Чтобы заставить qmail вызывать procmail, в файле .qmail каждого пользователя должна быть следующая запись: Примечание: Установка и выполнение procmail довольно непростая задача. Читайте документацию и многочисленные FAQ.

Установка qmail-scanner

Установка maildrop

qmail-scanner зависит от команды reformime, доступной как часть пакета maildrop. maildrop доступен в в системе портов FreeBSD и может быть легко установлен:

Сборка и установка из исходников

Получаем и собираем из исходников: (Пр.п - в портах доступен qmail-scanner 1.2) Посмотрите возможные опции конфигурирования: Вы можете явно указать некоторые из параметров установки, которые больше подходят Вашей машине. Вы, как минимум измените --admin и --notify. Запустите процесс конфигурации, используя Ваши опции и опцию --install.

Для примера: Вы должны установить SUID бит на команде suidperl: Внимание: установка SUID бита является потенциальной угрозой безопасности! Оцените все послествия этого шага, но qmail-scanner не будет работать без этого изменения.

qmail-smtpd должен знать, что необходимо использовать сценарий qmail-scanner-queue.pl из /var/qmail/bin вместо стандартного qmail-queue. Если ваша машина использует tcpserver, чтобы обработать подключения с qmail-smtpd (как описано в Installing qmail under FreeBSD), /etc/tcp.smtp должна быть установлена переменная среды QMAILQUEUE. Точное содержание этого файла различно и зависит от конфигурации локальной сети. /etc/tcp.smtp файл, созданный в Installing qmail under FreeBSD изменился бы следующим образом: Перестроим правила tcpserver: В заключение перезапустим сервер qmail:

Проверка

Вместе с qmail-scanner поставляется несколько вирусных сигнатур, необходимых для проверки работы вирусного сканера: Это пошлет три письма на адрес, указанный в параметре --admin при инсталляции. Первый должен прибыть немодифицированным (хотя будет иметь X-Spam-Status: заголовок, если Вы установили SpamAssassin), но второй и третий, должен быть захвачен или внутренним вирусным сканером qmail-scanner или Clam AntiVirus. Перехваченная почта должна находиться в /var/spool/qmailscan/quarantine в формате Maildir.

Получение и установка модулей PERL с CPAN

В течении инсталляции Perl может жалобно вскрикнуть и пожаловаться на то, что ему, поганцу, нехватает модулей. Лечим очень просто, воспользуемся оболочкой CPAN: И оттуда уже закачиваем необходимый модуль:

Связь с авторами

Этот документ был написан Полем Ходли (Paul Hoadley) и Эриком Персонейджем (Eric Parsonage). Этот документ описывает, что мы делали с qmail-scanner, работающим совместно с Clam AntiVirus и SpamAssassin на двух системах, управляемых FreeBSD 4.7 Ваши результаты могут отличаться от приведенных здесь. Если вы обнаружили какие-либо ошибки, или нашли, что программное обеспечение работает существенно по-другому, пожалуйста, сообщите нам.

Статья взята с сайта DreamCatcher. Англоязычную версию можно найти по адресу: http://www.clamav.net/doc/0.70/FreeBSD-HowTo/qmail-scanner-how-to.html.

[ опубликовано 31/03/2004 ]

Paul Hoadley (paulh@logicsquad.net), Eric Parsonage (eric@eparsonage.com). Перевод: Михаил Сгибнев (mixa@dreamcatcher.ru) - Защита системы от вирусов и спама: устанавливаем Clam Antivirus и SpamAssassin на FreeBSD