SPF, DKIM и DMARC: защита почты домена от подделки

0
23
Обложка статьи: SPF, DKIM и DMARC: защита почты домена от подделки

Подделать отправителя письма так же просто, как написать чужой адрес на конверте. Если домен не защищён, мошенники рассылают письма от его имени вашим клиентам и сотрудникам, а настоящие письма компании попадают в спам. Три записи DNS решают эту задачу: SPF указывает, кому можно отправлять почту от домена, DKIM подписывает письма, DMARC объединяет проверки и говорит получателю, что делать с подделками. Ниже порядок внедрения без потери легитимной почты.

Статья опирается на логику направления «Сетевая безопасность» из методики зрелости Группы Сбер (источник); это методика для крупных компаний, мы используем её как ориентир и пересказываем своими словами. Примеры используют домен example.com и документационные адреса. Записи DNS меняйте поэтапно, с учётом времени жизни (TTL).

Как это работает

Механизм Что проверяет Где хранится
SPF Разрешён ли IP-адрес отправителя для домена из письма (конверта) TXT-запись домена
DKIM Подписано ли письмо ключом домена и не изменено ли оно по пути TXT-запись СЕЛЕКТОР._domainkey.example.com, закрытый ключ на почтовом сервере
DMARC Совпадает ли домен проверенного SPF/DKIM с адресом «От кого» в письме, и что делать при несовпадении TXT-запись _dmarc.example.com

Стандарты: SPF — RFC 7208, DKIM — RFC 6376, DMARC — RFC 7489 (проверьте, не заменён ли он более новой редакцией). Порядок важен: сначала SPF и DKIM, затем DMARC.

Шаг 0. Составьте список источников почты

Прежде чем менять DNS, найдите все системы, отправляющие письма от вашего домена: основной почтовый сервер, облачная почта, рассылки, CRM, сайт и формы, системы мониторинга, принтеры и сканеры, подрядчики. Пропущенный источник после ужесточения политики перестанет доставляться. Список сложите в реестр активов: реестр ИТ-активов.

Шаг 1. SPF

Запись перечисляет разрешённых отправителей и заканчивается политикой для остальных. Пример (адреса и включения заменяйте своими):

example.com.  IN TXT  "v=spf1 mx ip4:203.0.113.10 include:_spf.mailprovider.example -all"
  • mx — серверы из MX-записей домена;
  • ip4: — отдельный адрес или подсеть;
  • include: — отправители стороннего сервиса (используйте значение из документации сервиса);
  • -all — все остальные запрещены; на старте можно ~all (мягкое отклонение), затем перейти на -all.

Ограничение: SPF допускает не более десяти DNS-запросов при проверке (каждый include, mx, a считается). Превышение делает запись недействительной. Одна запись SPF на домен, не две.

Шаг 2. DKIM

На почтовом сервере создаётся пара ключей: закрытый остаётся на сервере и подписывает исходящие письма, открытый публикуется в DNS. Для облачной почты ключи генерирует провайдер, вы только добавляете запись. Для собственного сервера на Postfix используется OpenDKIM (описания отправки без попадания в спам: настройка почтового сервера). Пример публикации ключа:

mail2026._domainkey.example.com.  IN TXT  "v=DKIM1; k=rsa; p=ОТКРЫТЫЙ_КЛЮЧ_BASE64"

Правила: селектор (здесь mail2026) включает дату для удобной смены ключей, длина ключа не менее 2048 бит, ключ меняют по расписанию (например, раз в год). Закрытый ключ хранится с правами, доступными только службе подписи.

Шаг 3. DMARC: сначала только наблюдение

Первая запись не блокирует письма, а собирает отчёты о том, кто и откуда отправляет почту от вашего имени:

_dmarc.example.com.  IN TXT  "v=DMARC1; p=none; rua=mailto:dmarc-reports@example.com; fo=1"
  • p=none — только наблюдение;
  • rua — адрес для сводных отчётов (XML от почтовых провайдеров);
  • fo=1 — запрос отчётов при любой неудаче проверки.

Отчёты приходят в виде XML-архивов. Читать их вручную неудобно: используйте сервис разбора отчётов DMARC или открытую утилиту. Две–четыре недели наблюдения покажут все источники, в том числе забытые.

Шаг 4. Исправьте несоответствия и ужесточайте политику

  1. Добавьте найденные легитимные источники в SPF и настройте для них DKIM с вашим доменом.
  2. Когда отчёты перестанут показывать легитимную почту с ошибками, переходите на p=quarantine (письма с ошибками в спам), сначала на части трафика: pct=10, затем 50, затем 100.
  3. Через несколько недель без проблем включайте p=reject: получатели отвергают подделки.
_dmarc.example.com.  IN TXT  "v=DMARC1; p=reject; rua=mailto:dmarc-reports@example.com; adkim=s; aspf=s"

Параметры adkim=s и aspf=s требуют строгого совпадения домена. Для поддоменов, которые не отправляют почту, задайте sp=reject, а для неиспользуемых доменов опубликуйте SPF v=spf1 -all и DMARC p=reject.

Шаг 5. Проверьте записи

dig +short TXT example.com
dig +short TXT mail2026._domainkey.example.com
dig +short TXT _dmarc.example.com

Ожидаемый результат: в ответе видна ваша запись SPF (одна), открытый ключ DKIM и запись DMARC. Затем отправьте тестовое письмо на ящик у крупного провайдера и откройте исходные заголовки: в них должны быть результаты проверок spf=pass, dkim=pass и dmarc=pass. Если вы видите fail, смотрите, какой источник не вошёл в запись.

Дополнительные меры

  • MTA-STS и TLS-RPT повышают защиту транспорта почты (шифрование между серверами); это следующий шаг после DMARC.
  • Защита самих ящиков: MFA, ограничение входа, мониторинг правил пересылки.
  • Обучение сотрудников распознаванию подделок: осведомлённость и фишинг-тренировки.

Диагностика

Симптом Причина и что делать
SPF показывает permerror Больше десяти запросов или две записи SPF. Уберите лишние include, объедините записи, используйте подсети
DKIM fail у рассылок Сервис подписывает своим доменом, а не вашим. Настройте подпись вашего домена по инструкции сервиса
DMARC fail при пересылке Пересылка ломает SPF. Полагайтесь на DKIM; для списков рассылки учитывайте ограничения
Письма пропали после reject Не был учтён источник. Вернитесь на quarantine или none, добавьте источник и повторите по шагам
Отчётов DMARC нет Неверный адрес в rua или ящик не принимает вложения. Проверьте запись и ящик

Где это в модели зрелости

Материал относится к направлению «Сетевая безопасность» (материалы направления, карта зрелости) и закрывает часть защиты почты, названную в планах. Уровень 2 по сети требует управляемого периметра и защиты сервисов, а подделка домена — один из самых частых векторов фишинга.

Как проверить

  1. В DNS есть ровно одна запись SPF, запись DKIM и запись DMARC, команды dig показывают их.
  2. Тестовое письмо проходит все три проверки у внешнего провайдера.
  3. Политика DMARC ужесточена по этапам и сейчас не слабее quarantine; для неиспользуемых доменов reject.
  4. Отчёты DMARC разбираются не реже раза в месяц, новые источники учитываются.

Источники

Оставьте свой ответ