21.8. Настройка Clam Anti-Virus на сервере Postfix

Проблема
Требуется установить на почтовом сервере Postfix хорошую антивирусную про грамму, которая бы автоматически сканировала всю входящую почту и блокиро вала зараженные сообщения.
Решение
Используйте Clam Anti-Virus и Amavisd-new на сервере Postfix. Amavisd-new —
«обертка» Perl, выполняющая функции посредника для управления потоком со общения между Clam AV и Postfix. Сама по себе программа Clam AV не может
напрямую сканировать входящие сообщения.
Обратите внимание: это Решениепринципиально отличается от предыдущих,
в которых описывалась настройка антиспамовых ограничений и белых списков
в Postfix. В данном случае работу будет выполнять Amavisd-new, а не Postfix.
Пользователям систем на базе RPM понадобятся пакеты clamav и amavisd-new,
а пользователям Debian — пакеты amavisd-new, clamav, clamav-base, clamav-daemon
и clamav-freshclam.
Прежде чем вносить какие-либо изменения, создайте резервную копию кон фигурационных файлов. Затем переходите к настройке Amavisd-new. Создайте
файл /var/log/amavis.log; назначьте его владельцем пользователя и группу amavis,
которые должны быть созданы системой управления пакетами.
Отредактируйте файл/etc/amavis/amavisd.conf. В секции 1 присвойте значения
переменным $mydomain и $myhostname и раскомментируйте следующие строки:
$forward_method = 'smtp:127.О.О.1:10025'; # Для пересылки проверенной почты
$notify_method = $forward_method; # Для отправки оповещений
Отключите карантинную блокировку вирусов в секции 4, потому что сообще ния, зараженные вирусами, будут отвергаться на уровне SMTP. Нет смысла со хранять их, ведь подавляющее большинство таких сообщений генерируется авто матически и имеет поддельные обратные адреса.
SQUARANTINEDIR = undef:
Svirusquarantineto » undef:
Также в секции 4 отключите автоматическое оповещение отправителя. Как пра вило, обратный адрес является фиктивным; бессмысленно посылать по нему со общения «Эй, вы отправили мне вирус!» Следующая директива отвергает зара женные сообщения без каких-либо оповещений:
$final_virus_destiny = DDISCARD; # (По умолчанию D BOUNCE)
Теперь найдите секцию 7 и раскомментируйте подсекцию Clam AV. Заком ментируйте все вирусные сканеры, не используемые в вашей системе:
Ш http://www.damav.net/
['Clam Antivirus-clamd',
\&ask_daemon. ["CONTSCAN { } \ n " . "/var/run/clamav/clamd.ctl11].
352 Глава 21. Борьба со спамом и вредоносными программами
qr/\bOK$,qr/\bFOUND$/,
qi-Г.*?: (?!Infected archived.*) FOUND?/ ],
Остановите Amavisd-new и проверьте конфигурацию встроенным отладчиком:
# /etc/init.d/amavis stop
# amavis debug
Команда выводит сводное описание конфигурации; вас интересуют только со общения об ошибках. Теперь снова запустите Amavisd-new, подключитесь через
telnet и убедитесь в том, что Amavisd-new работает:
# /etc/init.d/amavis start
$ telnet 127.0.0.1 10024
Trying 127.0.01...
Connected to 127.0.0.1
Escape character is ' * ] '
270 [127.0.0.1] ESMTP amavisd-new service ready
Amavisd-new работает, выходите из telnet:
te!net> quit
Connection closed.
Теперь настройте Postfix для использования программы Amavisd-new, кото рая теперь будет выполнять функции прокси-сервера SMTP. Включите следую щий фрагмент в конец файла /etc/postfix/master.cf.
smtp-amavis unix - - n

• 2 smtp
-o smtp_data_done_timeout=1200

•o disable_dns_1ookups=yes
127.0.0.1:10025 inet n

• n - - smtpd

•o content_filter=
- о recei veoverri deopti ons=no_unknown_reci pi ent_checks.no_header_body_checks
-o local_recipient_maps=

•o relay_recipient_maps=
-o smtpdj-estriction_classes=
-o smtpd_client_restrictions=
-o smtpdjie1o_restrictions=
-o smtpd_sender_restrictions=
- о smtpd_reci pi entrestri ctions=permitmynetworks,reject
-o mynetworks=127.0.0.0/8
-o smtpdauthorizedxforward hosts=127.0.0.0/8

•o strict_rfc821_envelopes=yes
Включите следующую строку в /etc/postfix/main.cf:
content_filter = smtp-amavis:[127.0.0.1]:10024
Перезапустите Postfix:
# /etc/init.d/postfix stop
# /etc/init.d/postfix start
Назначьте пользователя amavis владельцем Clam AV, иначе программа работать
не будет. Сначала откройте файлы /etc/damav/clamav.conf и/etc/arnavis/amavisd.conf
и убедитесь в том, что amavisd.conf содержит ссылку на файл LocalSocket:
# /etc/clamav/clamav.conf
Local Socket /var/run/claraav/clamd.ctl
/etc/amavi s/amavi sd.conf
5s http://www.clamav.net/
['Clam Antivirus-clamd'.
\&ask_daemon,["CONTSCAN {}\n", "/var/run/clamav/clamd.ctl"],
qr/\bOK$/, qr/\bFOUND$/,
qi-Г.*?: (?!Infected Archive)(.*) F0UND$/ ] ,
Теперь пользователь amavis назначается владельцем всех каталогов, исполь зуемых Clam AV. В нашем примере это каталоги:
О /var/log/clamav (файл clamav.bg);
О /var/run/clamav (файл clamd.pid);
О /var/lib/clamav (каталог базы данных).
Пример:
# chown -R amavis:amavis /var/log/clamav/
Будьте внимательны! Изменяйте только те каталоги, которые принадлежат ис ключительно Clam AV; все файлы в общих каталогах должны настраиваться по
отдельности. Теперь откройте /etc/damav/freshclam.conf и проделайте то же самое
с каталогами, перечисленными в этом файле. Наконец, найдите файлы, принад лежащие Clam AV, в каталоге/etc/log rotate, d/. Например:
О /etc/logrotate.d/damav-daemon;
о /etc/logrotate.d/damav-freshclam.
Имена файлов могут быть другими. Найдите в каждом файле строку
create 640 clamav adm
и приведите ее к виду
create 640 clamav amavis
Сохраните изменения и перезапустите как clamd, так и freshclam. В Debian это
делается командами
# /etc/init.d/clamav-daemon reload
# /etc/init.d/freshclam reload
В Red Hat и Fedora соответствующие команды выглядят так:
# /etc/init.d/clamd reload
# /etc/init.d/freshclam reload
Комментарий
Установка из пакетов (вместо сборки по исходным текстам) сэкономит вам массу
времени. Если вы обязательно должны компилировать программу самостоятель но, прочитайте всю документацию. Всех пользователей, каталоги и сценарии init
вам придется создавать вручную.
Два основных компонента Clam AV — clamd, демон сканирования, и freshclam,
модуль автоматической подгрузки обновлений баз данных вирусов. Их настрой ка задается в файлах /etc/clamav/damav.conf и /etc/damav/freshclam.conf соответ ственно.
См. также
Файл Postfix FILTERREADME; локальная документация Amavisd-new (/usr/
share/doc/amavisd-new, amavisd-new(8) и /usr/share/doc/amavisd-new.README. postfix);
354 Глава 21. Борьба со спамом и вредоносными программами
локальная документация Clam AV (/usr/share/doc/clamav); Clam Anti-Virus (http://
www.clamav.net); Amavisd-new (http://www.ijs.si/software/amavisd).