Monitoren und Alarmierung von Brute-Force-Attacken auf SMTP SASL mit XYMON

Abstract

Wer Mailserver betreibt, über die sensible Daten ausgetauscht werden, möchte bei Brute-Force-Attacken alarmiert werden.

Wer Mailserver betreibt, über die sensible Daten ausgetauscht werden, möchte bei Brute Force Attacken alarmiert werden. Hier eine kurze Beschreibung, wie man das mit XYMON einrichtet.

Postfix loggt über rsyslog. Auf einem Ubuntu-Server findet sich die rsyslog-Konfiguration in /etc/rsyslog.d/50-default.conf. Eine typische Filterung für rsyslog nach SASL in ein eigenes Logfile kann man so eintragen:

...
# postfix
:programname, isequal, "postfix" /var/log/postfix.log
:msg, contains, "SASL" /var/log/postfix-sasl.log
...

Danach ist ein restart des rsyslog-Dienstes nötig. Das neue Logfile /var/log/postfix-sasl.log sollte auch rotiert werden, dazu editiert man /etc/logrotate.d/rsyslog:

 ...
 /var/log/postfix-sasl.log {
     dateext
     maxage 10
     rotate 10
     daily
     missingok
     notifempty
     sharedscripts
     postrotate
     service rsyslog restart >/dev/null 2>&1 || true
     endscript
}
...

Auf dem zentralen Xymon-Server muss danach in /etc/xymon/analysis.cfg das Alarming eingerichtet werden:

...
HOST=mail.server.com
     UP      1h
     LOAD    10.0 20.0
     MEMPHYS 100 101
     MEMSWAP 50 80
     MEMACT  90 97
     DISK    * 90 95
     PORT "LOCAL=%([.:]25)$" state=LISTEN TEXT=postfix
     LOG /var/log/postfix-sasl.log %failed COLOR=YELLOW
...

Außerdem ist die Datei /etc/xymon/client-local.cfg zu editieren:

[mail.server.com]
...
log:/var/log/postfix-sasl.log:20480
...

Nach einem Restart des Xymon-Servers und des Xymon-Clients auf dem Mailserver sollte unter dem Tag msgs in der HTML-GUI des Servers nach einer Weile z.B. ein Eintrag No entries in /var/log/postfix-sasl.log erscheinen.

Ein Alarm würde etwa so aussehen:

Warnings in /var/log/postfix-sasl.log
yellow Apr 22 09:26:39 mail postfix/smtpd[23059]: warning: unknown[1.2.3.4]: SASL LOGIN   authentication failed: UGFzc3dvcmQ6

Note

Jeder muss selbst entscheiden, was er als Brute-Force-Angriff ansieht, z.B. heißt der obige base64-kodierte String UGFzc3dvcmQ6 dekodiert nichts weiter als Password: im Klartext. Es dürfte daher eher der Standard-Konfiguration eines SMTP-Clients entspringen. Desweiteren gibt es natürlich auch Fehlkonfigurationen von legitimen SMTP-Clients. Richtige Brute-Force-Angriffe sind meiner Erfahrung nach eher selten und zeichnen sich vor allem durch schnelles Testen sehr vieler verschiedener Benutzernamen aus – meist sind dabei auch die Systembenutzer typischer Linux-Systeme enthalten, wie z.B www-data, daemon, sys usw.

Robert Schetterer, 17. April 2013