April 2, 2013

SSH Bruteforce Angriffe loggen und unterbinden

SSH Bruteforce unterbinden

Einleitung

Das auth.log wächst jeden Tag auf mehrere Megabytes an, das Syslog wird mit Falschanmeldungen geflutet;SSH Bruteforce Angriffe sind an der Tagesordnung. Wem es ähnlich geht, der wird folgende iptables Regeln zu schätzen wissen.

/sbin/iptables -A INPUT -i eth0 -p tcp --dport 22 -m recent --update --seconds 60 --hitcount 5 --rttl --name SSH -j REJECT --reject-with tcp-reset
/sbin/iptables -A INPUT -i eth0 -p tcp --dport 22 -m recent --update --seconds 60 --hitcount 4 --rttl --name SSH -j LOG --log-prefix "SSH Brute Force"

Wir verwenden hier das recent Modul, welches, wie schon der Name sagt, auf kürzliche Verbindungen matched. Die erste Regel blockt nach 5 neuen Verbindungen innerhalb 60 Sekunden mit einem tcp-reset, während die zweite Regel lediglich einen Log-Eintrag im syslog erstellt.

Auf diese Weise stellen wir sicher, dass pro IP und Bruteforceattacke ein einziger Logeintrag erstellt wird und alle weiteren Verbindungen einfach abgewiesen werden, ohne das Syslog weiterhin mit Daten zu fluten.

Die Verbindungsanfrage von der fraglichen IP wird solange geblockt, bis 60 Sekunden lang kein weiterer Verbindungsversuch unternommen wurde. Paranoide Zeitgenossen dürfen diese Zeit gerne etwas höher setzen.

Fazit

Nachdem ich diese beiden IPTable Regeln auf meinen Systemen ausgeführt habe ist die SPAM Flut in meinem Syslog merklich gesunken, die logfile Analyse gestaltet sich dadurch merklich angenehmer und auch das manuelle Durchsuchen der syslogs ist nur noch selten eine verzweifelte Suche nach zusammenhängenden Log Einträgen.