Защита от мошенничества по электронной почте SPF+DKIM+DMARC

Безопасность

предисловие

Давным-давно было электронное письмо от белого человека, в котором говорилось, что доменное имя, на которое мы отправляли электронные письма, не проходило проверки безопасности, поэтому давайте восполним соответствующие проверки безопасности:

 I'm an independent cyber security researcher i have found multiple issues in your website.

 Vulnerability : Missing SPF 


 I am just looking at your SPF records then found following. SPF Records missing safe check which can allow me to send mail and phish easily any victim.

 PoC:

 <?php

 $to = "VICTIM@example.com";

 $subject = "Password Change";

 $txt = "Change your password by visiting here - [VIRUS LINK HERE]l";

 $headers = "From: https://karve.io";

 mail($to,$subject,$txt,$headers);

 ?>
 SPF record lookup and validation for: xxx.com

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

Опасности отправки мошеннических писем

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

png

В это время наши пользователи получат это поддельное электронное письмо.Если пользователь поверит в это, мошенники легко смогут его использовать.

png

Так что опасность мошенничества с электронной почтой по-прежнему очень высока. Эта проблема безопасности должна быть решена как можно скорее.

Недостатки электронной почты

При решении этой проблемы нам нужно понять, почему у электронной почты такая проблема?

Основой системы электронной почты является простой протокол передачи почты (Simple Mail Transfer Protocol).Simple Mail Transfer Protocol, SMTP), SMTP — это интернет-стандарт для отправки и ретрансляции электронной почты.SMTPШифрование почты, проверка целостности и проверка личности отправителя не поддерживаются.

Из-за этих недостатков информация электронной почты отправителя может быть перехвачена слушателями при передаче по сети для чтения содержимого сообщения, что приводит к утечке конфиденциальной информации, а также может подвергаться атакам «человек посередине» (Man-in-the-Middle attack, MitM) приводит к фальсификации сообщений электронной почты и фишинговым атакам.Чтобы решить эти проблемы безопасности и справиться со все более сложной сетевой средой, сообщество электронной почты разработало множество расширений электронной почты, таких какSTARTTLS, S/MIME, SPF, DKIMиDMARCи т.п. соглашение. Большинство современных производителей почтовых услуг также используют одну или несколько комбинаций вышеперечисленных расширенных протоколов, дополненных межсетевыми экранами приложений, байесовскими спам-фильтрами и другими технологиями, чтобы компенсировать недостатки безопасности электронной почты.

вы можете понять это какSMTPЧто-то не так с собой, а конфиденциальности и безопасности не хватает, поэтому есть еще несколько плагинов ему в помощь:

  1. Повышение конфиденциальности передачи, включая сквозное шифрование -->STARTTLS, S/MIME
  2. Аутентификация по электронной почте -->SPF, DKIM, DMARC

Суть мошенничества с электронной почтой заключается в том, что получатель электронной почты не может определить, является ли источник электронной почты законным или нет. Итак, здесь идет аутентификация по электронной почте. и хотяSTARTTLSиSMTP-STSОн обеспечивает шифрование электронных писем во время передачи и предотвращает прослушивание и чтение, но все же не может решить проблемы подделки личности отправителя и фальсификации сообщений. Поэтому аутентификация электронной почты особенно важна.

Поэтому в этом разделе основное внимание уделяетсяSPF, DKIM,DMARCТри протокола настроены и практикуются вместе с нашим сайтом.

SPF

Концепция SPF

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

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

  1. напрямую отклонить или удалить
  2. считается мусором
  3. Обычный инбокс, а на почте он будет? и другие предупреждения, говорящие получателю, что истинная личность сообщения не может быть проверена

Что касается того, какие из них, разные получатели почтовых ящиков имеют разные политики. Следующая картинка (веб-изображение) говорит об этом очень ясно:

png

Настройки SPF

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

  1. отправка напоминаний по электронной почтеno-replyПочтовый ящик, этот тип почты отправляется службой ses aws, и автоматически отправляется программой
  2. Почтовые ящики поддержки и продажи для отправки маркетинговых писем, этот тип почтовых ящиков представляет собой почтовые ящики gmail, которые отправляются вручную

Итак, два доменных имени, ses и google, должны быть настроены, так что мы находимся вrouter 53существуетxxx.comВ этом доменном имени второго уровня добавьте эту запись к исходной записи TXT:

"v=spf1 include:_spf.google.com include:amazonses.com -all"

png

Таким образом настраивается SPF. Это очень просто.

Проверьте, действует ли SPF.

После настройки мы проверяем, действительно ли SPF действует, и используем тот жеemkei.czЭтот сайт отправляет мошенническое электронное письмо на gmail, и вы можете видеть, что оно было получено:

png

Письмо получено, но вроде ничем не отличается от no configuration??? На самом деле нет, давайте откроем显示原始邮件посмотри

png

Нашла подсказку, источник письма (emkei.cz) IP-адрес93.99.104.21, а затем получатель почты gmail использует SPF для поиска конфигурации SPF доменного имени нашего сайта и обнаруживает, что этот ip не существует_spf.google.comиamazonses.comНа всех айпи под баннером. Так что проверка SPF не проходит. Для получателя почты gmail, если проверка SPF не удалась, будет предложен вопросительный знак, указывающий, что gmail не может проверить правильный источник почты, и пользователям следует быть осторожными.

Понимание настройки «все» в SPF

SPF имеет ряд различных настроек, и 98% доменов используют ~all (softfail), что означает, что если запись spf не соответствует исходному почтовому серверу, почта идентифицируется как программный сбой. Следующая таблица покажет разницу всех в SPF:

параметр результат значение
+all pass Разрешает всю почту, вроде ничего не настроил.
-all fail Будет помечать электронное письмо как пропущенное только в том случае, если исходный почтовый сервер точно соответствует, IP, MX и т. Д. С записью SPF.
~all softfail Позволяет отправить электронное письмо, и если что-то не так, пометит его как softfail.
?all neutral Без политики

И то, что мы устанавливаем, прямо настроено на провал-all

Проверьте правильность SPF

После настройки мы также можем использовать некоторые внешние сайты инструментов, чтобы определить, является ли наша конфигурация SPF нормальной:tools.wordtothewise.com/spfЭтот сайт покажет обзор всех IP-адресов, которые могут быть отправлены с использованием доменного имени.

png

То есть, если исходный IP-адрес отправителя отсутствует в этих списках IP-адресов. Тогда тест SPF не пройдет. станет НЕУДАЧНЫМ.

Настройки DKIM

Хоть и ставим SPF, но результат тоже виден, хотя в почтовых реквизитах отмеченыFail, но пользователь все равно ее получил, и она находится в обычном почтовом ящике, но рядом стоит знак вопроса (на самом деле у разных почтовых получателей разные методы обработки проверки SPF не проходят, а некоторые помещаются в корзину), Но это все равно будет обманом для некоторых неосторожных пользователей. Поэтому нам необходимо усилить аутентификационную часть. Также есть настройки DKIM.

Концепция ДКИМ

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

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

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

Например, когда мы отправляем электронные письма с помощью обычного gmail или ses, мы шифруем электронную почту с помощью автоматически сгенерированного закрытого ключа, связанного с доменом, генерируем подпись DKIM-Signature, а затем вставляем подпись DKIM-Signature и соответствующую информацию в заголовок электронной почты. , отправить Получателю, когда получатель получает электронное письмо, он получает открытый ключ с помощью DNS-запроса, чтобы проверить действительность подписи DKIM электронного письма, тем самым подтверждая, что электронное письмо защищено от подделки и целостность электронного письма содержание гарантировано. Таким образом, если мы можем использовать найденный открытый ключ для расшифровки информации о закрытом ключе в поле заголовка, это означает, что это правда.На самом деле это асимметричное сквозное шифрование, но мы раскрываем открытый ключ в поле заголовка. DNS TXT-запись доменного имени. , провайдера, который получает почту, можно найти в общедоступном Интернете. Следующая диаграмма поясняет процесс:

png

Настройки DKIM

На самом деле настройка заключается в том, чтобы установить открытый ключ в DNS TXT, потому что мы используем полезный сервис aws ses и gmail, поэтому нам нужно установить два типа:

Настройки SES DKIM

пройти черезАутентификация электронной почты с помощью DKIM в Amazon SESМы можем использовать самый простой способ, который предоставляет SES.Easy DKIMПроще говоря, нажмите на конфигурацию проверенного доменного имени, чтобы сгенерировать соответствующую конфигурацию DKIM, затем будут сгенерированы три записи cname, а затем поместите эти три записи cname в маршрутизатор 53.Настройте Easy DKIM для своего домена

png

png

Таким образом настраивается DKIM SES.

Конфигурация Gmail DKIM

Далее настраиваем Gmail.Gmail по умолчанию будет иметь настройки DKIM по умолчанию, но официальная рекомендация — использовать собственное доменное имя.В настоящее время Gmail также проверяется по нашему собственному доменному имени, а строка TXT-записей — это напрямую:

png

За полем p следует большой сегмент открытого ключа. Эта большая строка тоже генерируется автоматически, просто на фоне gmail:

  1. идти сadmin.google.comиспользуйте вашGoogle AppВойдите в аккаунт и введите фон, выберитеGoogle AppGmailAuthenticate email. Выберите свое доменное имя, чтобы сгенерировать открытый ключ. Как показано ниже

png

  1. Следуя сгенерированной информации, перейдите в свой DNS и добавьте запись TXT.
  2. назадadmin.google.comНажмите «Начать аутентификацию» на последней странице.

Таким образом, открытый ключ генерируется и вступает в силу.

Проверьте, работает ли DKIM

Отправьте обычное электронное письмо на мою электронную почту.Если DKIM настроен и успешно, PASS появится в деталях электронной почты.

png

На приведенном выше снимке экрана показано, что мы настроили DKIM, и проверка DKIM электронных писем, отправленных через правильный источник, проходит нормально.

png

Если это олицетворение, то это будет не ПРОШЕЛ, а НЕ ПРОШЕЛ.

И здесь следует отметить одну деталь: все ключи DKIM хранятся в поддомене с именем «_domainkey».

На скриншоте выше, учитывая поле подписи DKIMd=xxx.com,s=google, DNS-запрос:google.domainkey.xxx.com(или доменное имя domainkey, соответствующее ses),google.domainkey.xxx.comЭта запись txt будет проанализирована на нашем маршруте 53, и информация об открытом ключе будет запрошена через заголовок почты и DNS.Если она совпадает с закрытым ключом отправляющей почты и передана, это может быть не спам.Если она не проходит , письмо может быть спамом или содержимое письма было изменено.

Настройки DMARC

Вообще говоря, установив SPF и DKIM, можно эффективно заблокировать поддельные электронные письма. Однако, поскольку разные производители электронной почты используют разные стратегии борьбы со спамом, будут определенные риски. Например, поддельное электронное письмо, Tencent и NetEase Способ борьбы с ним может быть отклонить его напрямую, и гмайл обычно все равно будет нормально заходить в почтовый ящик, но пройдет ли? подсказка, потому что источник сообщения не может быть определен. В этом случае предупреждение о риске легко проигнорировать, и будут большие скрытые опасности, которые приведут к обману некоторых пользователей.Учитывая масштабы использования gmail большинством наших пользователей, эту проблему все же необходимо полностью решить. решена. Путем дальнейшего понимания проблемы настроек безопасности почтового сервиса и обнаружил, что DMARC может просто решить нашу проблему. Мы ожидаем, что окончательный эффект заключается в том, что поддельное электронное письмо попадет в корзину или сразу отклонит его после прохождения проверки.

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

Концепция DMARC

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

Стандарт проверки подлинности, отчетности и соответствия почты на основе домена DMARC (Domain-based Message Authentication, Reporting, and Conformance) используется для решения этих проблем в SPF и DKIM, основное назначение DMARC это установка "политики", эта политика содержит что делать при получении неаутентифицированной почты с определенного домена, первый авторизованный Что делать при сторонний провайдер отправляет неаутентифицированную почту. DMARC также позволяет интернет-провайдерам отправлять отчеты об успешной или неудачной аутентификации для домена, которые отправляются в «rua» (агрегированные отчеты) и «ruf» (криминалистический отчет). В то же время DMARC полагается на Запись SPF и ключ DKIM настроены потоком исходящей почты для обеспечения целостности источника и подписи почты. DMARC запускается, когда почта не проходит проверку SPF или DKIM. Стратегия.

Следующая диаграмма иллюстрирует этот процесс:

png

Общие параметры DMARC

Общие параметры конфигурации DMARC следующие:

  • adkim: (обычный текст; необязательный; по умолчанию «r») Указывает, что владельцу домена требуется строгий или смягченный режим аутентификации DKIM, допустимые значения следующие:
r: relaxed mode
s: strict mode
  • aspf: (обычный текст; необязательный; по умолчанию «r») Указывает, что владельцу домена требуется строгий или смягченный режим аутентификации SPF, допустимые значения следующие:
r: relaxed mode
s: strict mode
  • fo: параметры отчета об ошибках (обычный текст; необязательный; по умолчанию 0), список, разделенный двоеточиями, если «ruf» не указан, содержимое этого тега будет игнорироваться.
    • 0: если все механизмы аутентификации не дают результата «пройдено», сгенерируйте отчет об ошибке DMARC;
    • 1: если какой-либо механизм аутентификации выдает результат, отличный от «пройдено», сгенерируйте отчет об ошибке DMARC;
    • d: если проверка подписи сообщения не удалась, то создается отчет об ошибке DKIM;
    • s: если проверка сообщения SPF не удалась, создайте отчет об ошибке SPF.
  • p: Требуется политика получателя почты (обычный текст; обязательно) Указывает политику получателя в соответствии с запросом владельца домена.
    • none: Владелец домена просит не предпринимать никаких конкретных действий.
    • quarantine: владелец домена хочет, чтобы получатели почты помечали почту, не прошедшую проверку DMARC, как подозрительную.
    • reject: владелец домена хочет, чтобы получатели почты отклоняли почту, не прошедшую проверку DMARC.
  • pct: (обычное целое число 0-100; необязательно, по умолчанию 100) Процент сообщений в почтовом потоке владельца домена, к которым применяется политика DMARC.
  • rf: формат, используемый для отчетов об ошибках для конкретных сообщений (список открытого текста, разделенного двоеточиями; необязательный; по умолчанию "afrf").
  • ri: Требуемый интервал между сводными отчетами (простой текст, 32-разрядное целое число без знака; необязательно; по умолчанию 86400) Указывает, что интервал, требующий от получателей создания сводных отчетов, не превышает требуемого количества секунд.
  • rua: адрес электронной почты для отправки подробного отзыва (список DMARC URI, разделенный запятыми, в виде обычного текста; необязательно)
  • ruf: адрес электронной почты для отправки сведений о сообщении (разделенный запятыми список URI DMARC в виде обычного текста; необязательно)
  • sp: политика, которую получатели электронной почты должны использовать для всех субдоменов (обычный текст; необязательно), по умолчанию политика, указанная «p», будет применяться к этому доменному имени и субдомену.
  • v: Версия (простой текст; обязательно) со значением "DMARC1" и должна быть первой меткой.

Конфигурация DMARC

Конкретная конфигурация нашего сайта такая же на маршрутизаторе 53 (конфигурация google и ses одинакова, поэтому нам нужно настроить только одну), SES предоставляет конкретную конфигурациюСоответствие требованиям DMARC с использованием Amazon SES, например:

"v=DMARC1;p=quarantine;pct=25;rua=mailto:dmarcreports@example.com"

Проще говоря, эта политика предписывает провайдерам электронной почты делать следующее:

  • Находит все электронные письма с доменом «От» example.com, которые не прошли проверку подлинности SPF или DKIM.
  • По-другому отправить 25% электронной почты в папку для спама (вы также можете использовать P = None без каких-либо операций или использовать p = отклонить напрямую отказаться от почты).
  • Отправьте отчет обо всех сообщениях электронной почты, которые не прошли проверку подлинности, в сводке (то есть отчет, в котором собраны данные за определенный период времени, а не отправляется отдельный отчет для каждого события). Поставщики электронной почты обычно отправляют эти агрегированные отчеты один раз в день, но конкретные политики зависят от поставщика.

Итак, наша конкретная конфигурация выглядит следующим образом:

_dmarc.xxx.com.
"v=DMARC1;p=reject;rua=mailto:dmarc-reports@xxx.com; adkim=s;aspf=s"

png

Указывает, что будут выполнены следующие действия:

  • Строгая аутентификация с помощью SPF и DKIM
  • Если проверка не пройдена, он откажется получать
  • После отказа отправить отзыв на указанный адрес электронной почты

Если вы хотите проверить, соответствуют ли ваши SPF и DKIM DMARC, вы можете проверить это с помощью команды:

nslookup -type=TXT _dmarc.xxx.com

png

Видно, что проблем нет. Конечно, если DMARC не настроен,Помощник по настройкеможет помочь настроить:

png

Результаты теста DMARC

положить в мусорное ведро

Теперь, когда конфигурация завершена, ее можно протестировать дальше, и мы изменим стратегию, чтобы поместить ее в корзину (p=карантин), в это время пройтиemkei.czОтправленные электронные письма, в случае сбоя SPF, будут помещены в корзину.

png

отказаться принять

Если изменить его на отклонение (p=reject), электронное письмо будет отклонено напрямую, и каждый день в папку «Исходящие» будет отправляться возвращенное электронное письмо. Вот, например, если хакер подделывает электронное письмо и отправляет его пользователю, и он отклонен, то на наш обычный почтовый ящик, например, саппорт получит отчет о баунсе:

png

нормальный

Если нормально, то все три стратегии пройдут, т.к. у нас два источника отправки, значит надо пробовать оба

  1. Это серия писем без ответа от ses

png

  1. Это серия электронных писем службы поддержки Gmail.

png

Вы можете видеть, что идентификатор почты отличается, один ses, другой gmail

DMARC проверяет, в норме ли SPF и DKIM

Мы знаем, что при настройке DMARC, SPF и DKIM должны быть хорошо согласованы. Хотя пройти можноnslookup. Но об этом можно судить и по некоторым внешним сторонним сайтам, например этомуDMARC Record Checker, Введите свое доменное имя, чтобы проверить, правильно ли настроен ваш DMARC.

png

Суммировать

С SPF + DKIM + DMARC наш сайт может очень хорошо решить проблему мошенничества с электронной почтой.

Наконец, поблагодарите Шули за тест и соответствующие тестовые данные. Больше хороших статей смотрите в моем блоге:kebingzao.com/

использованная литература

Инструмент для проверки SPF

Инструмент тестирования DKIM

  • dkimvalidator.com/(Вам необходимо отправить электронное письмо, если тест пройден, когда у вас будет конфигурация DKIM, вы сможете просмотреть возвращенные результаты в разделе DKIM на веб-сайте)
  • А вот Ким core.org/tools/ может съесть…(Заполните селектор и доменное имя, чтобы проверить, вы можете проверить, правильно ли настроен процесс DKIM)
  • www.hhlink.com/Обнаружение DKIM/1(Отправив ему электронное письмо, он может помочь вам проверить правильность SPF и DKIM)

Инструмент тестирования DMARC

Поддельное электронное письмо для отправки на тестовый сайт

  • emkei.cz/(Отправлять все виды поддельных электронных писем)
  • tool.Error.net/Продажи ленивым, это прикосновение...(Поддельная электронная почта, отправка электронной почты от любого отправителя, отправка электронной почты с поддельного адреса электронной почты, отправка электронной почты с любого адреса электронной почты)