3 Min

SSH-Tarpit: Brute-Force Angreifer ausbremsen

In diesem Artikel stelle ich euch das SSH-Tarpit vor, um Brute-Force Angreifer bei ihren Angriffen zu stören und auszubremsen.
SSH-Tarpit: Brute-Force Angreifer ausbremsen
Photo by Aubrey Odom-Mabey / Unsplash

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.

💡
Eine Brute-Force-Attacke ist eine automatisierte Angriffsmethode, bei welcher unzählige verschiedene Kombinationen aus Nutzernamen und Passwörtern probiert werden, um die Login-Daten eines Servers zu erraten. Die Attacke kann je nach Vorwissen des Angreifers (Nutzername des Opfers, Länge des Passworts, ...) verfeinert werden und somit weit aus effektiver sein.
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.

version: '3.5'
services:
  endlessh:
    container_name: endlessh
    image: shizunge/endlessh-go:latest
    restart: always
    command:
      - interval_ms=1000
      - logtostderr
      - v=1
      - enable_prometheus
      - geoip_supplier=ip-api
    ports:
      # SSH port
      - 22:2222

docker-compose.yml

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

Grafana Dashboard

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 !!!