Antispam linux mail server

Antispam linux mail server

Чтобы настроить параметры модуля Анти-Спам, выполните следующие действия:

  1. В главном окне веб-интерфейса программы в дереве консоли управления выберите раздел Параметры , подраздел Защита .
  2. В блоке Анти-Спам по любой из ссылок Использовать KSN , Использовать службу Enforced Anti-Spam Updates , Использовать репутационную фильтрацию или Максимальное время проверки откройте окно Параметры модуля Анти-Спам .
  3. В блоке параметров Внешние службы в раскрывающемся списке Использовать KSN выберите один из следующих вариантов:
    • Да , если вы хотите использовать службу KSN.
    • Нет , если вы не хотите использовать службу KSN.
  4. В блоке параметров Внешние службы в раскрывающемся списке Использовать службу Enforced Anti-Spam Updates выберите один из следующих вариантов:
    • Да , если вы хотите использовать функцию принудительного обновления баз модуля Анти-Спам.
    • Нет , если вы не хотите использовать функцию принудительного обновления баз модуля Анти-Спам.
  5. В блоке параметров Внешние службы в раскрывающемся списке Использовать репутационную фильтрацию выберите один из следующих вариантов:
    • Да , если вы хотите использовать репутационную фильтрацию.
    • Нет , если вы не хотите использовать репутационную фильтрацию.
  6. В блоке параметров Производительность в поле Максимальное время проверки укажите максимальное время проверки сообщений на спам в секундах.

Если проверка сообщения на спам не успевает завершиться за указанное вами время, Kaspersky Security 8 для Linux Mail Server выполняет следующие действия:

  • Прерывает проверку сообщения (действие Пропустить ).
  • Присваивает сообщению статус Error.
  • Доставляет сообщение получателю.
  • Добавляет запись следующего содержания в журнал событий /var/log/maillog:

: not clean: message-id= : relay-ip= : action=»Skipped»: rules= : size= : mail-from= : rcpt-to= : kt-status=»NotScanned, disabled by settings», av-status=»Clean», ap-status=»Clean», as-status=»Error», ma-status=»NotScanned, disabled by settings», cf-status=»NotScanned, disabled by settings»>

Источник

Как установить Clam Antivirus, SpamAssassin и MailScanner на почтовом сервере под Ubuntu

Антивирус, антиспам защита — это одни из самых важных функций безопасности для почтового сервера. В предыдущей статье мы рассказывали, как установить почтовый сервер на Ubuntu. Если у вас есть почтовый сервер, то данная статья крайне рекомендуется для последующей настройки и защиты сервера.

Работающие под Unix/Linux почтовые сервера, обычно, не уязвимы для зловредного кода и вирусов, очень не велик шанс, что сами серверы могут «заразиться». С другой стороны, операционная система конечного пользователя может быть не всегда столь безопасна. Нам конечно не хочется, чтобы наш почтовый сервер принимал или распространял зловредный код, встроенный в письма. Следовательно, установка антивирусной программы на почтовом сервере является обязательной.

Антиспам фильтры будут проверять каждое входящее и исходящее письмо на соответствии шаблонам спама. Например, спам письма обычно содержат большое количество получателей. Также обратный DNS запрос для домена в спам письме обычно выдаёт неверный ответ. Если программа фильтров спама находит какое-либо письмо, которое может быть спамом, она блокирует это письмо. Это позволяет поддерживать репутацию почтового сервера, при этом предотвращая попадание IP адреса почтового сервера в чёрный список.

В этом уроке мы посмотрим, как обезопасить свой почтовый сервер на Ubuntu, установив:

  • Clam Antivirus: антивирусный движок с открытым исходным кодом.
  • SpamAssassin: движок фильтрации спама электронных писем.
  • MailScanner [version_4.74.16-1]: использует движки антивируса и антиспама для сканирования входящих и исходящих электронных писем.

Эта инструкция применима к определённым версиям. На момент написания статьи, MailScanner не доступен в репозитории Ubuntu. Поэтому мы будем вместо репозитория использовать .deb пакет MailScanner. К сожалению, зависимых пакетов, которые требуются для последней версии MailScanner [4.84.6-1] также нет в репозитории Ubuntu. Тем не менее, зависимые пакеты для версии 4.74.16-1 доступны. Мы будем использовать .deb пакет MailScanner [4.74.16-1] в этом уроке. Для тестирования используется Ubuntu 12.04.

Для тех, кто интересуется настройкой этого же самого под CentOS, то для вас будет написана отдельная статья.

Установка зависимостей на Ubuntu

Перед началом всех работ, первое, что нужно сделать, это установить все необходимые зависимости. Список зависимостей большой, но, к счастью, это можно сделать используя одну команду.

Установка Clam Antivirus и SpamAssassin

Теперь, когда зависимости установлены, могут быть установлены Clam Antivirus и SpamAssassin, используем для этого apt-get.

SpamAssassin должен быть включён, а затем запущен:

После установки пакетов, они могут быть обновлены с использованием следующих команд.

Установка MailScanner

После того, как всё программное обеспечение, от которого зависит MailScanner, установлено, мы загрузим .deb пакет для MailScanner версии 4.74 и установим его.

Настройка MailScanner

Сейчас пришло время для подстройки параметров MailScanner.

Во-первых, создаём директорию SpamAssassin и задаём для неё права.

Делаем резервную копию конфигурационного файла /etc/MailScanner/MailScanner.conf, а затем модифицируем его.

Дополнительная информация о параметрах конфигурации может быть найдена в официальной документации.

Также модифицируется конфигурационный файл Postfix. Мы настроем Postfix попридерживать все электронные письма. MailScanner будет приниматься за них и проверять. Затем электронные письма будут передаваться снова для обработки Postfix, которые уже обеспечит их доставку. Здесь как нужно изменить файл настроек.

Включаем MailScanner, для этого раскомментируем следующую строку.

Наконец запускаем службы Postfix и MailScanner.

Проверка MailScanner

Теперь, когда развёрнут MailScanner, мы можем проверить его функциональность мониторингом журнала электронных писем.

Давайте отправим тестовое электронное письмо и посмотрим, что произойдёт.

Выводы, которые можно сделать из отображаемого журнала.

  • Postfix удерживает электронное письмо после соединения SMTP. Электронное письмо было размещено в /var/spool/postfix/hold.
  • MailScanner просканировал электронное письмо: (1) проверка на спам по чёрному списку, (2) проверка на спам от spamassassin по онлайн базе и (3) сканирование на вирусы и содержание.
  • MailScanner изменил ID очереди для этого электронного письма.
  • После того, как было признано, что электронное письмо чистое, оно было отправлено на обработку Postfix с новым ID очереди.
  • Postfix доставил электронное письмо в аккаунт назначения.

Итог, MailScanner, когда он интегрирован с Clam Antivirus и SpamAssassin — это очень мощный инструмент, которые обязательно должен быть на почтовом сервере, выполняющим реальные задачи. Он может парировать большинство существующих уязвимостей почтового сервера. Этот урок охватывает минимальную настройку безопасности почтового сервера, с использованием MailScanner. Параметры MailScanner, Clam Antivirus и SpamAssassin очень настраиваемые, и они могут быть изменены для точного соответствия различным требованиям

Источник

Как защитить почтовый сервер от спама Clamav + Amavisd

Как защитить почтовый сервер от спама Clamav + Amavisd

Установка и настройка Clamav + Amavisd

Устанавливаем необходимые для работы антивируса и антиспама компоненты:

dnf —enablerepo=epel,powertools install amavisd-new clamd perl-Digest-SHA1 perl-IO-stringy

Открываем конфигурационный файл amavis:

Редактируем следующие параметры:

$mydomain = ‘infoit.com.ua’;

$myhostname = ‘relay.infoit.com.ua’;

* данные опции не обязательны, но они определяют сообщения в заголовках. $mydomain — домен, в котором находится сервер; $myhostname — имя сервера.

… а также добавим:

$allowed_header_tests <‘multiple’>= 0;
$allowed_header_tests <‘missing’>= 0;

* данные опции позволят программе Outlook без ошибок отправлять тестовое сообщение.

Открываем конфигурационный файл clamd:

Снимаем комментарий для опции TCPSocket:

Теперь разрешаем запуск антивируса и amavis:

systemctl enable clamd@scan —now

systemctl enable amavisd —now

Настройка Postfix

Добавляем в postfix:

content_filter = scan:[127.0.0.1]:10024
receive_override_options = no_address_mappings

* где content_filter указывает на приложение, которое будет сканировать сообщения; receive_override_options позволяет увидеть оригинальные email адреса писем с вирусами.

Теперь редактируем master.cf:

scan unix — — n — 16 smtp
-o smtp_send_xforward_command=yes
-o smtp_enforce_tls=no

127.0.0.1:10025 inet n — n — 16 smtpd
-o content_filter=
-o receive_override_options=no_unknown_recipient_checks,no_header_body_checks
-o smtpd_helo_restrictions=
-o smtpd_client_restrictions=
-o smtpd_sender_restrictions=
-o smtpd_recipient_restrictions=permit_mynetworks,reject
-o mynetworks_style=host
-o smtpd_authorized_xforward_hosts=127.0.0.0/8

* итак, данной настройкой мы создадим два вспомогательных сервиса scan и 127.0.0.1:10025 (сервис без имени, он просто будет слушать на порту 10025 — это порт по умолчанию, на который отправляет сообщение amavis после выполнения проверки). Также, мы используем следующие опции:

  • smtp_send_xforward_command — передавать ли в сканирование сообщение с исходными именем клиента и IP-адресом. В данном примере, да.
  • smtp_enforce_tls — требовать ли TLS.
  • content_filter — приложение для сканирования. В данном примере сканирование отключено.
  • receive_override_options переопределяет опции в main.cf. В нашем случае, no_unknown_recipient_checks отключает попытки выяснить, является ли получатель неизвестным; no_header_body_checks отключает проверки заголовков и тала писем.
  • пустые значения для smtpd_helo_restrictions, smtpd_client_restrictions, smtpd_sender_restrictions отключают ограничения для данных опций.
  • smtpd_recipient_restrictions — контролирует ответ Postfix на SMTP-команду RCPT TO. Здесь мы разрешаем только соединения от узлов, перечисленных в mynetworks.
  • mynetworks_style=host указывает postfix, что он должен пересылать почту только с локального компьютера.
  • smtpd_authorized_xforward_hosts укажет, какие удаленные клиенты могут использовать XFORWARD. В данном случае локальный компьютер.

systemctl restart postfix

Настройка обновлений антивируса и amavis

dnf install clamav-update

Обновляем антивирусную базу командой:

Для обновления базы антиспама:

sa-update —nogpg —verbose

Для настройки автоматического обновления, редактируем cron:

15 3 * * * /bin/freshclam
30 3 * * * /bin/sa-update

* в данном примере, каждый день в 03:15 будет запускаться процесс обновления clamav, а в 03:30 — антиспама.

Проверка

Для проверки антивируса отправляем сообщение со следующим содержимым:

X5O!P%@AP[4\PZX54(P^)7CC)7>$EICAR-STANDARD-ANTIVIRUS-TEST-FILE!$H+H*

Письмо не должно дойти, а в логе (/var/log/maillog) мы увидим строку:

… amavis[17688]: (17688-04) Blocked INFECTED (Eicar-Signature) , MYNETS LOCAL …
… relay=127.0.0.1[127.0.0.1]:10024, delay=0.25, delays=0.19/0/0/0.06, dsn=2.7.0, status=sent (250 2.7.0 Ok, discarded, — INFECTED: Eicar-Signature )

Для проверки работы контентного антиспама, отправляем письмо со следующим содержимым:

XJS*C4JDBQADN1.NSBN3*2IDNEN*GTUBE-STANDARD-ANTI-UBE-TEST-EMAIL*C.34X

В итоге, письмо не должно прийти, а в логах мы увидим:

… amavis[17689]: (17689-04) Blocked SPAM , MYNETS LOCAL …
… status=sent (250 2.7.0 Ok, discarded, — spam )

Пересылка СПАМа и вирусов на другой ящик

Все письма со спамом и вирусами будут перемещаться в карантин. Если мы хотим перенаправлять все подобные сообщения на специальный ящик, то необходимо настроить amavis.

Открываем конфигурационный файл:

Добавляем такие опции:

$spam_quarantine_to = «spam\@infoit.com.ua»;

$virus_quarantine_to = «virus\@infoit.com.ua»;

* где $spam_quarantine_to указываем на адрес для перенаправления СПАМ-писем; $virus_quarantine_to — почта для писем с обнаруженными вирусами.

После перезагрузим amavisd:

systemctl restart amavisd

Пробуем отправить сообщения с тестовыми сигнатурами на СПАМ и вирус — письма должны быть перенаправлены на указанные адреса.

Сохранения СПАМа в папку SPAM пользователя

Выше мы рассмотрели возможность перенаправления всех нежелательных писем на другой почтовый ящик. Данный способ удобен, что пользователи не видят ненужные сообщения, но накладывает дополнительную обязанность на администратора по поиску писем, которые ложно были определены как СПАМ. В данном подразделе мы рассмотрим альтернативу — сохранение нежелательных сообщений в специальной папке.

Устанавливаем пакет dovecot-pigeonhole:

dnf install dovecot-pigeonhole

Открываем на редактирование файл:

Комментируем и добавляем строки:

/.dovecot.sieve
sieve = /etc/dovecot/sieve/default.sieve

* закомментированная строка указывала, что файл с настройками находится в домашней директории каждого пользователя. Мы же будем делать централизованный конфиг в файле /etc/dovecot/sieve/default.sieve.

Открываем файл /etc/dovecot/conf.d/15-lda.conf и редактируем:

protocol lda <

mail_plugins = $mail_plugins sieve
>

* в данном примере мы добавили плагин sieve. Также необходимо со строки снять комментарий, если он был.

Открываем файл /etc/dovecot/conf.d/15-lda.conf и редактируем:

protocol lmtp <

mail_plugins = $mail_plugins sieve
>

* также мы добавили плагин sieve + необходимо со строки снять комментарий, если он есть.

Создаем каталог и файл с настройками sieve:

require «fileinto»;
if header :contains «X-Spam-Flag» «YES» <
fileinto «Junk»;
>

* в данном примере мы ищем в заголовках X-Spam-Flag и отправляем такие письма в папку Junk.

Задаем владельца для созданных каталога и файла:

chown -R vmail:vmail /etc/dovecot/sieve

systemctl restart dovecot

Открываем конфиг amavis:

* по умолчанию стоит значение D_DISCARD, что означает, что сообщения будут отклонятся. Нам же нужно D_PASS — пропускать.

systemctl restart amavisd

Антиспам средствами Postfix

В MTA Postfix встроен свой механизм проверки заголовков входящих сообщений. Правила размещаются в 7 секций, обработка которых выполняется в следующем порядке:

client -> helo -> sender -> relay -> recipient -> data -> end_of_data

Чтобы лучше понять принцип, мы должны знать SMTP-команды при выполнении отправки почты. И так, порядок, следующий:

  1. Соединение с сервером.
  2. Команда HELO. Приветствие, в котором отправитель называет свое имя, по которому можно проверить, соответствует ли оно правилам именования и своему IP-адресу.
  3. MAIL FROM — указывает адрес отправителя. Выполняется для sender и relay.
  4. RCPT TO — кому отправляем письмо.
  5. DATA — команда сообщает о готовности отправить письмо с заголовками и текстом.
  6. END-OF-DATA — отправка письма.

И так, для настройки антиспама в конфигурационный файл main.cf добавляем:

smtpd_client_restrictions =
permit_mynetworks
permit_sasl_authenticated
reject_unauth_pipelining
permit

smtpd_sender_restrictions =
permit_mynetworks
permit_sasl_authenticated
reject_non_fqdn_sender
reject_unknown_sender_domain
permit

smtpd_recipient_restrictions =
permit_mynetworks
permit_sasl_authenticated
reject_non_fqdn_recipient
reject_unauth_destination
reject_unknown_recipient_domain
reject_unverified_recipient
permit

  1. smtpd_client_restrictions — настройки ограничений при осуществлении клиентских соединений с почтовым сервером.
  2. smtpd_helo_restrictions — ограничения в контексте клиентской команды HELO.
  3. smtpd_sender_restrictions — ограничения будут применяться во время выполнения клиентской команды MAIL FROM.
  4. smtpd_relay_restrictions — ограничения пересылки почты в контексте клиентской команды RCPT TO.
  5. smtpd_recipient_restrictions — ограничения в контексте клиентской команды RCPT TO после пересылки (smtpd_relay_restrictions).
  6. smtpd_data_restrictions — ограничения будут применяться во время выполнения команды DATA.
  7. smtpd_end_of_data_restrictions — ограничения во вреся выполнения команды END-OF-DATA.

… и значения для них:

  • permit_mynetworks — разрешает все адреса, перечисленные в настройке mynetworks.
  • permit_sasl_authenticated — разрешает запросы всех успешно авторизованных клиентов.
  • reject_unauth_pipelining — запрещает отправку писем, которые отправляются заранее (пропуская правильную цепочку сессии SMTP).
  • reject_non_fqdn_sender — отклонить соединение, если адрес отправителя указан неправильно (согласно RFC).
  • reject_unknown_sender_domain — запрещает запрос, если Postfix не является конечным пунктом назначения для адреса отправителя, а домен MAIL FROM не имеет 1) DNS-записи MX и DNS-записи A или 2) искаженной MX-записи, такой как запись с MX-именем хоста нулевой длины.
  • reject_non_fqdn_recipient — запретить соединение, если адрес получателя указан неправильно (согласно RFC).
  • reject_unauth_destination — отклонить соединение, если письмо не пересылается согласно правилу relay_domains или сервер не является адресом назначения. Другими словами, запрещает использование нашего сервера в качестве open relay.
  • reject_unknown_recipient_domain — отклонить запрос, если Postfix не является конечным пунктом назначения для домена получателя, а домен RCPT TO не имеет 1) DNS-записи MX и DNS-записи A или 2) неверно сформированной MX-записи, такой как запись с именем хоста MX нулевой длины.
  • reject_unverified_recipient — отклонить запрос, если известно, что почта на адрес RCPT TO отклоняется или когда адрес получателя не доступен.
  • permit — разрешает соединение. Ставим в конец каждого блока ограничений (если ограничения не сработали, то разрешаем).

* это более или менее мягкие правила. Их можно использовать первое время, пока тестируем сервер.

Для усиления защиты добавляем:

smtpd_recipient_restrictions =

reject_unknown_client_hostname
reject_invalid_helo_hostname
reject_non_fqdn_helo_hostname
reject_unknown_helo_hostname
reject_rbl_client bl.spamcop.net
reject_rbl_client cbl.abuseat.org
reject_rbl_client dul.ru
reject_rbl_client dnsbl.abuse.ch
permit

  • reject_unknown_client_hostname — проверяет наличие PRT-записи отправителя и наличие рабочей А-записи в соответствие PTR.
  • reject_invalid_helo_hostname — проверяет синтаксис HELO-приветствия.
  • reject_non_fqdn_helo_hostname — требует правильного FQDN-имени во время HELO-приветствия.
  • reject_unknown_helo_hostname — запрещает представляться именами, для которых нет А-записи или MX.
  • reject_rbl_client — проверяет наличие отправителя в черных списках.

* более подробное описание опций для защиты можно найти на странице postfix.org/postconf.5.html.

После внесения всех правок, необходима перезагрузка Postfix:

systemctl restart postfix

Обучение антиспама

Мы установили amavis, который проверяет почту на СПАМ средствами spamassassin. Последний без обучения, практически, бесполезен. Синтаксис команды для обучения следующий:

Таким образом, первая команда укажет spamassassin какие письма являются нежелательными, а вторая — не несущими рекламный характер.

Хорошей практикой будет договориться с пользователями о ручном помещении нежелательной почты из входящих в папку СПАМ. Тогда мы сможем пройтись скриптом по всем ящиками на сервере и обучать антиспам. Например, такой командой:

* в данном примере мы сказали spamassassin найти в каталогах пользователей папки Спам, Spam, Junk, Junk E-mail (данные каталоги являются типичными для помещения СПАМа) и провести обучение.

Чтобы минимизировать количество ложных срабатываний, необходимо проводить обучение с ключом —ham. В нашем примере мы отправляем все нежелательные письма на ящик spam. В таком случае, необходимо вручную находить ложные срабатывания и переносить их в специальную папку, например Ham. Тогда команда для обучения будет такой:

sa-learn —ham /home/mail/dmosk.local/spam\@dmosk.local/.Ham/cur

Статистику обучения можно посмотреть командой:

sa-learn —dump magic

Черные и белые списки

В настройках amavis мы можем переопределять СПАМ-бал для конкретного отправителя или всего домена. Для этого открываем файл:

Внутри фигурных скобок можно создавать новые строки с описанием поведения антиспама.

а) для добавления в белый список.

Присваиваем минусовое значение для бала, например:

* в данном примере все письма от домена infoit.com.ua будут получать минус 5 баллов. Таким образом, шансов попасть в СПАМ будет меньше. У всех писем от email example@mail.ru будет отниматься 10 баллов.

б) для добавления в черный список.

В данном случае, мы задаем положительное значение для балла:

После того, как мы внесли правки в наш файл, перезапускаем amavis:

systemctl restart amavisd

9. Отправка почты наружу

Для отправки почты на другие почтовые серверы необходимо правильно сконфигурировать сервер, чтобы письма не попадали в СПАМ. Чтобы это сделать, выполняем инструкции ниже.

Настройки DNS для сервера

Многие почтовые серверы делают запросы в систему доменных имен для проверки легитимности почтового сервера, отправляющего почту. При настройке MTA очень важно правильно добавить необходимые записи в DNS.

1. rDNS. Обратная зона используется для проверки соответствия имени сервера в приветствии с именем, которое возвращает NS сервер при запросе по PTR-записи.

И так, для создания записи в обратной зоне, необходимо написать письмо Интернет провайдеру, к сети которого подключен сервер или хостеру, если почтовый сервер настроен на VPS. IP-адрес нашего сервера должен вести на имя, которым приветствуется наш postfix — можно посмотреть командой:

postconf -n smtpd_banner

Если мы получим пустой ответ, то вводим:

postconf -n myhostname

Если и в этот вариант не вернет ответ, вводим:

2. А-запись. Также необходимо, чтобы имя сервера, которым представляется почтовый сервер разрешалось в IP-адрес.

Для этого заходим в консоль управления зоной нашего домена и создаем запись типа А для сопоставления имени сервера с IP-адресом, на котором слушает запросы данный сервер.

Настройки DNS для домена

Для каждого домена, для которого будем отправлять почту создаем записи:

Для проверки корректности настройки сервера, воспользуемся ресурсами:

Источник

Читайте также:  Создание открытого ssh ключа windows
Оцените статью