Защита от подделки поля From

Posted by

В процессе отправки письма имеется возможность сфальсифицировать отправителя, т. е. Послать письмо где в поле From (От кого) внести произвольный почтовый адрес. Для того, чтобы не было такого обмана сообщество ввело в действие стандарт именуемый, как SPF (Sender Policy Framework)структура политики отправителя.

Данный стандарт позволяет Администратору домена указать в TXT-записи определенную строку, где содержится список всех серверов для которых разрешено отправлять @-сообщения с обратными адресами в этом самом домене. Чтобы применить данный стандарт необходимо:

1. Права Администратора на редактирование Ваших DNS записей купленного доменного имени.

2. Адрес сервера с которого к Вам будет отправляться сообщения.

На заметку: созданное правило применяется не сразу, а может достигать период до 72 часов, так что не следует паниковать по напрасну что Вы все сделали, а изменений не видно.

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

а) Версия, на текущий момент она одна: v=spf1

б) Префикс-механизм, т. е. (+,-,~,?) и (all,ip4,ipv6,a,mx,include (взять данные с другого сервера))

в) Модификаторы: redirect (использовать данные другого сервера) и exp (ссылка на сообщение при отказе принятия сообщения).

Примеры записей:

Пример №1:

v=spf1 mx -all

, где:

v=spf1 → используемая версия SPF

mx →содержит все адреса серверов, указанные в MX-записях Вашего домена

-all → отклонить письма от всех остальных серверов которые не указаны в SPF-записи.

Расшифровывается, как принимать всю почту из серверов указанных в MX-записях, а от всех остальных отклонять.

Существуют и другие опции:

  • «+» → принимать почту (параметр по дефолту)
  • «-» → не принимать почту
  • «~» → письмо будет принято, но будет отметка что оно идет как «СПАМ»
  • «v»=spf1 → используемая версия SPF
  • «?» → нейтральное отношение, нужна дополнительная проверка
  • «mx» → содержит все адреса серверов, указанные в MX-записях Вашего домена
  • «ip4» → можно указать одиночный IP-адрес или же всю сеть адресов
  • «a» → объяснение что делать с письмом от определенного домена
  • «include» → включает в себя хосты, разрешенные SPF-записью указанного домена
  • «all» → все остальные сервера, не перечисленные в SPF-записи.

Пример №2:

v=spf1 +a +mx -all

, где:

«+a» → разрешаем прием корреспонденции от узла, адрес которого совпадает с IP-адресом в записи типа (А) для определенного домена (к примеру ekzorchik.ru)

«+mx» → разрешаем прием писем, если в роли отправляющего хоста указаны mx-записи опеределенного дома (к примеру ekzorchik.ru)

«-all» → если сообщение не попало ни под одно правило, что его следует изничтожить (отвергнуть).

Расшифровывается, как приём сообщений с серверов в записях A & MX, а от всех остальных доменов сообщения отклоняются.

Пример №3:

v=spf1 -all

Расшифровывается, как игнорировать все почту с домена (т. е. Текущего)

Пример №4:

v=spf1 +mx ~all

Расшифровывается, как принимать все почту с текущих mx серверов, а со всех остальных сообщения буду приниматься, но отправлять как СПАМ письма (А потому данные письма могут быть изучены более тщательно)

Пример №5:

v=spf1 redirect:yahoo.com

Расшифровывается, как вместо того чтобы писать правила работы их можно забрать с указанного домена (т. е. Yahoo.com)

Пример №6:

v=spf1 ipv4:ekzorchik.ru/24 -all

Расшифровывается, как идет доверие всей почты из сети класса С в котором располагается данный домен, т. е. (ekzorchik.ru (185.98.87.231)) значит доверять из сети: 185.98.87.[0-255], а остальная почта будет проигнорирована.

Пример №7:

v=spf1 ptr:ekzorchik.ru exist:ekzorchik.ru -all

Расшифровывается, как проверяется наличие PTR записи отправителя. Если она соответствует указанному домену, то почта пропускается, где параметр exist осуществляет обычную проверку работоспособности доменного имени.

Пример №8:

v=spf1 +a +mx -all exp:spf.remote.org

Расшифровывается, как доверие всей почты указанной из доменных имен перечисленных в записях (A & MX) , если это не так почта игнорируется и отправляется сообщение из предварительно созданной TXT-записи: spf.remote.org IN TXT «You host not allowed @-mail to me»

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

ekzorchik@ekzorchik:~$ dig TXT nemdom.ru

nemdom.ru. 38400 IN TXT "v=spf1 mx -all"

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

v=spf1 redirect=nemdom.ru

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