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

fail2ban отклоняет спам-ботов грубой силой

Было бы разумно изменить правило postfix fail2ban из этого:

failregex = ^%(__prefix_line)sNOQUEUE: reject: RCPT from \S+\[<HOST>\]: 554 5\.7\.1 .*$
        ^%(__prefix_line)sNOQUEUE: reject: RCPT from \S+\[<HOST>\]: 450 4\.7\.1 Client host rejected: cannot find your hostname, (\[\S*\]); from=<\S*> to=<\S+> proto=ESMTP helo=<\S*>$
        ^%(__prefix_line)sNOQUEUE: reject: RCPT from \S+\[<HOST>\]: 450 4\.7\.1 : Helo command rejected: Host not found; from=<> to=<> proto=ESMTP helo= *$
        ^%(__prefix_line)sNOQUEUE: reject: EHLO from \S+\[<HOST>\]: 504 5\.5\.2 <\S+>: Helo command rejected: need fully-qualified hostname;
        ^%(__prefix_line)sNOQUEUE: reject: VRFY from \S+\[<HOST>\]: 550 5\.1\.1 .*$
        ^%(__prefix_line)sNOQUEUE: reject: RCPT from \S+\[<HOST>\]: 450 4\.1\.8 <\S*>: Sender address rejected: Domain not found; from=<\S*> to=<\S+> proto=ESMTP helo=<\S*>$
        ^%(__prefix_line)simproper command pipelining after \S+ from [^[]*\[<HOST>\]:?$

добавив следующую строку:

  ^%(__prefix_line)sNOQUEUE: reject: RCPT from \S+\[<HOST>\]: 550 5\.1\.1 .*$

Потому что я пытаюсь предотвратить такие атаки:

Jan 27 09:42:02 host1 postfix/smtpd[3416]: NOQUEUE: reject: RCPT from unknown[109.107.106.180]: 550 5.1.1 <chiquia9p34@acosonic.com>: Recipient address rejected: User unkn
own in virtual alias table; from=<crazy434808@airoclean.ch> to=<chiquia9p34@acosonic.com> proto=ESMTP helo=<[109.107.106.180]>
Jan 27 09:42:03 host1 postfix/smtpd[3416]: NOQUEUE: reject: RCPT from unknown[109.107.106.180]: 550 5.1.1 <chiquia@acosonic.com>: Recipient address rejected: User unknown 
in virtual alias table; from=<crazy434808@airoclean.ch> to=<chiquia@acosonic.com> proto=ESMTP helo=<[109.107.106.180]>
Jan 27 09:55:32 host1 postfix/smtpd[4914]: NOQUEUE: reject: RCPT from unknown[109.107.106.180]: 550 5.1.1 <michaela9p34@acosonic.com>: Recipient address rejected: User unk
nown in virtual alias table; from=<crazy878210@camgirl-info.com> to=<michaela9p34@acosonic.com> proto=ESMTP helo=<[109.107.106.180]>
Jan 27 09:55:32 host1 postfix/smtpd[4914]: NOQUEUE: reject: RCPT from unknown[109.107.106.180]: 550 5.1.1 <michaela@acosonic.com>: Recipient address rejected: User unknown
 in virtual alias table; from=<crazy878210@camgirl-info.com> to=<michaela@acosonic.com> proto=ESMTP helo=<[109.107.106.180]>

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

Ваши предложения?

Я предлагаю вам использовать постэкран, подробнее здесь: http://www.postfix.org/POSTSCREEN_README.html

"Сервер Postfix postscreen (8) обеспечивает дополнительную защиту от перегрузки почтового сервера. Один процесс postscreen (8) обрабатывает несколько входящих SMTP-соединений и решает, какие клиенты могут взаимодействовать с процессом SMTP-сервера Postfix. Путем предотвращения спам-ботов postscreen ( 8) оставляет больше процессов SMTP-сервера доступными для законных клиентов и отсрочивает наступление условий перегрузки сервера ».

Это снимает всю нагрузку с MTA, выполняя некоторые умные проверки. Боты никогда не доберутся до тех пор, пока не добьются того, что должно быть.

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

В таких вещах всегда можно найти баланс. Единичный или нечастый сбой, вероятно, является ошибкой со стороны отправителя. Множественные сбои за короткое время, вероятно, указывают на то, что вы хотите ввести (временный) запрет.

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

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