The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]

Устанавливаем Clam Antivirus и SpamAssassin на FreeBSD (virus clamav spam mail freebsd qmail)


<< Предыдущая ИНДЕКС Поиск в статьях src Установить закладку Перейти на закладку Следующая >>
Ключевые слова: virus, clamav, spam, mail, freebsd, qmail,  (найти похожие документы)
From: Сгибнев Михаил <http://www.dreamcatcher.ru>; Newsgroups: http://www.dreamcatcher.ru/ Date: Mon, 20 Sep 2004 18:21:07 +0000 (UTC) Subject: Устанавливаем Clam Antivirus и SpamAssassin на FreeBSD Оригинал: http://www.dreamcatcher.ru/docs/clamav.html Защита системы от вирусов и спама: устанавливаем Clam Antivirus и SpamAssassin на FreeBSD Paul Hoadley Eric Parsonage Copyright © 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. Связь с авторами Вводные ------- Примем следущие вводные: * В системе в качестве транспортного агента используется qmail, так как следующие далее инструкции не будут работать с sendmail. Инструкцию о том, как установить qmail вместо sendmail, читайте в Installing qmail under FreeBSD. http://www.clamav.net/doc/0.70/FreeBSD-HowTo/qmail-how-to.html * qmail должен быть откомпилирован с опцией WITH_QMAILQUEUE_PATCH в стадии компоновки. Если установка qmail производилась согласно Installing qmail under FreeBSD, то это было сделано. SpamAssassin и Clam AntiVirus необходимо установить до установки qmail-scanner, поскольку он пытается автоматически обнаружить доступные сторонние сканеры во время инсталляции. Установка Clam AntiVirus ------------------------ Установка из исходных текстов (Пр.п - в оригинальном документе указывается, что clamav нет в системе портов, но в настоящее время он находится в /usr/ports/security/clamav) Получаем и распаковываем исходники: # cd /usr/local # mkdir clamav # cd clamav # fetch http://clamav.elektrapro.com/stable/clamav-0.51.tar.gz # gunzip clamav-0.51.tar.gz # tar -xvf clamav-0.51.tar.gz Создаем нового пользователя и группу для Clam AntiVirus: # pw groupadd clamav # pw useradd clamav -g clamav -d /nonexistent -c "Clam Antivirus" \ -s /sbin/nologin Конфигурируем и устанавливаем Clam AntiVirus: # cd clamav-0.51 # ./configure # make install Проверка работоспособности Вы должны почитать документацию на lamscan (man clamscan, или online documentation http://clamav.elektrapro.com/doc/html). Вы можете проверить сканер, выполнив: # clamscan --recursive --log=/tmp/clamscan.log /usr/home Очевидно, что местоположение файла журнала и сканируемый каталог могут быть любым. Затем выполним команду freshclam для обновления антивирусных баз: # freshclam --verbose Запуск freshclam в режиме демона freshclam, используемый для обновления антивирусных баз может функционировать в режиме демона. Во-первых, создайте журнал для freshclam: # touch /var/log/freshclam.log # chmod 644 /var/log/freshclam.log # chown clamav:clamav /var/log/freshclam.log Создайте сценарий /usr/local/etc/rc.d/clamav.sh, чтобы запускать freshclam во время начальной загрузки и позволить корректно завершать работу. -------------------------------------------------------- #!/bin/sh # # Startup / shutdown script for Clam Antivirus case "$1" in start) /usr/local/bin/freshclam -d -c 2 -l /var/log/freshclam.log echo -n ' freshclam' ;; stop) /usr/bin/killall freshclam > /dev/null 2>&1 \ && echo -n ' freshclam' ;; *) echo "" echo "Usage: `basename $0` { start | stop }" echo "" exit 64 ;; esac -------------------------------------------------------- Сделайте этот скрипт выполняемым: # chmod 744 /usr/local/etc/rc.d/clamav.sh Регулярное выполнение clamscan Вы можете выполнять регулярное сканирование дисков с использованием демона cron. В документации Вы можете обнаружить достаточно много примеров для построения собственной схемы проверки. Например Вы можете определить опции --remove, --exclude и т.д. (Пр.п в настоящее время в этом нет необходимости, так как с пакетом поставляется демон clamd и соответствующая утилита для сканирования clamdscan) Данный пример сканирует в 6.00 утра каталог /usr: 6 * * * root /usr/local/bin/clamscan --recursive --infected --exclude /usr/local/share/clamav/viruses.db --exclude /usr/local/share/clamav/viruses.db2 --log=/var/log/clamscan.log /usr/home Примечание: Часть задания демона cron показана разбитой на строки для наглядности, в реальности это одна строка Установка SpamAssassin ---------------------- Сборка и установка из исходников SpamAssassin имеется в системе портов, но там находится старая версия (2.41). (Пр.п - у меня в портах в настояшее время 2.63) Установка из системы портов будет выглядеть так: # cd /usr/ports/mail/p5-Mail-SpamAssassin # make # make install Или скачать и установить более свежую версию вручную: # cd /usr/local # mkdir spamassassin # cd spamassassin # fetch http://spamassassin.taint.org/released/Mail-SpamAssassin-2.43.tar.gz # gunzip Mail-SpamAssassin-2.43.tar.gz # tar -xvf Mail-SpamAssassin-2.43.tar # cd Mail-SpamAssassin-2.43 Создадим Makefile: # perl Makefile.PL В этом пункте perl выдаст предупреждение об имеющихся зависимостях. Установите необходимые модули используя инструкцию [15]ниже. Затем компиляция: # make # make install Проверка Вы должны теперь проверить работу SpamAssassin на типовых файлах. # spamassassin -t < sample-spam.txt > spam.out Посмотрите результирующий файл spam.out. SpamAssassin должен добавить следующий заголовок к письму: X-Spam-Status: Yes, hits=14.7 required=5.0 tests=ALL_CAPS_HEADER,CALL_FREE,DATE_IN_PAST_24_48, DRASTIC_REDUCED,FROM_HAS_MIXED_NUMS,HOME_EMPLOYMENT, INVALID_DATE,INVALID_MSGID,LINES_OF_YELLING, MSGID_HAS_NO_AT,NO_REAL_NAME,ONCE_IN_LIFETIME,REMOVE_SUBJ, SMTPD_IN_RCVD,SPAM_PHRASE_21_34,UNDISC_RECIPS version=2.43 X-Spam-Flag: YES X-Spam-Level: ************** X-Spam-Checker-Version: SpamAssassin 2.43 (1.115.2.20-2002-10-15-exp) Дополнительно, будет заголовок, объясняющий подробно, какие критерии применялись. Затем, проверьте SpamAssassin на работу с подлинной электронной почтой: # spamassassin -t < sample-nonspam.txt > nonspam.out Должен быть добавлен только индикатор, о том, что сообщение не признано спамом: X-Spam-Status: No, hits=0.9 required=5.0 tests=GAPPY_TEXT,LINES_OF_YELLING,PGP_SIGNATURE, SPAM_PHRASE_02_03,TO_BE_REMOVED_REPLY version=2.43 X-Spam-Level: Примечание: 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: -------------------------------------------------------- #!/bin/sh # # Startup / shutdown script for SpamAssassin daemon case "$1" in start) /usr/bin/spamd -a -d && echo -n ' spamd' ;; stop) spamdpid=`ps -ax | grep spamd | grep -v grep | grep -v sh | awk '{ print $1 }'` if [ "$spamdpid" != "" ]; then kill $spamdpid > /dev/null 2>&1 echo -n " spamd" fi ;; *) echo "Usage: `basename $0` {start|stop}" >&2 ;; esac exit 0 -------------------------------------------------------- Затем сделайте этот сценарий выполняемым и запустите его, так как qmail-scanner обнаружит SpamAssassin, только когда SpamAssassin запущен. # chmod 744 /usr/local/etc/rc.d/spamd.sh # /usr/local/etc/rc.d/spamd.sh start Использование procmail для фильтрации спама Как отмечено выше, SpamAssassin только отмечает спам X-Spam- заголовками. Если Вы не предпримете больше никаких мер, то это письмо все равно окажется у Вас в почтовом ящике, но будет отмечено соответствующим заголовком. Общепринятым решением будет использовать procmail в качестве агента доставки и помещать подозрительные письма в отдельный каталог. Есть много хорошей документации по настройке и установке procmail, и полная настройка этой сложной программы не входит в состав этого документа. Если procmail уже установлен в Вашей системе, или Вы хотите его установить только для того, чтобы переносить спам в специальный каталог, то необходимо выполнить следующее: Переносим все письма, отмеченные как "спам" в каталог $HOME/Maildir/.Spam/: :0: * ^X-Spam-Status: Yes $HOME/Maildir/.Spam/ Эти инструкции должны быть помещены в файл .procmailrc в домашнем каталоге каждого пользователя. Кроме того, помещая это в файле /usr/share/skel/dot.procmailrc мы гарантируем, что любой новый пользователь, будет иметь сгенерированный .procmailrc файл в своем домашнем каталоге. Каждый пользователь будет также должен иметь .Spam Maildir, куда будет складываться спам. Например, чтобы создать Maildir для paulh, введите: # su paulh # cd $HOME # /var/qmail/bin/maildirmake Maildir/.Spam # exit Чтобы заставить qmail вызывать procmail, в файле .qmail каждого пользователя должна быть следующая запись: |IFS=' ' && exec /usr/local/bin/procmail -f- || exit 75 Примечание: Установка и выполнение procmail довольно непростая задача. Читайте документацию и многочисленные FAQ. Установка qmail-scanner ----------------------- Установка maildrop qmail-scanner зависит от команды reformime, доступной как часть пакета maildrop. maildrop доступен в в системе портов FreeBSD и может быть легко установлен: # cd /usr/ports/mail/maildrop # make # make install Сборка и установка из исходников Получаем и собираем из исходников: (Пр.п - в портах доступен qmail-scanner 1.2) # cd /usr/local # mkdir qmail-scanner # fetch http://telia.dl.sourceforge.net/sourceforge/qmail-scanner/qmail-scanner-1.14.tgz # gunzip qmail-scanner-1.14.tgz # tar -xvf qmail-scanner-1.14.tar # cd qmail-scanner-1.14 Посмотрите возможные опции конфигурирования: # ./configure --help Вы можете явно указать некоторые из параметров установки, которые больше подходят Вашей машине. Вы, как минимум измените --admin и --notify. Запустите процесс конфигурации, используя Ваши опции и опцию --install. Для примера: # ./configure --admin postmaster --notify "recips,admin" --install Вы должны установить SUID бит на команде suidperl: # chmod 4511 /usr/bin/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 изменился бы следующим образом: 192.168.0.:allow,RELAYCLIENT="",QMAILQUEUE="/var/qmail/bin/qmail-scanner-queue.pl" 127.:allow,RELAYCLIENT="",QMAILQUEUE="/var/qmail/bin/qmail-scanner-queue.pl" :allow,QMAILQUEUE="/var/qmail/bin/qmail-scanner-queue.pl" Перестроим правила tcpserver: # /usr/local/bin/tcprules /etc/tcp.smtp.cdb /etc/tcp.smtp.tmp < /etc/tcp.smtp В заключение перезапустим сервер qmail: # /usr/local/etc/rc.d/qmail.sh stop # /usr/local/etc/rc.d/qmail.sh start Проверка Вместе с qmail-scanner поставляется несколько вирусных сигнатур, необходимых для проверки работы вирусного сканера: # cd /usr/local/qmail-scanner/qmail-scanner-1.14 # ./contrib/test_installation.sh -doit Это пошлет три письма на адрес, указанный в параметре --admin при инсталляции. Первый должен прибыть немодифицированным (хотя будет иметь X-Spam-Status: заголовок, если Вы установили SpamAssassin), но второй и третий, должен быть захвачен или внутренним вирусным сканером qmail-scanner или Clam AntiVirus. Перехваченная почта должна находиться в /var/spool/qmailscan/quarantine в формате Maildir. Получение и установка модулей PERL с CPAN В течении инсталляции Perl может жалобно вскрикнуть и пожаловаться на то, что ему, поганцу, нехватает модулей. Лечим очень просто, воспользуемся оболочкой CPAN: # perl -MCPAN -e shell И оттуда уже закачиваем необходимый модуль: cpan> install Time::HiRes Связь с авторами This document was written by Paul Hoadley and Eric Parsonage. This document describes what we did to get qmail-scanner co-operating with Clam AntiVirus and SpamAssassin on two FreeBSD 4.7 systems. Your mileage may vary. If you notice any errors in this document, or your experience with the software used was vastly different, please let us know.

<< Предыдущая ИНДЕКС Поиск в статьях src Установить закладку Перейти на закладку Следующая >>

Обсуждение [ RSS ]
  • 1, Andrey (??), 19:55, 03/03/2005 [ответить]  
  • +/
    Пока не добавил в $HOME/.procmailrc
    :0:
    $HOME/Maildir/
    и не удалил из .qmail ./Maildir/
    cпам продолжал приходить, хотя и складывался в указанную директорию.
     

    игнорирование участников | лог модерирования

     Добавить комментарий
    Имя:
    E-Mail:
    Заголовок:
    Текст:




    Партнёры:
    PostgresPro
    Inferno Solutions
    Hosting by Hoster.ru
    Хостинг:

    Закладки на сайте
    Проследить за страницей
    Created 1996-2024 by Maxim Chirkov
    Добавить, Поддержать, Вебмастеру