Журнал Системный Администратор, Январь 2006

Журнал Системный Администратор

Январь 2006

Цена: $4.5 US

  Подписаться

Зарегистриванные пользователи, пожалуйста следуйте этой ссылке

Версия для печати Вернуться к оглавлению

Расширяем возможности MailScanner

Сергей Яремчук

В прошлой статье [1] вы рассмотрели возможности и установили почтовый сканер MailScanner. Сегодня мы познакомим вас с дополнительными программами, позволяющими просмотреть статистику работы системы защиты электронной почты.

Веб-интерфейс MailWatch

MailWatch [2] представляет собой инструмент, предназначенный для работы и настройки MailScanner, использующий веб-технологии. Написан на PHP, MySQL и JpGraph, распространяется под лицензией GNU GPL. Для записи в базу данных применяются свои собственные функции пользователя (CustomFunctions).

Основные возможности:

n  Отображение очереди входящей и исходящей почты (пока только для Sendmail/Exim), вывод информации о средней загрузке и количестве сообщений за текущий день, спаме, вирусах и блокированного контента.

n  Подсвечивание недавно обработанной почты.

n  Вывод подробной информации по каждому сообщению.

n  Управление почтой, попавшей в карантин (т.е. ее можно просматривать, разрешать, удалять, переобучать спам-фильтры).

n  Просмотр статуса работы вирус-сканера (пока только для Sophos), базы данных MySQL и вывод файла настроек MailScanner.

n  При работе с Sendmail имеется возможность проверить и вывести размеры очереди почты и информацию о пересылке.

n  Разграничение информации для пользователей, домена и администратора. Поддержка XML-RPC позволяет использовать несколько инсталляций MailScanner/MailWatch как единое целое.

n  Вывод самых разнообразных отчетов.

Настройка 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

Enter password: ******

Создаем пользователя, от имени которого 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] помогает разобраться с работой почтового сервера в целом, выводя различные статистики о работе последнего. Используя его, можно получить следующую информацию:

n  Mail Relayed – общее число сообщений, обработанных системой, синяя линия указывает на количество полученных сообщений, затененная область – количество получателей (одно сообщение может иметь многочисленных получателей).

n  Spam Identified – число сообщений, определенных как спам. Затененная область включает все сообщения, заблокированные всеми возможными средствами: правилами MTA, RBL в MailScanner и SpamAssassin. Синяя линия показывает сообщения, заблокированные только на уровне MTA.

n  Spam as Percentage of Total Mail – процент представленной почты, определенной как спам. Отличие заключается в том, что представленная почта включает сообщения, отвергнутые MTA, т.е. не дошедшая до MailScanner.

n  Mail Containing a Virus or Failing Content Checks – общее число обнаруженных сообщений, содержащих вредный контент. Затененная область представляет заблокированные, изолированные, удаленные сообщения, содержащие вирусы, запрещенные расширения, имена и типы файлов, html-код. Синяя линия показывает обнаруженные вирусными сканерами.

n  MTA Processes Running и Copies Of MailScanner Running – индикаторы работы MTA и MailScanner.

n  Bytes of Mail Transferred – этот граф, показывающий количество информации, прошедшей через MTA, позволяет оценить нагрузку, вызванную внешней почтой. В течение дня график должен расти равномерно, резкие всплески или плоский график могут свидетельствовать о проблемах.

n  Ram Usage – использование памяти. Затененная линия показывает количество ОЗУ с используемым дисковым кешем, синяя область – общее количество затребованной памяти, включая своп.

n  Number Of Files In Incoming Queue и Number Of Files In Outgoing Queue – вывод количества файлов во входящей и исходящей очередях, резкие изменения в любом из этих графиков могут свидетельствовать о проблеме.

n  Number Of Files / Messages In Quarantine – количество файлов (затененная область) и сообщений (синяя линяя) в карантине.

n  Machine Load Average и CPU Utilization Percentage – показатели загрузки системы.

n  Processing Speed – скорость обработки почты MailScanner. Для работы этого параметра необходимо выставить Log Speed = yes в MailScanner.conf. В отличие от большинства других графов, низкий показатель предполагает проблему.

n  Average Number of Messages Per Batch – среднее количество сообщений при обработке пакета помогает разобраться в Processing Speed, поскольку скорость обработки зависит и от размера.

n  Viruses and Blocked Content as Percentage of Total Mail – показывает процент обработанной почты, содержащей запрещенный контент или вирус. Синяя линия указывает на вирусы, затененная область суммарно запрещенный контент и вирус.

n  Disk Space Used in / – занятость в процентном отношении корневой файловой системы.

n  Disk Space Used in Work Filesystem – занятость в процентном отношении файловой системы рабочего каталога MailScanner (на него указывает переменная MailScanner Work Directory в конфигурационном файле). Чаще всего его значение совпадает со следующим, но введен из-за того, что часто рабочий каталог для ускорения обработки выносят в tmpfs.

n  Disk Space Used in Spool Filesystem – занятость в процентном отношении файловой системы рабочего каталога MTA (на него указывает переменная Spool Directory в конфигурационном файле).

n  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.

Литература и ссылки:

1. Яремчук С. Защищаем электронную почту средствами MailScanner. – Журнал «Системный администратор», №12, декабрь 2005 г. – 45-51 с.

2. Сайт проекта MailWatch – http://mailwatch.sourceforge.net.

3. Сайт проекта mailscanner-mrtg – http://mailscannermrtg.sourceforge.net.

4. Сайт проекта Vispan – http://www.while.homeunix.net/mailstats.

5. Сайт проекта mailscanner-webmin – http://lushsoft.dyndns.org/mailscanner-webmin или http://sourceforge.net/projects/msfrontend.

6. Яремчук С. Упрощаем себе жизнь с Webmin. – Журнал «Системный администратор», №7, июль 2004 г. – 34-37 с.

7. Ознакомительная версия MailScanner-mrtg – http://mailscannermrtg.sourceforge.net/mailscanner-mrtg.

8. Ознакомительная версия Vispan – http://hosting.boys-brigade.org.uk/mrtg.




Все права зарезервированы. Этот материал принадлежит или лицензирован компании PLARANA INC. Только для частного использования. Любое распространение запрещено без письменного разрешения PLARANA INC
Версия для печати Вернуться к оглавлению