Назад | Перейти на главную страницу

Откуда берутся эти «одноточечные» сбои соединения smtp?

Я использую почтовый сервер на базе postfix. Таких сбоев подключения очень много:

Transcript of session follows.

Out: 220 hostname.tld ESMTP Postfix
In:  .
Out: 502 5.5.2 Error: command not recognized
In:
Out: 500 5.5.2 Error: bad syntax

Session aborted, reason: lost connection

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

Что вызывает эти связи? Если это были вирусы, черви или бот-сети, которые «стучат в дверь», почему так много раз на хост? Или отправляет одну точку какой-то функциональный тест, и мой сервер реагирует неправильно? Опять же, несколько попыток не имеют смысла. И это далеко от любого масштаба DoS.

Может, некоторые из вас знают, что там происходит?

Точка используется для завершения сообщения электронной почты в протоколе SMTP: пустая строка (CR, LF), за которой следует одна точка и снова новая строка с CR и LF. Но здесь явно не так.

Чтобы узнать, являются ли эти SMTP-клиенты просто ботнетами или законными отправителями, вы можете взглянуть на PTR их IP-адресов, они оба зарегистрированы. Если PTR общий от поставщика, что-то вроде 192-0-2-1.broadband.customers.example.com. Тогда вы действительно можете игнорировать это и использовать fail2ban для их блокировки.

HELO должен соответствовать PTR, по крайней мере, это лучшая практика. Но если они не похожи, то это опять же, вероятно, ботнет.

В другом случае кто-то может сканировать ваш сервер и проверять наличие протоколов и шифров TLS.


Чтобы заблокировать клиентов после таких запросов, вы можете использовать fail2ban, который временно блокирует IP после слишком большого количества неверных запросов.

filter.d/postfix-syntax.conf

[INCLUDES]
before = common.conf

[Definition]
failregex = reject: RCPT from (.*)\[<HOST>\]: 502 5.5.2
            reject: RCPT from (.*)\[<HOST>\]: 500 5.5.2
ignoreregex =

И добавьте это в свой jail.conf:

[postfix-syntax]
enabled  = true
port     = smtp,ssmtp,submission
filter   = postfix-syntax
logpath  = /var/log/mail.log
maxretry = 10

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

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

Я использую несколько тестов для проверки легитимности отправителей:

  • IP не указан в zen.spamhaus.org. (Включает широкий выбор динамических IP-адресов.)
  • У IP есть DNS PTR который проходит rDNS. Редко у законной почты нет PTR запись и rDNS для IP-адреса почти всегда проходит.
  • Имя в команде HELO / EHLO - это полное доменное имя (FQDN), которое передает rDNS. За исключением одной крупной корпорации, это почти всегда проходит. Обычно это имя совпадает с именем, используемым для IP-адреса.
  • Имя из записи PTR и команда HELO проходят проверку SPF HELO напрямую или для их родительского домена. Домены без записей SPF также проходят проверку, но не заслуживают доверия. Это блокирует спам-ботов, которые идентифицируют себя с использованием домена большой организации.

Я хотел бы использовать DKIM для проверки, но высокий процент отправителей неправильно публикует свой открытый ключ в DNS.

Если вы не можете запустить эти тесты, пока соединение все еще открыто, не возвращайте сообщение, если вы не можете убедиться, что отправитель не был подделан. (Я ценю все предложения денег от ФБР, ООН, банков и т. Д., Но они все еще не доставлены.)