Откуда берутся эти «одноточечные» сбои SMTP-подключения?

Откуда берутся эти «одноточечные» сбои 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.

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

решение1

Точка используется для завершения сообщения электронной почты в протоколе 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

решение2

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

Я бы рассмотрел просто сопоставление отклонений для любых ошибок в 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.

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

Связанный контент