Seit einiger Zeit verfolgen mich logcheck mails mit Zeilen wie dieser:
Jul 25 21:59:06 hostname saslauthd[3115]: pam_unix(smtp:auth): authentication failure; logname= uid=0 euid=0 tty= ruser= rhost=
oder dieser:
Jul 25 21:34:16 hostname postfix/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 Server als Spam-Bot zu nutzen.
Obwohl DOS-BruteForce-Attacken auf SSH 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 SSH 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