Защищаем свой почтовый сервер от вирусов
Итак. Полчища 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 и наслаждаемся жизнью. Удачи!
|