SSH-Tarpit: Brute-Force Angreifer ausbremsen
Das Problem
Jeder Server, welcher Zugriff auf das Internet hat und SSH-fähig ist, wird betroffen sein. Unzählbare automatisierte Login-Versuche aus der ganzen Welt, mit allmöglichen Kombinationen aus Nutzernamen und Passwörtern versuchen, mittels einer "Brute-Force-Attacke" in eure Systeme einzudringen.
Brute-Force ist eine recht simple, aber dafür sehr effektive Angriffsmethode mit einer hohen Erfolgsrate.
Eine Lösung: SSH-Tarpit
Um die Angreifer bei ihren Attacken zu verlangsamen, wurde das "SSH-Tarpit" entwickelt. Die Software gibt sich dabei als SSH-Server aus und sendet dem Client eine unendliche Länge an Zeichen vor dem eigentlichen "identification string" (wird benötigt, um den Login-Vorgang zu starten).
Dies ist aufgrund einer "Lücke" im SSH-Protokoll (RFC 4253) möglich, welche festlegt, dass vor dem identification string eine beliebige Anzahl anderer Daten gesendet werden können. Somit hält die Software den Client mit der Erwartung des Logins fest. Zugegeben, Profi-Angreifer haben sicher einen Timer in ihren Skripten eingebaut, welcher den Angriff automatisch beendet. Jedoch gibt es viele Trittbrettfahrer unter den Angreifern, die dann Stunden, Tage und in Ausnahmefällen sogar Wochen, ohne es zu merken in eurem Tarpit verweilen.
Die (einfachen) Angriffe abwehren
Schritt 1
Standard SSH-Port
Der Angriff findet in den meisten Fällen über den Standard SSH-Port 22 statt. Um nun den größten Teil abzuwehren, rate ich jedem, den SSH-Port zu ändern. Somit laufen viele einfach gestrickte Angriffsskripte ins Leere und die Angreifer ziehen weiter.
Standardisierte Zugangsdaten
Nicht nur der SSH-Port ist standardisiert, auch Nutzernamen wie bspw. "root" oder "ubuntu" sind hinreichend bekannt und werden als erstes probiert. Hier ist es zwingend empfohlen, den Nutzernamen des Standardbenutzers für die SSH-Anmeldung zu ändern und dem Root-Benutzer diesen gar nicht erst zu ermöglichen.
Aufgrund der Varietät an Betriebssystemen würde eine Anleitung den Rahmen sprengen. Tutorials findet ihr passend zu eurem System haufenweise im Netz.
Tarpit aufsetzen
Schritt 2
Docker-Compose
Wurde der standard SSH-Port geändert, ist es nun möglich, ein sogenanntes SSH-Tarpit auf diesem laufen zu lassen. Für die Erstellung des Tarpits verwende ich Docker und Docker-Compose.
Wurde das Tarpit erfolgreich aufgesetzt, werden wahrscheinlich schon nach wenigen Minuten die ersten Angriffe im Log des Containers verzeichnet werden.
Die Software ist in der Lage, mehrere Verbindungen zu verarbeiten, um somit mehrere Angreifer gleichzeitig zu fangen. Optional könnte man jedoch auf weiteren Ports (222, 2222, etc.) Tarpits laufen lassen.
Angriffe grafisch darstellen
Schritt 3, optional, aber nett anzusehen
Grafana & Prometheus
Wir alle lieben Statistiken, nicht wahr?
Um die Angriffe visuell darzustellen, verwende ich die Darstellungssoftware "Grafana", kombiniert mit Monitoring-Toolkit "Prometheus".
Ein ausführliches und gutes Tutorial findet ihr auf dem YouTube-Kanal Sempervideo.
Positive Nebeneffekte
Zwei Fliegen mit einer Klappe schlagen
Blacklisting
Die Skripte der Angreifer arbeiten nach Listen. Sollte dieser nun bemerken, dass der Angriffsprozess bei eurem Server signifikant länger dauert, landet ihr früher oder später auf der Blacklist des Angreifers und habt einen Störenfried weniger.
Andere Systeme beschützen
Dadurch das sich die Angreifer bei euch festfahren, geht ihnen wertvolle Zeit verloren, in denen sie die Systeme anderer anzugreifen könnten. Bedeutet: Je mehr Serverbetreiber eine solche Software einsetzen, desto effektiver klaut man den Angreifern ihre Zeit.
Also #SpreadTheWord !!!