Защищаем почтовый сервер без антивируса. Настройка DKIM-, SPF- и DMARC-записей

Электронная почта — один из самых популярных каналов распространения спама, малвари и фишинговых ссылок. Существует куча софта, который защищает почтовые серверы от этих напастей, да вот незадача: большинство таких программ стоит денег, и порой немалых. В этой статье я расскажу, как усилить безопасность корпоративных почтовых серверов (MS Exchange и Postfix) с помощью доступных штатных средств — DKIM-, SPF- и DMARC-записей, не требующих использования дорогостоящих коммерческих продуктов.

Немного теории о том, что мы будем настраивать

Итак, прежде чем мы приступим непосредственно к изменению настроек безопасности нашего почтового сервера, нужно разобраться с тем, что именно мы собираемся настраивать. Если тебя не пугают страшные на вид аббревиатуры, состоящие из трех и более заглавных букв латинского алфавита, ты можешь пропустить этот раздел. Остальных приглашаю освежить свои знания, ибо повторение, как гласит народная мудрость, мать учения.

WARNING

Важно помнить, что, к сожалению, настройка DKIM-, SPF- и DMARC-записей не панацея от всех бед. Если почтовый сервер был взломан, эти функции безопасности не смогут защитить от нелегитимного трафика. Поэтому важно заранее продумать эшелонированную защиту системы, включая антиспам-фильтры, антивирусное детектирование и прочее.

Что такое DKIM?

DKIM (Domain Keys Identified Mail) — это, условно говоря, цифровая подпись, которая подтверждает подлинность отправителя и гарантирует целостность доставленного письма. Подпись добавляется в служебные заголовки сообщения и остается незаметной для самого пользователя. Поскольку в DKIM используется асимметричная система шифрования, репозиторий сервера всегда хранит два ключа шифрования — открытый (сертификат) и закрытый. С помощью закрытого ключа формируются заголовки для всей исходящей почты, а открытый ключ как раз добавляется в DNS-записи в виде TXT-файла.

Статус DKIM проверяется автоматически на стороне получателя при сохранении письма в контейнер (именной почтовый ящик). И если домен в письме не авторизован для отправки сообщений, то письмо может быть помечено подозрительным или же сразу помещено в папку «Спам», в зависимости от настроенной политики безопасности. Кстати, это одна из ключевых причин, почему письма определенных отправителей постоянно попадают в спам, даже несмотря на валидность домена отправителя.

Для работы с DKIM требуется выполнение следующих условий:

  • поддержка DKIM почтовым сервером (а она есть у всех современных почтовиков);
  • создание приватного и публичного ключа шифрования (это нужно сделать ручками);
  • занесение в DNS домена записей, связанных с DKIM (и это тоже ручками).
Принцип работы DKIM

INFO

Для интересующихся этой темой в нашем журнале публиковался краткий гайд «Как настроить почтовый сервер для обхода спам-фильтров: руководство по DNS, SPF, DKIM», который поможет тебе взглянуть на проблему рассылки спама, вредоносного ПО и фишинга глазами владельца почтового ботнета. 🙂

Что такое SPF?

SPF (Sender Policy Framework) — это еще одна специальная подпись, содержащая информацию о серверах, которые могут отправлять почту с твоего домена. То есть SPF позволяет владельцу домена указать в TXT-записи для DNS-домена специальным образом сформированную строку, содержащую весь список серверов, которые имеют право отправлять email-сообщения с обратными адресами в этом домене. А если сказать то же самое понятными словами, то в этой записи мы сообщаем, с каких почтовых серверов можно посылать письма от имени сотрудников нашей компании. Воу! Вот так просто! В общем, наличие SPF снижает вероятность, что твое письмо попадет в спам.

Важно помнить, что SPF-запись должна быть только одна для одного домена, хотя уже в рамках одной SPF может содержаться несколько записей. И надо сказать, что для поддоменов будут нужны свои записи. И никак иначе! Безопасность требует времени и усердия. 🙂

Принцип работы SPF

Что такое DMARC?

DMARC (Domain-based Message Authentication, Reporting and Conformance) — это еще одна подпись, которая позволяет серверу получателя принять решение, что делать с пришедшим письмом. Важно заметить, что DMARC — это скорее дополнительная фича к уже используемым DKIM и SPF. Например, если отправленное сообщение не прошло проверку DKIM и SPF, то оно не пройдет и DMARC. Все логично. А вот если письмо успешно прошло хотя бы одну проверку (DKIM или SPF), то и проверку DMARC оно тоже преодолеет. Также при помощи DMARC можно получать репорты от почтовых систем с информацией, сколько через них пыталось пройти или прошло поддельных сообщений на ваш домен. Из сказанного становится понятно, что DMARC добавляется только после того, как уже настроены записи SPF и DKIM.

Принцип работы DMARC

От чего нельзя защититься с помощью DKIM, SPF и DMARC

С использованием DKIM, SPF и DMARC можно противостоять email-спуфингу и распространению малвари. Однако важно понимать, что это не гарантирует безопасности в случае взлома сервера, например путем компрометации админки или применения эксплоита, а также если письма форвардятся через иные почтовые сервисы с сомнительной репутацией или с полностью отсутствующими записями DKIM, SPF и DMARC.

Некоторые полезные ссылки для проверки корректности настройки DKIM- и SPF-записей, а также репутации домена:

  • SPF Policy Tester — онлайн-сервис проверки корректности SPF-записи. Для проведения теста на сайте указываешь почтовый адрес, с которого хочешь отправлять письма, и IP-адрес почтового сервера. Если все хорошо, то после нескольких секунд ожидания внизу страницы должна появиться зеленая надпись PASS.

  • Dkimvalidator.com — разработчики этого сервиса дают тебе адрес почты, на который нужно выслать письмо. После этого можно просмотреть отчет о валидности DKIM. Все просто!

  • Mail-tester.com — еще один вариант аналогичного сервиса, где тебе предоставляется адрес почты для отправки тестового сообщения, а после этого можно посмотреть отчет о доставке. Если возникли проблемы, из представленного репорта можно понять, в чем именно заключаются косяки.

Также не стоит забывать о регистрации своего сервера в службах постмастера для публичных почтовых серверов (если ты, конечно, администрируешь такой сервер). Это позволит тебе не только получать статистику по рассылкам, но и заработать чуть больше доверия от этого почтового сервиса. Вот самые известные и часто используемые постмастеры: Mail.RU, Yandex и Gmail.

Практика и еще раз практика

В практической части мы рассмотрим конфигурирование описанных выше настроек безопасности на примере двух наиболее популярных почтовых серверов — опенсорсного Postfix на Debian (ну, или Ubuntu Server) и проприетарного Microsoft Exchange Server 2013+. Предполагается, что почтовые серверы у тебя уже установлены и настроены под твой домен, поэтому рассматривать будем только само конфигурирование фич на обезличенных данных.

Настраиваем SPF, DKIM и DMARC на Postfix (Debian)

Общий принцип работы нашего почтового сервера будет таков:

  1. Принимающий сервер получает письмо с адреса info@example.com, отправленное с сервера mx.example.com.
  2. Сервер получателя делает запрос к DNS для домена example.com и ищет записи SPF и DKIM.
  3. В случае если записей нет, письму проставляется статус neutral (конкретно по этим проверкам) и письмо проверяется дополнительными фильтрами.
  4. В случае если записи обнаружены, проверяется, разрешено ли серверу mx.example.com отправлять почту домена example.com.
  5. Если домен mx.example.com не найден в списке разрешенных, то или письмо отбрасывается, или ему устанавливается статус neutral.
  6. Если домен mx.example.com таки найден в списке разрешенных, письму устанавливается статус Pass и повышается его рейтинг при прохождении других фильтров.

Ну что, погнали!

WARNING

Перед любыми операциями по конфигурированию системы не забывай сделать бэкап! Даже одна неправильно включенная опция может отрезать всех пользователей от получения и отправки почтовой корреспонденции. И обязательно тестируй все изменения перед переносом в их продакшен!

Настройка SPF-записи

Если ты отправляешь все сообщения только с одного сервера (почтовые клиенты не считаются), то в SPF-записи будет достаточно указать IP-адрес этого сервера:

example.com. IN TXT "v=spf1 +a +mx ip4:31.34.56.78 -all"

Описание опций:

  • v=spf1 — используемая версия SPF;
  • + — принимать корреспонденцию (Pass). Этот параметр установлен по умолчанию. То есть, если никаких параметров не установлено, это автоматически Pass;
  • - — отклонить (Fail);
  • ~мягкое отклонение (SoftFail). Письмо будет принято, но будет помечено как спам;
  • ? — нейтральное отношение, то есть никаких действий не предпринимать;
  • mx — включает в себя все адреса серверов, указанные в MX-записях домена;
  • ip4 — опция позволяет указать конкретный IP-адрес или подсеть IP-адресов;
  • a — указываем поведение в случае получения письма от конкретного домена;
  • include — включает в себя хосты, разрешенные SPF-записью указанного домена;
  • all — все остальные серверы, не перечисленные в SPF-записи.

Продолжение доступно только участникам

Вариант 1. Присоединись к сообществу «Xakep.ru», чтобы читать все материалы на сайте

Членство в сообществе в течение указанного срока откроет тебе доступ ко ВСЕМ материалам «Хакера», увеличит личную накопительную скидку и позволит накапливать профессиональный рейтинг Xakep Score! Подробнее

Вариант 2. Открой один материал

Заинтересовала статья, но нет возможности стать членом клуба «Xakep.ru»? Тогда этот вариант для тебя! Обрати внимание: этот способ подходит только для статей, опубликованных более двух месяцев назад.


Иван Пискунов: Технический эксперт, ресерчер, участник CTF-команды CraZY Geek$, 10 лет в индустрии ИБ. Автор блога ipiskunov.blogspot.com. Канал в telegram @w2hack или t.me/w2hack. Увлекается миром Unix, malware analysis, reverse engineering и тестированием сетей на проникновение

Комментарии (1)