Seit einiger Zeit verfolgen mich logcheck mails mit Zeilen wie dieser:

Jul 25 21:59:06 hostname saslauthd[3115]: pam_unix(:auth): authentication failure; logname= uid=0 euid=0 tty= ruser= rhost=

oder dieser:

Jul 25 21:34:16 hostname /smtpd[13745]: warning: SASL authentication failure: All-whitespace username.

Während die zweite auf eine ganz bestimmte Kombination aus einem Postfix-Konfigurations-Problem mit bestimmten SMTP-Clients hinweist, bedeutet die erste, dass jemand mit falschen Login-Daten versucht, meinen als Spam-Bot zu nutzen.

Obwohl DOS--Attacken auf mit anderen Mitteln wie denyhosts ausgesperrt werden, ist das SMTP-Login immer noch eine Möglichkeit, Login-Daten auf Gültigkeit zu testen. Root darf sich für SMTP nicht anmelden… Aber die anderen Benutzer. Hat man die Login-Daten, kann man ja versuchen, sicher per einzuloggen und das System als lokaler Benutzer zu kompromittieren (exploits in binaries & co). Notfalls kann man ja den Server immer noch als Bot für ein Spam-Server-Netz oder als Virenschleuder unter SERVER/~benutzer/virus.exe missbrauchen und sich so den Zugang zu anderen Servern bahnen.

Damit auch diese Art von Brute-Force unterbunden wird, sollte man das Log-Monitoring-Programm „fail2ban“ einsetzen. Es überwacht die in der /etc/fail2ban/jail.conf Datei vorgegebene Log-Dateien und wendet auf diese entsprechende Regex-Filter aus /etc/fail2ban/filter.d/ an. Für Postfix sollte es in dem uns vorliegenden Fall wie folgt aussehen aussehen:

Der Filter (/etc/fail2ban/filter.d/postfix.conf)

[Definition]
failregex = reject: RCPT from (.*)[]: 550 5.1.1
reject: RCPT from (.*)[]: 450 4.7.1
reject: RCPT from (.*)[]: 554 5.7.1
warning: unknown[]: SASL LOGIN authentication failed: authentication failure
ignoreregex =

Die Konfiguration (/etc/fail2ban/jail.conf) sollte entsprechend angepasst werden. Für mich ergeben diese Werte einen Sinn:

[postfix]
enabled  = true
port     = smtp,ssmtp
filter   = postfix
logpath  = /var/log/mail.log
bantime  = 6000
maxretry = 5