СЕРГЕЙ ЯРЕМЧУК, фрилансер. Автор более 800 статей и шести книг. С «СА» с первого номера. Интересы: сетевые технологии, защита информации, свободные ОС
Расширяем возможности MailScanner
В прошлой статье вы рассмотрели возможности и установили почтовый сканер MailScanner. Сегодня мы познакомим вас с дополнительными программами, позволяющими просмотреть статистику работы системы защиты электронной почты.
Веб-интерфейс MailWatch
MailWatch [2] представляет собой инструмент, предназначенный для работы и настройки MailScanner, использующий веб-технологии. Написан на PHP, MySQL и JpGraph, распространяется под лицензией GNU GPL. Для записи в базу данных применяются свои собственные функции пользователя (CustomFunctions).
Основные возможности:
- Отображение очереди входящей и исходящей почты (пока только для Sendmail/Exim), вывод информации о средней загрузке и количестве сообщений за текущий день, спаме, вирусах и блокированного контента.
- Подсвечивание недавно обработанной почты.
- Вывод подробной информации по каждому сообщению.
- Управление почтой, попавшей в карантин (т.е. ее можно просматривать, разрешать, удалять, переобучать спам-фильтры).
- Просмотр статуса работы вирус-сканера (пока только для Sophos), базы данных MySQL и вывод файла настроек MailScanner.
- При работе с Sendmail имеется возможность проверить и вывести размеры очереди почты и информацию о пересылке.
- Разграничение информации для пользователей, домена и администратора. Поддержка XML-RPC позволяет использовать несколько инсталляций MailScanner/MailWatch как единое целое.
- Вывод самых разнообразных отчетов.
Настройка MailWatch
Процесс настройки MailWatch можно условно разделить на три части: создание необходимых баз и таблиц в MySQL, изменение параметров доступа веб-сервера и редактирование конфигурационного файла MailScanner.conf. В документации этот процесс описан подробно, но некоторые параметры объяснены плохо, поэтому пройдем все три этапа. Для работы потребуются права суперпользователя. Распаковываем файл с архивом в рабочий каталог.
# tar xzvf mailwatch-1.0.2.tar.gz
# su mailwatch
И приступаем к созданию баз и таблиц.
# /etc/init.d/mysqld start
Starting safe_mysqld service: [ DONE ] |
Таблицы можно создавать и вручную, но проще воспользоваться готовым скриптом.
# mysql –u root -p < create.sql
Создаем пользователя, от имени которого MailWatch будет работать с базой данных.
# mysql –u root –p
Enter password: ******
mysql> GRANT ALL ON mailscanner.* TO mailwatch@localhost IDENTIFIED BY "password";
Query OK, 0 rows affected (0.12 sec)
|
Для интереса посмотрим созданные таблицы.
mysql> SHOW TABLES;
+----------------------------+
| Tables_in_mailscanner |
+----------------------------+
| audit_log |
| blacklist |
| geoip_country |
| inq |
| maillog |
| mcp_rules |
| mtalog |
| outq |
| sa_rules |
| saved_filters |
| user_filters |
| users |
| whitelist |
+----------------------------+
13 rows in set (0.00 sec)
|
Все пользователи для доступа через веб-интерфейс должны иметь запись в таблице users.
mysql> DESCRIBE users;
+-------------------+---------------------------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+-------------------+---------------------------+------+-----+---------+-------+
| username | varchar(60) | | PRI | | |
| password | varchar(32) | YES | | NULL | |
| fullname | varchar(50) | | | | |
| type | enum("A","D","U","R","H") | YES | | NULL | |
| quarantine_report | tinyint(1) | YES | | 0 | |
+-------------------+---------------------------+------+-----+---------+-------+
5 rows in set (0.10 sec)
|
Поле username должно устанавливаться в зависимости от значения поля type. Для обычных пользователей оно содержит почтовый адрес и используется при регистрации и работе с почтой. Поле password, думаю, понятно без объяснений, а в fullname заносят реальное имя пользователя. Поле type указывает на привилегии, которые будет иметь пользователь. Так, U (User) означает обычные привилегии, такой пользователь будет способен работать с почтой, редактировать черный и белый списки только для указанного почтового адреса, совпадающего с username. При установке типа D (Domain Administrator) в поле username в таком случае указывается домен, а пользователь может работать с письмами и спам-листами для всего домена. Тип A (Administrator) – администратор предназначен для работы с самим MailWatch, H зарезервирован для остальных случаев. И наконец R (user Regular expression) предназначен для тех случаев, когда у пользователя имеется несколько почтовых адресов, используя этот тип, он получает возможность работать одновременно с несколькими. Поле quarantine_report позволяет просматривать данные карантина. Для первоначальной работы достаточно создать администратора, для всех остальных можно использовать веб-интерфейс (остальные подробности смотрите в файле USER_FILTERS документации). К сожалению, готовых скриптов, позволяющих импортировать пользователей в комплекте, нет, что при большом их количестве неудобно. Поэтому этим придется заниматься самому.
mysql> INSERT INTO users VALUES ("grinder@test.ru",md5("pasword"),"sergej","A","1");
Query OK, 1 row affected (0.46 sec) |
С базой все, выходим.
mysql> quit
Теперь файл MailWatch.pm, в котором редактируем следующие параметры (по умолчанию почему-то используется root).
my($db_name) = "mailscanner";
my($db_host) = "localhost";
my($db_user) = "mailwatch";
my($db_pass) = "password";
Затем перемещаем его в каталог CustomFunctions.
# mv MailWatch.pm /opt/MailScanner/lib/MailScanner/MailScanner/CustomFunctions
Аналогичные параметры редактируем и в скрипте SQLBlackWhiteList.pm, который позволяет пользователю самому создавать белый и черный списки и заносить их в базу данных. После чего помещаем его на место:
# mv SQLBlackWhiteList.pm /opt/MailScanner/lib/MailScanner/MailScanner/CustomFunctions
И переходим к следующему этапу.
Папку mailscanner, содержащую php-скрипты, помещаем в рабочий каталог веб-сервера.
# mv mailscanner /var/www/html/
И устанавливаем необходимые права доступа для каталогов, в которых будут создаваться и храниться графики.
# chown root:apache /var/www/html/mailscanner/images
# chmod ug+rwx /var/www/html/mailscanner/images
# chown root:apache /var/www/html/images/cache
# chmod ug+rwx /var/www/html/images/cache
Для настройки параметров доступа к базе данных используется файл conf.php. Берем в качестве основы conf.php.example и редактируем его.
// Database settings
define(DB_TYPE, "mysql’);
define(DB_USER, "mailwatch");
define(DB_PASS, "password");
define(DB_HOST, "localhost");
define(DB_NAME, "mailscanner");
Также следует проверить значение переменной MS_LIB_DIR, которая должна указывать на каталог, в который установлен MailScanner, в нашем случае это /opt/MailScanner. А переменная MS_CONFIG_DIR на каталог, в котором расположен конфигурационный файл MailScanner.conf, т.е. /opt/MailScanner/etc/, иначе может произойти такая ошибка.
Warning: fopen(/etc/MailScanner/MailScanner.conf):
failed to open stream: No such file or directory in /var/www/html/mailscanner/functions.php on line 860
Cannot open MailScanner configuration file
|
Переименовываем файл.
# mv conf.php.example conf.php
Для MailScanner версии 4.43 и выше можно использовать флаг управления карантином, но в этом случае необходимо отключить используемый самим MailScanner скрипт clean.quarantine, запускаемый через cron. Далее активируем QUARANTINE_USE_FLAG, т.е. меняем false на true. Ниже настраиваем параметры отправки сообщения по электронной почте о поступлении письма в карантин.
Для вывода очереди сообщений (Sendmail и Exim) необходимо активировать переменную MAILQ. Затем скрипт mailq.php запускаем через cron.
# cp /var/www/html/mailscanner/mailq.php /usr/local/bin
# crontab -e
0-59 * * * * /usr/local/bin/mailq.php
Редактируем MailScanner.conf:
Always Looked Up Last = &MailWatchLogging
Detailed Spam Report = yes
Quarantine Whole Message = yes
Quarantine Whole Message As Queue Files = no
Include Scores In SpamAssassin Report = yes
Quarantine User = root
QuarantineGroup = apache # т.е. та же что и у веб-сервера
Quarantine Permissions = 0660
# И для редактирования спам-списков.
Is Definitely Not Spam = &SQLWhitelist
Is Definitely Spam = &SQLBlacklist
После чего запускаем MailScanner:
# /opt/MailScanner/bin/check_mailscanner
В /var/log/maillog должна появится запись о работе с MailWatch и соединении с MySQL.
Jan 2 10:48:12 grinder MailScanner[26388]: MailScanner E-Mail Virus Scanner version 4.45.4-1 starting...
Jan 2 10:48:13 grinder MailScanner[26388]: Config: calling custom init function MailWatchLogging
Jan 2 10:48:14 grinder MailScanner[26388]: Initialising database connection
Jan 2 10:48:14 grinder MailScanner[26388]: Finished initialising database connection
|
Теперь пробуем зайти на MailWatch, набрав в строке веб-браузера http://localhost/mailscanner/ и использовав в качестве логина и пароля данные администратора, созданного ранее и занесенного в таблицу users. Все, теперь можете заводить пользователей (рис. 1), просматривать отчеты, редактировать спам-листы и прочее. В документации довольно подробно описан процесс настройки MailScanner и MailWatch для работы с байесовскими фильтрами и настройка просмотра релейных сообщений для Sendmail, поэтому говорить о них не будем.
Рисунок 1. Создание нового пользователя для доступа к MailWatch
Мониторинг почтового сервера при помощи MRTG
Если MailWatch больше ориентирован на работу и более тонкую настройку самого MailScanner, то mailscanner-mrtg [3] помогает разобраться с работой почтового сервера в целом, выводя различные статистики о работе последнего. Используя его, можно получить следующую информацию:
- Mail Relayed – общее число сообщений, обработанных системой, синяя линия указывает на количество полученных сообщений, затененная область – количество получателей (одно сообщение может иметь многочисленных получателей).
- Spam Identified – число сообщений, определенных как спам. Затененная область включает все сообщения, заблокированные всеми возможными средствами: правилами MTA, RBL в MailScanner и SpamAssassin. Синяя линия показывает сообщения, заблокированные только на уровне MTA.
- Spam as Percentage of Total Mail – процент представленной почты, определенной как спам. Отличие заключается в том, что представленная почта включает сообщения, отвергнутые MTA, т.е. не дошедшая до MailScanner.
- Mail Containing a Virus or Failing Content Checks – общее число обнаруженных сообщений, содержащих вредный контент. Затененная область представляет заблокированные, изолированные, удаленные сообщения, содержащие вирусы, запрещенные расширения, имена и типы файлов, html-код. Синяя линия показывает обнаруженные вирусными сканерами.
- MTA Processes Running и Copies Of MailScanner Running – индикаторы работы MTA и MailScanner.
- Bytes of Mail Transferred – этот граф, показывающий количество информации, прошедшей через MTA, позволяет оценить нагрузку, вызванную внешней почтой. В течение дня график должен расти равномерно, резкие всплески или плоский график могут свидетельствовать о проблемах.
- Ram Usage – использование памяти. Затененная линия показывает количество ОЗУ с используемым дисковым кешем, синяя область – общее количество затребованной памяти, включая своп.
- Number Of Files In Incoming Queue и Number Of Files In Outgoing Queue – вывод количества файлов во входящей и исходящей очередях, резкие изменения в любом из этих графиков могут свидетельствовать о проблеме.
- Number Of Files / Messages In Quarantine – количество файлов (затененная область) и сообщений (синяя линяя) в карантине.
- Machine Load Average и CPU Utilization Percentage – показатели загрузки системы.
- Processing Speed – скорость обработки почты MailScanner. Для работы этого параметра необходимо выставить Log Speed = yes в MailScanner.conf. В отличие от большинства других графов, низкий показатель предполагает проблему.
- Average Number of Messages Per Batch – среднее количество сообщений при обработке пакета помогает разобраться в Processing Speed, поскольку скорость обработки зависит и от размера.
- Viruses and Blocked Content as Percentage of Total Mail – показывает процент обработанной почты, содержащей запрещенный контент или вирус. Синяя линия указывает на вирусы, затененная область суммарно запрещенный контент и вирус.
- Disk Space Used in / – занятость в процентном отношении корневой файловой системы.
- Disk Space Used in Work Filesystem – занятость в процентном отношении файловой системы рабочего каталога MailScanner (на него указывает переменная MailScanner Work Directory в конфигурационном файле). Чаще всего его значение совпадает со следующим, но введен из-за того, что часто рабочий каталог для ускорения обработки выносят в tmpfs.
- Disk Space Used in Spool Filesystem – занятость в процентном отношении файловой системы рабочего каталога MTA (на него указывает переменная Spool Directory в конфигурационном файле).
- Server Network Traffic – общий сетевой трафик для указанных сетевых интерфейсов (определяется переменной Interfaces to Monitor в конфигурационном файле).
С работой этой системы можно ознакомиться, обратившись к [7], правда, на момент написания статьи там была установлена более ранняя версия (текущая 0.10). Установка никаких сложностей не представляет. Скачиваем архив размером 64 Кб, распаковываем и даем команду ./install.pl внутри каталога (некоторые опции можно просмотреть, используя ключ-help). После чего скрипт выведет текущие настройки.
Location of perl: /usr/bin
Installation Prefix: /usr
Program Location: ${prefix}/sbin
Libraries Location: ${prefix}/lib
Documentation Location: ${prefix}/share/doc
Man pages Location: ${prefix}/share/man
MRTG Config directory: /etc/mrtg
MailScanner Config directory: /etc/MailScanner
WWW root: /var/www/html
Apache configuration dir: /etc/httpd/conf
Location of mrtg: /usr/bin/mrtg
Location of uptime: /usr/bin/uptime
Use SNMP: n
Cron job in cron.d: /etc/cron.d
|
Далее все файлы будут скопированы на свои места, и будет предложено отредактировать конфигурационный файл mailscanner-mrtg.conf, который затем будет помещен на свое место, т.е. в /etc/mrtg. Файл хорошо комментирован, имеются готовые шаблоны, некоторые опции приведены выше, некоторые совпадают с MailScanner.conf, поэтому особенных трудностей при его редактировании возникнуть не должно. Обязательно проверьте правильность всех путей в файле и установки MTA. В крайнем случае картинки с неправильными параметрами будут пустыми, и вы сами сможете быстро определить проблему. Главным является Perl-скрипт /usr/sbin/mailscaner-mrtg с модулями, расположенными в каталоге /usr/lib/MailScanner-MRTG/MSMRTG. MRTG традиционно генерирует графики через определенное время. Для этого используется скрипт mailscanner-mrtg.crond, который после установки должен лежать в /etc/cron.d.
*/5 * * * * root /usr/bin/mrtg /etc/mrtg/mailscanner-mrtg
То есть скрипт будет выполняться каждые 5 минут. Для проверки работоспособности лучше выполнить эту команду в консоли и проследить за отсутствием ошибок.
Перезапускаем веб-сервер и заходим по адресу http://localhost/mailscanner-mrtg (рис. 2). По щелчку на конкретном графике будет выдана статистическая информация за день, неделю, месяц и год.
Рисунок 2. Вывод статистики MailScanner-MRTG
Анализ почты с Vispan
Vispan (VIrus and SPam ANalyser), представляющий собой Perl-скрипт, анализирующий файлы журналов и использующий библиотеку GD для построения графиков (полный список зависимостей найдете на сайте). Последняя версия 2.0.2 датирована 6 января 2004 года, поэтому можно предположить о приостановке работ. Тем не менее Vispan имеет свои особенности, о которых следует рассказать. Проект [4] немного похож по возможностям на предыдущий, только его графики больше ориентированы на статистику сообщений, и меньше выводят системную информацию. С его помощью получите полную статистику о размере очереди входящих и исходящих сообщений, включая спам и вирусы (количество и процент от общего числа), времени прохождения по MailScanner, количестве блокированных IP-адресов, времени последнего обновления антивирусных баз. Кроме того, будет выведен список наиболее часто попадающихся вирусов и спама. Кроме вывода статистики сценарий может автоматически добавлять адреса спамеров в конфигурационный файл sendmail или в правила iptables. Этот адрес может автоматически удаляться после указанного промежутка времени. Если с этого адреса спам будет получен вторично, то промежуток времени нахождения в черном списке будет каждый раз удваиваться. Ознакомительная версия доступна по адресу [8].
Установка также проста.
# wget -c http://www.while.homeunix.net/mailstats/Vispan-2.0.2.tar.gz
# tar xzvf Vispan-2.0.2.tar.gz
# cd Vispan-2.0.2
# perl Makefile.PL
Checking if your kit is complete...
Looks good
Writing Makefile for Vispan
|
Здесь могут быть сообщения о ненайденных модулях, их необходимо будет установить.
# make install
И приступаем к редактированию конфигурационного файла /etc/Vispan.conf. Основные параметры которого приведены ниже.
# Использование sendmail для блокировки спамерских адресов
UseAccess = 0
# Использование IPtables для блокировки спамерских адресов.
# Одновременное использование UseAccess и UseIPTables смысла не имеет
UseIPTables = 1
# Использование эвристического удаления адресов из блокировки. Иначе будет сохраняться весь список спамеров
UseHeuristics = 1
# Первичная блокировка адреса в минутах, далее время будет постоянно удваиваться
BlockTime = 7200 # 5 дней
# Адреса, которые не будут блокироваться. Можно задать одиночный IP или диапазон:
# 192.168.0.0-192.168.0.10 или 192.168.0.1/24
WhiteList = 192.168.0.1 192.168.0.2
Далее проверяем правильность путей в переменных, выставляем почтовый адрес, на который будут высылаться уведомления. Perl-скрипт Vispan запускается при помощи cron. После установки в каталоге /etc/cron.d должен лежать файл vispan.cron следующего содержания.
*/10 * * * * root /usr/local/bin/Vispan
Первый раз его также желательно запустить самому и отследить ошибки. После этого в веб-браузере набираем http://localhost/vispan/, результат смотрите на рис. 3.
Рисунок 3. Вывод статистики Vispan
Задачу настройки самого MailScanner может существенно упростить модуль для Webmin [5], который после установки появится в закладке «Службы». Далее необходимо его сконфигурировать, прописав в настройках пути к конфигурационному и исполняемым файлам и месту, куда установлен сам MailScanner. После этого выбираем необходимый пункт (рис. 4) и редактируем параметры, в большинстве случаев, только устанавливая кнопки в «Да» или «Нет».
Рисунок 4. Модуль webmin позволяет настроить работу MailScanner
Рисунок 5. При помощи модуля webmin настройка многочисленных параметров заметно упрощена
MailScanner является мощным средством для защиты электронной почты, а имеющиеся дополнения позволяют заметно упростить работу с ним и расширить его возможности. Да, кстати, 1 января 2006 года вышла новая 4.49 версия MailScanner.
Литература и ссылки:
- Яремчук С. Защита электронной почты средствами MailScanner. – Журнал «Системный администратор», №12, декабрь 2005 г. – 45-51 с (http://www.samag.ru/cgi-bin/go.pl?q=articles;n=12.2005;a=09).
- Сайт проекта MailWatch – http://mailwatch.sourceforge.net.
- Сайт проекта mailscanner-mrtg – http://mailscannermrtg.sourceforge.net.
- Сайт проекта Vispan – http://www.while.homeunix.net/mailstats.
- Сайт проекта mailscanner-webmin – http://lushsoft.dyndns.org/mailscanner-webmin или http://sourceforge.net/projects/msfrontend.
- Яремчук С. Упрощаем себе жизнь с Webmin. – Журнал «Системный администратор», №7, июль 2004 г. – 34-37 с (http://www.samag.ru/cgi-bin/go.pl?q=articles;n=07.2004;a=07).
- Ознакомительная версия MailScanner-mrtg – http://mailscannermrtg.sourceforge.net/mailscanner-mrtg.
- Ознакомительная версия Vispan – http://hosting.boys-brigade.org.uk/mrtg.