Wie man einen Endlessh-Tarpit auf Ubuntu 22.04 einrichtet

Der Autor hat den Free and Open Source Fund ausgewählt, um eine Spende im Rahmen des Write for Donations-Programms zu erhalten.

Einführung

Wenn Sie sich Authentifizierungsprotokolle ansehen, sehen Sie möglicherweise mehrere fehlgeschlagene Anmeldeversuche von verschiedenen IP-Adressen. Diese fehlgeschlagenen Anmeldeversuche stammen oft von einem Knoten in einem Botnetz, das das gesamte Web nach verwundbaren Servern mit Standardanmeldeinformationen durchsucht. Während die meisten Personen ein sicheres Passwort oder SSH-Schlüssel haben, die verhindern, dass Angreifer sich auf ihren Servern anmelden, können einige Server für diese Scans anfällig sein. Obwohl Sie diese Angriffe möglicherweise nicht stoppen können, können Sie sie mit Tarpits verlangsamen.

In diesem Tutorial installieren und konfigurieren Sie Endlessh, eine Tarpit, die einem Benutzer, der sich anmelden möchte, langsam einen unendlich langen Banner sendet. Sie konfigurieren auch den SSH-Dienst, um auf einem anderen Port zu laufen, was Ihre Authentifizierungsprotokolle lesbarer macht.

Nach Abschluss dieses Tutorials können Sie eine Verbindung zu Ihrem Server über einen nicht standardmäßigen Port herstellen, während Bots, die Ihren Server scannen, feststellen werden, dass ihre Zeit verschwendet wird, indem sie an einer Tür klopfen, die sich nie öffnen wird.

Voraussetzungen

Um dieses Tutorial abzuschließen, benötigen Sie Folgendes:

Schritt 1 – Verschieben von SSH auf einen Nicht-Standard-Port

In diesem Schritt verschieben Sie SSH auf einen Nicht-Standard-Port, um einen Port für Endlessh freizugeben. Da Botnets nicht endlos viele Ressourcen haben, scannen sie in der Regel nur den Standard-SSH-Port (22). Indem Sie SSH auf einen Nicht-Standard-Port verschieben, können Sie den Bot in der Endlessh-Tarpit gefangen nehmen.

Beginnen Sie damit, eine Sicherung Ihrer SSH-Konfigurationsdatei von Ihrem Server mit dem folgenden Befehl zu erstellen:

  1. sudo cp /etc/ssh/sshd_config /etc/ssh/sshd_config.bak

Diese Datei kann verwendet werden, um die ursprünglichen Einstellungen wiederherzustellen, falls etwas nicht funktioniert oder wenn Sie sich entscheiden, SSH wieder auf den Standardport zurückzusetzen.

Öffnen Sie die SSH-Konfigurationsdatei /etc/ssh/sshd_config mit Nano oder Ihrem bevorzugten Texteditor:

  1. sudo nano /etc/ssh/sshd_config

Suchen Sie die Zeile #Port 22. Entkommentieren Sie diese Zeile, indem Sie das # entfernen, und ändern Sie dann den Port auf einen unbenutzten Port auf Ihrem Server:

/etc/ssh/sshd_config
...
Port 2222
...

Ein Beispiel für einen normalerweise unbenutzten Port ist 2222. Sie können jeden Port wählen, den Sie für Ihre wiederkehrenden SSH-Verbindungen verwenden möchten. Speichern und schließen Sie die Datei.

Wenn Ihr Server eine Firewall wie ufw verwendet, müssen Sie den Datenverkehr zum neuen Port zulassen:

  1. sudo ufw allow 2222/tcp

Anschließend starten Sie den SSH-Dienst neu:

  1. sudo systemctl restart sshd

In einer separaten Terminalsession versuchen Sie, eine Verbindung zu Ihrem Server über den neuen Port herzustellen:

  1. ssh sammy@your_server_ip -p 2222

Warnung: Schließen Sie Ihre aktive SSH-Sitzung nicht, es sei denn, Sie haben bestätigt, dass Sie SSH auf dem neuen Port verwenden können. Wenn Sie keine Verbindung über den neuen Port herstellen können, riskieren Sie den Zugriff auf Ihren Server durch Schließen der Sitzung zu verlieren. Wenn Sie keine Verbindung zu Ihrem Server in einer separaten Terminalsession herstellen können, können Sie Ihre ursprünglichen SSH-Einstellungen wiederherstellen, indem Sie die folgenden Befehle ausführen:

  1. sudo cp /etc/ssh/sshd_config.bak /etc/ssh/sshd_config
  2. sudo systemctl restart sshd

Wenn Sie weitere Probleme haben, überprüfen Sie, ob sshd erfolgreich neu gestartet wurde, und überprüfen Sie Ihre Firewall-Einstellungen, um sicherzustellen, dass Port 2222 TCP-Verkehr akzeptiert.

Nachdem Sie überprüft haben, dass Sie eine neue Verbindung zum Port 2222 herstellen können, können Sie Ihr ursprüngliches Terminal sicher schließen. Bei zukünftigen Verbindungen zu Ihrem Server müssen Sie immer den neuen Port angeben, wie folgt:

  1. ssh sammy@your_server_ip -p 2222

Jetzt, da Sie SSH erfolgreich auf einen nicht standardmäßigen Port verschoben haben, ist es an der Zeit, Endlessh einzurichten.

Schritt 2 – Installation von Endlessh

Endlessh hat kein offizielles Paket, daher werden Sie das Repository klonen, um es manuell zu erstellen. Sie werden Git verwenden, um das Repository zu klonen, das Paket build-essential (um das Projekt zu kompilieren) und das Paket libc6-dev.

Installieren Sie die erforderlichen Pakete mit dem Paketmanager apt:

  1. sudo apt install build-essential libc6-dev

Bestätigen Sie die Installation mit y, wenn Sie dazu aufgefordert werden.

Klonen Sie dann das Endlessh-Repository von GitHub in Ihr Home-Verzeichnis:

  1. git clone https://github.com/do-community/endlessh

Wechseln Sie in das Projektverzeichnis und verwenden Sie den Befehl make, um Endlessh zu kompilieren:

  1. cd endlessh
  2. make

Sie können Endlessh jetzt mit dem folgenden Befehl starten:

  1. sudo ./endlessh -v -p 22

Um zu testen, ob Endlessh funktioniert, können Sie versuchen, eine SSH-Verbindung zum Port 22 mit dem -v verbose-Flag herzustellen, das das endlose Banner anzeigt. In einem neuen Terminalfenster stellen Sie eine SSH-Verbindung zum Port 22 mit einem der folgenden Befehle her:

  1. ssh sammy@your_server_ip -v
  1. ssh sammy@your_server_ip -p 22 -v

Wenn Ihre neue SSH-Sitzung versucht, eine Verbindung zum Port 22 herzustellen, werden alle 10 Sekunden eine Reihe von Zufallszeichen im Verbindungsterminal angezeigt, bis die Sitzung geschlossen wird, wie im folgenden Ausgabebereich gezeigt:

Output
debug1: kex_exchange_identification: banner line 0: NvnHF>]&W4p+tg*"+ debug1: kex_exchange_identification: banner line 1: n< debug1: kex_exchange_identification: banner line 2: @/O5c0/;>1b{qd(M,vK debug1: kex_exchange_identification: banner line 3: i+ OZ debug1: kex_exchange_identification: banner line 4: yn debug1: kex_exchange_identification: banner line 5: T[V\\[HUg

Nachdem Sie bestätigt haben, dass es funktioniert, indem Sie versuchen, eine neue Sitzung herzustellen, können Sie das neue Terminal schließen und Endlessh mit Ctrl+C in Ihrer Originalterminalsession stoppen.

In diesem Schritt haben Sie Endlessh aus den Quellen heruntergeladen und erstellt. Als nächstes konfigurieren Sie es und setzen es als Dienst ein, damit es persistent bleibt, wenn Sie sich abmelden und Ihren Server neu starten.

Schritt 3 – Konfigurieren von Endlessh

In diesem Schritt richten Sie Endlessh als Dienst ein, der nach dem Ende Ihrer Sitzung und bei Systemneustarts bestehen bleibt.

Verschieben Sie die kompilierte Binärdatei in das Verzeichnis /usr/local/bin:

  1. sudo mv ./endlessh /usr/local/bin/

Geben Sie Ihr Passwort ein, wenn Sie dazu aufgefordert werden.

Kopieren Sie die Service-Datei aus dem Projekt in das Verzeichnis /etc/systemd/system:

  1. sudo cp util/endlessh.service /etc/systemd/system/

Sie ändern die Service-Datei geringfügig, um Endlessh auf Ports unter 1024 auszuführen. Öffnen Sie die Service-Datei in nano oder Ihrem bevorzugten Texteditor:

  1. sudo nano /etc/systemd/system/endlessh.service

Finden Sie den Abschnitt über das Ausführen von Endlessh auf Ports unter 1024.

Aktualisieren Sie die Datei, indem Sie das # am Anfang der Zeile mit AmbientCapabilities=CAP_NET_BIND_SERVICE entfernen und das # am Anfang der Zeile PrivateUsers=true hinzufügen, wie folgt:

/etc/systemd/system/endlessh.service
...
## Wenn Sie möchten, dass Endlessh auf Ports < 1024 bindet
## 1) ausführen: 
##     setcap 'cap_net_bind_service=+ep' /usr/local/bin/endlessh
## 2) folgende Zeile auskommentieren
AmbientCapabilities=CAP_NET_BIND_SERVICE
## 3) folgende Zeile kommentieren
#PrivateUsers=true
...

Speichern und schließen Sie die Datei.

Als nächstes erlauben Sie Endlessh, auf Ports unterhalb von 1024 zu laufen, die auch als Internetdomänen-Privilegien-Ports bezeichnet werden. Legen Sie diese Fähigkeit für die Endlessh-Binärdatei mit dem Befehl setcap fest:

  1. sudo setcap 'cap_net_bind_service=+ep' /usr/local/bin/endlessh

Sie müssen eine Konfigurationsdatei für Endlessh definieren, um ihm mitzuteilen, welchen Port er verwenden soll. Erstellen und öffnen Sie eine Konfigurationsdatei namens /etc/endlessh/config:

  1. sudo mkdir /etc/endlessh
  2. sudo nano /etc/endlessh/config

In der Konfigurationsdatei definieren Sie den zu verwendenden Port als 22:

/etc/endlessh/config
Port 22

Speichern und schließen Sie die Datei.

Jetzt können Sie den Endlessh-Dienst dauerhaft starten:

  1. sudo systemctl --now enable endlessh

Wenn Sie --now enable einschließen, wird der Dienst nach dem Neustart Ihres Servers bestehen bleiben.

Um zu überprüfen, ob der Dienst erfolgreich gestartet wurde, können Sie den Befehl systemctl status verwenden:

  1. sudo systemctl status endlessh

Wenn der Dienst erfolgreich gestartet wurde, sehen Sie eine Ausgabe wie diese:

Output
● endlessh.service - Endlessh SSH Tarpit Loaded: loaded (/etc/systemd/system/endlessh.service; enabled; vendor preset: enabled) Active: active (running) since Fri 2022-04-22 11:20:39 UTC; 1 months 11 days ago Docs: man:endlessh(1) Main PID: 34007 (endlessh) Tasks: 1 (limit: 1081) Memory: 380.0K CGroup: /system.slice/endlessh.service └─34007 /usr/local/bin/endlessh

Wenn er läuft, können Sie versuchen, eine Verbindung auf Port 22 in einer neuen Terminalsession herzustellen:

  1. ssh sammy@your_server_ip

Weil Ihre Tarpit läuft, wird die neue Terminalsession keine Verbindung herstellen können und wird bis zum manuellen Stoppen mit Strg+C in dem verbindenden Terminal fortlaufend ausgeführt.

Wenn Sie den Dienst beenden möchten, können Sie den folgenden Befehl verwenden:

  1. sudo systemctl --now disable endlessh

Nachdem Sie den Dienst gestoppt haben, können Sie die SSH-Wiederherstellungsinstruktionen im Warnhinweis von Schritt 1 verwenden, um Ihre ursprüngliche Serverkonfiguration wiederherzustellen. Sie können den Dienst mit sudo systemctl --now enable endlessh wieder aktivieren, ohne den Einrichtungsprozess erneut durchlaufen zu müssen, aber stellen Sie sicher, dass SSH nicht auf Port 22 läuft, wenn Sie dies tun.

Abschluss

Sie haben Endlessh erfolgreich installiert und konfiguriert, Ihre Authentifizierungsprotokolle aufgeräumt und sich darauf vorbereitet, die Zeit zufälliger SSH-Bots zu verschwenden.

Nachdem Sie Ihre Endlessh-Tarpit eingerichtet haben, überprüfen Sie weitere Empfohlene Sicherheitsmaßnahmen zum Schutz Ihrer Server.

Source:
https://www.digitalocean.com/community/tutorials/how-to-set-up-an-endlessh-tarpit-on-ubuntu-22-04