Запрет писем с поддельным полем From или спам от себя к себе в postfix

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

Углубленный онлайн-курс по MikroTik

Научиться настраивать MikroTik с нуля или систематизировать уже имеющиеся знания можно на углубленном онлайн-курcе по администрированию MikroTik. Автор курcа – сертифицированный тренер MikroTik Дмитрий Скоромнов. Более 40 лабораторных работ по которым дается обратная связь. В три раза больше информации, чем в MTCNA.

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

I greet you!

I have bad news for you.
06/28/2018 - on this day I hacked your operating system and got full access to your account eme@eme.ru
On that day your account (eme@eme.ru) password was: gyhbtj5pq6b

It is useless to change the password, my malware intercepts it every time.

How it was:
In the software of the router to which you were connected that day, there was a vulnerability.
I first hacked this router and placed my malicious code on it.
When you entered in the Internet, my trojan was installed on the operating system of your device.

After that, I made a full dump of your disk (I have all your address book, history of viewing sites, all files, phone numbers and addresses of all your contacts).

A month ago, I wanted to lock your device and ask for a small amount of money to unlock.
But I looked at the sites that you regularly visit, and came to the big delight of your favorite resources.
I'm talking about sites for adults.

I want to say - you are a big pervert. You have unbridled fantasy!

After that, an idea came to my mind.
I made a screenshot of the intimate website where you have fun (you know what it is about, right?).
After that, I took off your joys (using the camera of your device). It turned out beautifully, do not hesitate.

I am strongly belive that you would not like to show these pictures to your relatives, friends or colleagues.
I think $971 is a very small amount for my silence.
Besides, I spent a lot of time on you!

I accept money only in Bitcoins.
My BTC wallet: 15ZHnf1MPn6ybb8yUeAoCQ1AJtiKhg3NrP

You do not know how to replenish a Bitcoin wallet?
In any search engine write "how to send money to btc wallet".
It's easier than send money to a credit card!

For payment you have a little more than two days (exactly 50 hours).
Do not worry, the timer will start at the moment when you open this letter. Yes, yes .. it has already started!

After payment, my virus and dirty photos with you self-destruct automatically.
Narrative, if I do not receive the specified amount from you, then your device will be blocked, and all your contacts will receive a photos with your "joys".

I want you to be prudent.
- Do not try to find and destroy my virus! (All your data is already uploaded to a remote server)
- Do not try to contact me (this is not feasible, I sent you an email from your account)
- Various security services will not help you; formatting a disk or destroying a device will not help either, since your data is already on a remote server.

P.S. I guarantee you that I will not disturb you again after payment, as you are not my single victim.
 This is a hacker code of honor.

From now on, I advise you to use good antiviruses and update them regularly (several times a day)!

Don't be mad at me, everyone has their own work.
Farewell.

Смысл письма в том, что человек якобы взломал ваш компьютер и следил за вами. Наследил там чего-то важного по посещаемым сайтам и через веб камеру и теперь грозится это обнародовать. Расчет на то, как я понял, что человек по порнографическим сайтам лазил. Для убедительности, в письме приложен пароль, взятый из какой-то публичной базы данных слитых учеток. Сейчас таких баз полно. Пароли могут быть реальными!!! Один человек сказал, что знает этот свой пароль, но только он не от почты, а использовался на сайте booking.com.

В письме используется поддельный адрес From, для того, чтобы письмо выглядело якобы отправленное с вашей учетки, что должно подтверждать реальность угроз. В общем, подход системный получился. Конечно, все это подделка и развод. Я решил сберечь нервы пользователей и каким-то образом оградить людей от подобных писем. С помощью postfix это сделать очень просто. Базовые методы борьбы со спамом я уже подробно расписывал в отдельном разделе в статье по настройке postfix. Но текущая ситуация там не учитывается. Сейчас исправим это.

Для начала давайте проверим, реально ли на ваш почтовый сервер отправить письмо с поддельным полем From. Для этого подключимся к нему по Telnet и попробуем вручную выполнить отправку.

Проверка почтового сервера через telnet

Список команд, которые я вводил:

telnet mx.eme.ru 25
helo yandex.ru
mail from:<zva@eme.ru>
rcpt to:<zva@eme.ru>
data
Test
.
quit

Я использовал поддельные данные в поле helo, представившись yandex.ru и дальше отправил тестовое письмо. Сервер его принял и успешно доставил в ящик. Вот исходный текст этого письма.

Исходный текст письма с поддельным полем From

Обратите внимание, что используется антиспам Kaspersky Security 8.0 for Linux Mail Server. Но у него настроен белый список на адреса исходного домена. Получается, что антивирус так же проверяет поле From, которое подделано, и не защищает пользователей от таких писем.

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

smtpd_sender_restrictions =	permit_mynetworks,
				permit_sasl_authenticated,
				reject_authenticated_sender_login_mismatch,
				reject_unknown_sender_domain,
				reject_non_fqdn_sender,
				reject_unlisted_sender,
				reject_unauth_destination,
				check_sender_access hash:/etc/postfix/sender_access

К существующим ограничениям я добавил еще одно в самый конец. Создадим указанный файл sender_access со следующим содержимым.

# mcedit /etc/postfix/sender_access
eme.ru REJECT You are not eme.ru
# postmap /etc/postfix/sender_access

Всем, кто захочет отправить нам письмо с доменом нашего сервера, мы будем выдавать ошибку и отвечать, что вы это не мы :) Перечитываем конфигурацию postfix:

# postfix reload

Теперь попробуем еще раз через telnet отправить письмо с полем From из нашего домена.

Запрет подделки From

Сервер выдал ошибку 554. В логе почтового сервера будет следующая строка:

Nov  7 17:59:45 ememail postfix/smtpd[17430]: NOQUEUE: reject: RCPT from broadband: 554 5.7.1 <zva@eme.ru>: Sender address rejected: You are not eme.ru; from=<zva@eme.ru> to=<zva@eme.ru> proto=SMTP helo=yandex.ru

Все, больше ни один отправитель не сможет использовать в поле From наш домен. Вообще странно, что изначально это возможно. Протокол smtp давно пора как-то изменить, чтобы раз и навсегда защитить его от спама. На него нагородили уже столько костылей, но ничего не помогает.

Онлайн-курс по устройству компьютерных сетей.

На углубленном курсе "Архитектура современных компьютерных сетей" вы с нуля научитесь работать с Wireshark и «под микроскопом» изучите работу сетевых протоколов. На протяжении курса надо будет выполнить более пятидесяти лабораторных работ в Wireshark.
Не понравилась статья и хочешь научить меня администрировать? Пожалуйста, я люблю учиться. Комментарии в твоем распоряжении. Расскажи, как сделать правильно!

Помогла статья? Подписывайся на telegram канал автора

Анонсы всех статей, плюс много другой полезной и интересной информации, которая не попадает на сайт.

Автор Zerox

Владимир, системный администратор, автор сайта. Люблю настраивать сервера, изучать что-то новое, делиться знаниями, писать интересные и полезные статьи. Открыт к диалогу и сотрудничеству. Если вам интересно узнать обо мне побольше, то можете послушать интервью. Запись на моем канале - https://t.me/srv_admin/425 или на сайте в контактах.

56 комментариев

  1. Это 100% НЕРАБОЧИЙ метод, объясняю почему:
    дело в том, что данная проверка сравнит только поле FROM в smtp сессии, но не поле MAIL FROM в самом конверте письма.
    Если сомневаетесь, то попробуйте сами протестировать с указанием валидного обратного адреса (отправителя) и адреса получателя в заголовке MAIL FROM.
    Пример с использованием mailutils:
    echo "Hello World" | sudo mail -r valid_sender -a"FROM:valid_recipient" -s "Test Message" valid_recipient

  2. Здравствуйте, давно сделал по Вашей статье, но пару дней назад пользователям стали приходить письма типа от админа нашего сервера с просьбой изменить пароль на почту, при нажатии на кнопку изменить пароль открывается поддельный сайт нашей организации (очень похож на наш) и там форма для изменения пароля. Короче нехорошо это. Решил проверить и вот что получается:

    telnet mail.myserver.com 25
    Trying MY_IP...
    Connected to mail.myserver.com.
    Escape character is '^]'.
    220 mail.myserver.com ESMTP
    helo yandex.ru
    250 mail.myserver.com
    mail from:
    250 2.1.0 Ok
    rcpt to:
    554 5.7.1 : Sender address rejected: You are not myserver.com
    quit
    221 2.0.0 Bye
    Connection closed by foreign host.

    Тут всё нормально. Теперь пробую так как нам приходит от левого сервера (имена его тут правильные):

    root@srv:~$ telnet mail.myserver.com 25
    Trying MY_IP...
    Connected to mail.myserver.com.
    Escape character is '^]'.
    220 mail.myserver.com ESMTP
    helo mailgun.us
    250 mail.myserver.com
    mail from:
    250 2.1.0 Ok
    rcpt to:
    450 4.2.0 : Recipient address rejected: Greylisted, see http://postgrey.schweikert.ch/help/myserver.com.html

    То есть когда ставят в поле от кого: admin=myserver.com, то письмо проходит. Как так получается? Что можно исправить? Спасибо.

    • Сорри, тут видимо какой-то синтаксис в коментах, не видны ящики.

      Первый пример:

      mail from admin_собака_myserver.com
      250 2.1.0 Ok
      rcpt to user_собака_myserver.com
      554 5.7.1 admin_собака_myserver.com: Sender address rejected: You are not myserver.com
      quit
      221 2.0.0 Bye
      Connection closed by foreign host.

      Второй пример:

      mail from admin=myserver.com_собака_mg.intelligent.com
      250 2.1.0 Ok
      rcpt to user_собака_myserver.com
      450 4.2.0 user_собака_myserver.com Recipient address rejected: Greylisted, see http://postgrey.schweikert.ch/help/myserver.com.html
      Connection closed by foreign host.

      • Так во втором случае он представляется не вашим доменом, а mg.intelligent.com.

        • Дело в том, что некоторым пользователям приходят письма от admin_собака_myserver.com, по логам выяснил что приходят на самом деле с другого домена, но как-то меняют поле From. Как поступить в данном случае? Спасибо.

          • Я все же не понял вашу проблему. Вы показываете лог, где в поле From указан не ваш домен:
            mail from admin=myserver.com_собака_mg.intelligent.com

            А потом пишите, что всё же приходят письма от admin_собака_myserver.com. Покажите полные заголовки письма, которое приходит к вам через настроенную по статье защиту и там в поле from указан ваш домен. Из вашего описания не понятно, с какими конкретно письмами проблема.

            • Вот кусок лога, свой домен я изменил тут на myserver:

              Sep 7 10:13:11 mail postgrey[2904]: action=greylist, reason=new, client_name=unknown, client_address=94.131.241.11, sender=admin=myserver.com@mg.intelligent.com, recipient=user@myserver.com
              Sep 7 10:13:11 mail postfix/smtpd[11497]: NOQUEUE: reject: RCPT from unknown[94.131.241.11]: 450 4.2.0 user@myserver.com: Recipient address rejected: Greylisted, see http://postgrey.schweikert.ch/h
              elp/myserver.com.html; from=admin=myserver.com@mg.intelligent.com to=user@myserver.com proto=SMTP helo=mailgun.us

              И вот это письмо пришло пользователю якобы от admin@myserver.com, а такой ящик у нас реально есть. То есть sender указан, как admin=myserver.com@mg.intelligent.com, но приходит как от admin@myserver.com.

              Непонятно почему и как избавиться от поддельных From? Спасибо.

  3. Николай

    При данной защите к примеру сайт, который отсылает через postfix письма, сможет отослать сам себе с адреса 1@s.ru письма на адрес 2.s.ru или в таком случае тоже обломится?
    Аналогичный вопрос - если сервер получатель не локальный, а скажем Yandex/Mail, и твой postfix всего лишь relay?

  4. Алескандр

    А у меня ничего не получилось, сервер все равно принимает письма.... что может быть?

    • Ошибка где-то в конфигурации. Способ в статье 100% рабочий. Я много раз использовал.

      • Александр

        Все перепроверил, все вроде не сложно и понятно. Но внутри своей сетки все равно дает самому себе писать. Так должно быть?

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

        554 5.7.1 : Sender address rejected: You are not mydomen.ru

        но это уже другая проверка не так ли?

        • Александр

          нет все равно (шапка письма telnet писал снаружи и пришло)

          Return-Path:
          Delivered-To: my@domen.ru
          Received: from ya.ru (unknown [95.79.153.6])
          by mail.siterra.ru (Postfix) with SMTP id E018D2018F3EB
          for ; Tue, 3 Aug 2021 04:36:58 +0500 (+05)

          123456

          Что же у меня то не так.....

        • А внутри сетки отправка с авторизацией проходит? Может у вас вся локалка добавлена в доверенную сеть, где никаких проверок нет.

          • Александр

            Вся локалка в доверенной, но я телнетом то снаружи пробовал с домашнего IP Надо его тоже в доверенную зону сунуть и попробовать. может снаружи не даст писать самому себе

  5. Виталий

    Кто сталкивался с ситуацией, когда на ваш домен приходит письмо с вашего несуществующего ящика, при этом в теле письма отправитель ваш сервер? Предварительно есть 100% вероятность, что были скомпрометированы некоторые ящики методом фишинга. Мне кажется что есть лазейка по изменению поля FROM при условии что есть данные для авторизации на почтовом сервере(ящик и пароль к нему). Как побороть?

    • Вариант побороть один - изменить пароли у всех скомпрометированных ящиков. Злоумышленники проходят авторизацию, поэтому к ним не применимы большинство фильтров. Обычно тем, кто прошел авторизацию, доверяют.

      • Как тогда вычислить эти ящики? Как я понимаю, это отследить всех кто перешел по фишинговой ссылке, но только в случае вэб-почты, а с десктопным клиентом не совсем ясно как быть.

        • Смотрите поддельное письмо, там будет время отправки и id письма. По логу авторизаций смотрите, кто в это время логинился. А вообще в postfix в логе и так видно, кто когда и кому слал письма. В общем, по логам нет проблем определить автора любого письма.

  6. Столкнулся с проблемой проверки SPF моим почтовиком, как бы на отправку все работает так как особо настройки не требует кроме записей в DNS, а вот входящая почта залетает как попало, пробовал использовать spf-policyd-python но он почему-то не работает, почта вообще перестат заходить. Есть ли гайды по настройке фильтрации входящей почты, так как без внутренней проверки можно получить поддельные письма якобы с других доменов?

  7. Михаил

    И да, без авторизации блочится.

  8. Михаил

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

    Владимир, еще раз спасибо.

    • А без авторизации блокируется? То есть способ нормально работает? Я давно не проверял уже.

      • Михаил

        Через телнет это ведь и есть без авторизации? Пароль то не спрашивает.
        А почтовый клиент честно идет с включенным шифрованием и логином с паролем.

  9. Zdrastvuyte Vladimir,uje vtoroy interesniy post chto ya chitayu na vashem sayte
    hotel bi pointeresovaytsa po etoy teme: ya toj stalkivalsa s etoy problemoy i ustanovl open Dmarc(propisal pravilniy txt record + ustanovka open dmarc na ubuntu)
    chto luchshe?
    zaranee spasibo

    • Dmarc и подобная настройка не связаны между собой. Надо настраивать и то, и другое.

  10. По всем твоим статьям настроил с нуля почтовик, Всё супппер...! Я считаю что так оно и должно быть, вместо тремя кликами мыши разворачивания монстров типа чанги, зимбры, ай-ред-мэйл и т.п. Установил ограничение на максимальный размер вложений в 20 метров. Подошёл ко мне директор и попросил что бы отбойник, тем кто пытается больше этого объёма отправить, приходил на русском языке. Где это можно подкорректировать...?

    • Насколько я понимаю, простых решений тут нет. Эти ответы наверняка соответствуют какому-то rfc. В postfix есть настройка REJECT ACTIONS, думаю можно от нее оттолкнуться и что-то сделать. Посмотреть, какой код возвращает postfix на превышение размера и задать какой-то свой текст на этот код.

  11. Перед тем как письмо заряжать для массовой рассылке его лучше чекнуть через бесплатный сервис https://spamtest.smtp.bz, он показывает ошибки получше мэйлтестера и попыток не ограничено

  12. Аноним

    Тоже приходили такие письма. однако проверка изначальная подделки поля from не прошла.

    mail from:
    mail to:
    553 5.7.1. : Sender address rejected: not logged in.

  13. День добрый, а как то эта проблема решается на exim, а то тоже начал получать такие письма, пощупал сервер телнетом и он реально отправил письмо.

  14. А таким образом разве не будет блокироваться отправка сообщений внутри домена?

    • Нет, не будет. Внутренние пользователи отправляют через авторизацию по логину пароль, а эта категория пользователей имеет все разрешения на отправку мимо проверок и фильтров.

  15. Здравствуйте, читал о схожем решении на форуме experts-exchange и там сказали следующее, цитирую:

    NOTE if you do this then all email from your domain is rejected. If you do this then you will oviously need to use a different server for sending email.

    Т.е. все пользователи моего домена не смогут отправлять письма наружу, после включения данной опции. Так ли это? Не хотелось бюы положить всю исходящую почту. Постфикс у меня используется в качестве пограничного шлюза для Exchange. Заранее спасибо)

    • Я в статье описываю вполне конкретный случай, когда postfix единственный сервер. Когда он работает в связке с чем-то еще, то надо внимательно смотреть, как это скажется на работе всей системы. Я не знаю, как конкретно у вас настроена связка. Как минимум, можно банально всю почту со своего exchange пустить в обход всех проверок и она точно будет отправляться.

      В этом надо разбираться внимательно и понимать, что делаешь. Если вы не чувствуете уверенности в данной теме, то лучше не трогайте ничего. Можете что-то сломать.

  16. Добрый день.
    Как можно разрешить для конкретного ящика получение писем только с конкретных внешних адресов (доменов)

  17. например так
    х.х.х.х ОК
    testmail.com REJECT You are not testmail.com
    не получается разрешить только одному ип х.х.х.х

  18. А если все таки нужно что бы с некоторого паблик ип приходило письмо с from нашего почтового домена?

    • Надо полностью конфигурацию смотреть. Суть в том, что того, кому надо разрешить отправку, надо поставить в разрешающее правило повыше.

      • Поддерживаю вопрос выше, хотелось бы по-подробнее узнать про то как разрешающий список сделать для некоторых ip.
        Буду очень признателен.

  19. Хм, как такое может быть с *корректно* настроенной SPF-записью на сервере имен? С этим все в порядке?

    • С spf все в порядке. Полностью решить указанную проблему с помощью spf не получится. Если поставить -all, то могут возникнуть другие неудобства и проблемы. Здесь же решается проблема локально на конкретном сервере. Более того, spf проверяет Return-Path, в статье идет речь про поле From.

      • Бред бредовый. -all никаких проблем не создает, если все указать верно. а городить костыли подобного плана, это еще больший бред.

  20. Доброго.

    >А будет ли статья про установку и настройку Kaspersky Security 8.0 for Linux Mail Server?

    Древнее оно. И за деньги.

    Пользуйте Rspamd отдельно thomas-leister.de/en/mailserver-debian-stretch или готовое mailcow.email
    и\или Proxmox Mail Gateway

  21. А будет ли статья про установку и настройку Kaspersky Security 8.0 for Linux Mail Server?

    • А зачем? У данной программы хороший подробный мануал на русском языке с инструкцией по установке. Там нет никаких сложностей. Решение хорошее и надежное. Я уже лет 10 его знаю и всегда использую. Качество фильтрации отличное, ложный срабатываний нет. Из разряда установил и забыл.

  22. А будет ли статья по установке и настройке Kaspersky Security 8.0 for Linux Mail Server, или может у вас есть мануал?

  23. # Reject private networks
    #127.0.0.1 REJECT Your server configured incorrectly
    localhost REJECT Your server configured incorrectly
    localhost.localdomain REJECT Your server configured incorrectly
    localhost.domain.com REJECT Your server configured incorrectly
    192.168 REJECT Your server configured incorrectly
    172.16 REJECT Your server configured incorrectly
    172.17 REJECT Your server configured incorrectly
    172.18 REJECT Your server configured incorrectly
    172.19 REJECT Your server configured incorrectly
    # 172.20 REJECT Your server configured incorrectly
    172.21 REJECT Your server configured incorrectly
    172.22 REJECT Your server configured incorrectly
    172.23 REJECT Your server configured incorrectly
    172.24 REJECT Your server configured incorrectly
    172.25 REJECT Your server configured incorrectly
    172.26 REJECT Your server configured incorrectly
    172.27 REJECT Your server configured incorrectly
    172.28 REJECT Your server configured incorrectly
    172.29 REJECT Your server configured incorrectly
    172.30 REJECT Your server configured incorrectly
    172.31 REJECT Your server configured incorrectly
    10 REJECT Your server configured incorrectly

    # Reject using my Hostname/Domainname:
    mail.domain.com 550 Don`t use my name
    domain.com 550 Don`t use my name

    # Reject using my IP:
    server-ip 550 Don`t use my address

    • А если сервер-отправитель находится за натом, то такие письма сервер-получатель принимать не будет, так как в них будет светиться приватный диапазон адресов.

      • Будет все нармольно ходить. Это только на прием почты! И всегда можно добавить исключения... У самого пару ip с 172.20 юзаются :)

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *

Нажимая кнопку "Отправить комментарий" Я даю согласие на обработку персональных данных.
Используешь Telegram? Подпишись на канал автора →
This is default text for notification bar