Статьи о почте

Новости

Все новости

Разное в мире IT

Все заметки

mailinfo.ru - Статьи о почте

Защищаем свой почтовый сервер от вирусов

Прислал(а) Федосеев Виктор (aka Firebird) [29 августа 2002]

раздел: [Безопасность]

Полчища Klez-а переполнили чашу Вашего терпения и Вы решили наконец-то повесить на ваш почтовый сервер антивирус, чтобы ни один вирус не дошел до пользователей и у них не было соблазна запустить очередную игрушку, в результате запуска которой Вы в очередной раз делаете марш бросок по офису убивая ненависную заразу и на чем свет ругаю пользователей. Правильно - давно пора :-) Осталость только выбрать - что лучше поставить.

Среди всевозможных антивирусных систем я выбрал утилиту Mailscanner. Можно долго говорить - хорошо это или нет, но это есть и это, надо сказать, прекрасно работает. Mailscanner - это не антивирус - это просто набор perl скриптов, которые играют роль интерфейса между антивирусной программой и почтовым сервером. Вообще mailscanner может работать еще и как фильтр спама, но об этом позже.

Итак - что я использую. В качестве сервера используюется SuSE Linux 7.2. Вообще в состав данного дистрибутива (начиная с версии 7.2) уже входит подобный интерфейс - Amavis. Но эта программа требует модификации конфигурационного файла MTA агента. В принципе в этом нет ничего страшного, но зачем это делать, если можно обойтись без оного? Хотя без принципа идеология работы подобных систем одна - сначала куда-то кладется письмо, потом оно обрабатывается тем же Mailscanner-ом или тем же Amavis-ом, а потом обратно вызывается MTA агент и все уже чистенькое доставляется пользователям. Или не доставляется - все зависит от того, какие параметры Вы зададите. Такая система возможно либо посредством задания правил прямо в конфигурационном скрипте MTA агента, либо просто - запуск последнего со специальными ключами - метод работы от этого не меняется.

И так. Что имеем. ОС, как я уже говорил, SuSE Linux 7.2, MTA агент - sendmail, антивирус - McAfee и уже обозначенный Mailscanner. Для начала ставим антивирус. Это просто и ничего сложного в этом нет. По умолчанию инсталляционный скрипт McAfee ставит себя в /usr/local/uvscan Не будем ничего менять, пусть себе там и стоит. Далее берем MailScanner-номер версии-.tar.gz и распаковываем его. Куда-нибудь. Потом директорию "mailscanner" копируем к примеру в /opt. После этого скрипты из mcafee (в нашем случае - там еще есть набор скриптов для целого ряда антивирусов, к примеру для avp) копируем туда, куда мы проинсталлировали наш антивирус. В нашем случае в /usr/local/uvscan. После этого проверяем, чтобы символическая ссылка "autoupdate" указывала на скрипт "autoupdate.linux" и "mcafeewrapper" указывал на "mcafeewrapper.linux". Как я думаю Вы уже догадались - первый файл - это скрипт обновления антивирусных баз, а второй - это скрипт, который запускает антивирус (в нашем случае файл uvscan) с правильными параметрами. Далее, редактируем эти файлы для того, чтобы в них были указаны верные параметры. Первым открываем "autoupdate", ищем строку
my ($mcafeeroot) = \'что-то там\';
Вот эту конструкцию надо заменить на правильную, а именно, для нашего случая, на:
my ($mcafeeroot) = \'/usr/local/uvscan\';
Сохраняем файл. Далее открываем "mcafeewrapper", ищем там строку вида
PackageDir = что-то там
и меняем оную на
PackageDir = /usr/local/uvscan
Все - сохраняем файл. На этом мы с настройкой антивируса почти закончили. Переходим к настройке непосредственно mailscanner-а. Для этого идем в /opt/mailscanner, в котором уже есть директории /bin
/etc
/var
Сделаем еще в корне директорию MailArchive. Зачем она нужна - объясню потом. Итак. Пока не забыли. Быстро пробегаемся по содержимому директории /opt/mailscanner и устанавливаем следующие права доступа:

drwxr-xr-x 5 root other 512 May 15 14:12 /opt/mailscanner
drwxr-xr-x 1 root other 24 May 12 17:04 /opt/mailscanner/bin
drwxr-xr-x 2 root other 512 May 17 09:22 /opt/mailscanner/etc
-rw-r--r-- 1 root other 554 Oct 20 10:36 /opt/mailscanner/etc/deleted.message.txt
-rw-r--r-- 1 root other 552 Nov 3 17:23 /opt/mailscanner/etc/disinfected.report.txt
-rw-r--r-- 1 root other 1383 Oct 19 17:12 /opt/mailscanner/etc/filename.rules.conf
-rw-r--r-- 1 root other 930 Oct 20 11:46 /opt/mailscanner/etc/mailscanner.conf
-rw-r--r-- 1 root other 552 Nov 3 17:23 /opt/mailscanner/etc/sender.report.txt
-rw-r--r-- 1 root other 552 Oct 20 10:36 /opt/mailscanner/etc/stored.message.txt
drwxr-xr-x 5 root other 512 May 12 18:04 /opt/mailscanner/var
drwx------ 2 root other 512 Jun 14 09:09 /opt/mailscanner/var/incoming
drwx------ 2 root other 512 May 18 09:57 /opt/mailscanner/var/outgoing
drwx------ 15 root other 512 Jun 14 09:09 /opt/mailscanner/var/quarantine

Естественно, что времена создания и раpмеры файлов могут быть разные 8-) а вот все остальное - надо установить как указано. Да - если в диреткории /var нету каких-то директорий из "incoming", "outgoing" и "quarantine" создайте их.
Сделали. Далее идем широкой поступью в директорию /bin в котором сосредоточены основные скрипты mailscanner-а. Проверяем, чтобы "check_mailscanner" указывал на "check_mailscanner.linux". Открываем оный файл на редактирование. Видим там строчки:

virusdir = что-то
config - что-то

Вот это "что-то" меняем на

virusdir = /opt/mailscanne/bin
config = /opt/mailscanner/etc/mailscanner.conf

Все - с содержимым директории /bin покончено. Переходим к директории /etc. В этой диреткории находится основный конфигурационные файлы системы и файлы сообщений, которые будут отсылаться пользователям, администраторам, тем кто послал письмо, если в письме есть вирус. Но все попорядку. Основной конфигурационный файл системы называется "mailscanner.conf". Да - этот файл тоже обычно является символической ссылкой. Проверьте, чтобы он указывал на файл "mailscanner.conf.linux". В этом файле куча параметров и все они приведены здесь. Я остановлюсь лишь на основных. Во-первых выставляем все параметры для используемого нами MTA агента, а именно sendmail. Вообще по умолчанию там все как раз для него и выставлено, так что ничего особенно выставлять и не нужно. Далее - меняем все пути, на "/opt/mailscanner", к примеру для параметра

Incoming Work Dir = что-то/var/incoming

выставляем параметр

Incoming Work Dir = opt/mailscanner/var/incoming

И так далее. После этого меняем значение Host Name на что-то свое, к примеру

Host Name = Linux.ru website

Далее. Прописываем параметры, соответствующие выбранному нами антивирусу. Напоминаю, что в нашем случае это mcafee. Итак:

Virus Scanner = mcafee

........

Далее прописываем путь собственно к антивирусу:

Sweep = /usr/local/uvscan/mcafeewrapper

Далее ищем строку

LocalDomains = чему-то

Если у Вас один домен, к примеру linux.ru, то тогда прописываем в этой строке

LocalDomains = linux.ru

Если же несколько, то тогда лучше их прописывать в отдельном файле:

LocalDomains = /opt/mailscanner/etc/localdomains.conf

И в этом файле мы и прописываем все виртуальные домены, которые живут на нашем сервере. Прямо так, столбиком :-)

Ну вроде все. В основном с файлом конфигурации мы закруглились. Если что-то хотим подправить - то правим :-) Но уже все основное мы сделали. Теперь, если хотим, мы можем написать все что угодно в файлах .txt в которых пишутся и рассылаются системные сообщения. А можно ничего не писать - сообщения тогда будут "по-умолчанию" и по-английски. Если же будете переводить, ч настоятельно рекомендую оставлять и английский текст. А то мне не всегда понятно, когда мне прихотят сообщения об ошибках, к примеру, на китайском... Итак, конфигурирование mailscanner окончено. Да! Совсем забыл. В mailscanner.conf есть одна веселая опция - ArchiveMail. Если у этой опции параметр yes, то тогда ВСЯ исходящая и входящая почта будет храниться в директории Archive Mail Dir. Только учтите. Эта диреткория очень быстро запоняется...

Теперь перейдем к конфигурированию sendmail.
Для начала проверим есть ли директории

/var/spool/mqueue
/var/spool/mqueue.in
Если есть - хорошо, если нет, создаем. Потом проверяем права доступа на эти диреткории

# cd /var/spool
# ls -ld mqueue
drwxr-x--- 2 root bin 62976 Oct 23 16:18 mqueue
# mkdir mqueue.in
# chown root mqueue.in
# chgrp bin mqueue.in
# chmod u=rwx,g=rx,o-rwx mqueue.in
# ls -ld mqueue mqueue.in
drwxr-x--- 2 root bin 62976 Oct 23 16:18 mqueue
drwxr-x--- 2 root bin 41472 Oct 23 16:18 mqueue.in

Далее. По умолчанию в конфигах sendmail прописана рабочая диреткория как /var/mqueue. Вот лучше убить эту директию и сделать символическую ссылку /var/mqueue на /var/spool/mqueue. С sendmail вроде все. Теперь init скрипты и cron.
Сначала запишем в расписание основные вещи, которые надо делать периодически, к примеру обновлять антивирусные базы. Итак, идем в /etc/crontab и прописываем там:

0 1 * * * root /usr/local/uvscan/autoupdate
Это мы прописали еженочное обновление антивирусных баз McAfee. И еще добавляем одну строчку:

# 18/05/2000 JKF Ensure my e-mail virus scanner is still running 0,20,40 * * * * [ -x /opt/mailscanner/bin/check_mailscanner ] && /opt/mailscanner/bin/check_mailscanner >/dev/null 2>&1

Она периодически проверять наш mailscanner на то - не упал ли он и если вдруг упал - то запускает его вновь. Вроде с расписанием все. Сохраняем наш файл и идем к init скриптам. В каждом дисртибутиве они выглядят по-разному, но общая идея одна, сделать так, чтобы sendmail запускался с параметрами

sendmail -bd -ODeliveryMode=queueonly -OQueueDirectory=/var/spool/mqueue.in -q15m

Обычно в качестве параметров для sendmail стоит строка вида:

sendmail -bd -q15m

Init скрипт для sendmail в SuSE находится в /etc/rc.config.d/sendmail.rc.config

Ну все. Переинициализируем sendmail - в SuSE - rcsendmail restart - запускаем mailscanner - /opt/mailscanner/bin/check_mailscanner и наслаждаемся жизнью. Удачи!