Passwort vergessen?

Benutzername vergessen?

Alles rund um IT, Web und Entwicklung.
Von Nutzern für Nutzer.

SSH Port Knocking unter Ubuntu einrichten



Port Knocking ist eine einfache Methode um bestimmte Ports nur bei Bedarf zu öffnen. Dies bietet sich besonders für den SSH Login an, welcher häufig mit Brute Force Attacken kompromittiert wird.


Installation



Voraussetzung für das Port Knocking ist eine funktionierende Firewall und der Port Knocking Dienste, welcher im Hintergrund auf Klopfzeichen wartet.

sudo apt-get install iptables knockd


Einrichtung


Zuerst schließen wir den Port 22 (SSH) in der Firewall.

sudo iptables -A INPUT -p tcp --dport 22 -j DROP

Jetzt können wir das Port Knocking konfigurieren. Sämtliche Anpassungen erfolgen über die Datei /etc/knockd.conf.

sudo nano /etc/knockd.conf

Diese passen wir für SSH nun wie folgt an.

[options]
        UseSyslog

[openSSH]
        sequence    = 7000:tcp,8000:tcp,9000:tcp
        seq_timeout = 5
        command     = /sbin/iptables -I INPUT -s %IP% -p tcp --dport 22 -j ACCEPT
        tcpflags    = syn

[closeSSH]
        sequence    = 9000:tcp,8000:tcp,7000:tcp
        seq_timeout = 5
        command     = /sbin/iptables -D INPUT -s %IP% -p tcp --dport 22 -j ACCEPT
        tcpflags    = syn


Bei der Open Regel wählen wir für Iptables bewusst die -I Regel. Diese steht für Insert und fügt die Regel oberhalb aller anderen Regeln ein. Dies ist notwendig, da Iptables nach dem First-Match-Prinzip arbeitet.

Die Option seq_timeout gibt die Zeit in Sekunden an wie lange das gesamte Klopfzeichen dauern darf.

Nach der Konfiguration können wir den Dienst aktivieren. Hierzu die Datei /etc/default/knockd editieren.
START_KNOCKD=1

Zum Abschluss wird der Dienst neugestartet.

sudo service knockd restart

Firewall Regeln beim Systemstart


Um nach jedem Systemstart den Port 22 zunächst zu verbieten binden wir die Regeln bei jedem Start ein.

Hierzu installieren wir in Ubuntu das Paket iptables-persistent.

sudo apt-get install iptables-persistent

Bei der Installation wird gefragt ob wir den aktuellen Regelsatz speichern möchten. Dies führen wir gleich manuell durch, weshalb wir die Frage verneinen.

Nun speichern wir den aktuellen Regelsatz

sudo iptables-save > /etc/iptables/rules.v4

und fügen den Iptables Dienst dem Autostart hinzu.

sudo update-rc.d iptables-persistent defaults


Vorteile


Wie bereits angedeutet ist Port Knocking eine gute Möglichkeit um offene Serverdienste vor unbefugtem Zugriff zu schützen.



Client


Auf dem Client wird ebenfalls das knockd Paket aus den Ubuntu Paketquellen benötigt um die Klopfzeichen abzusetzen.

sudo apt-get install knockd

Um nun den Port zu öffnen setzen wir die Klopfzeichen ab.

knock -v 192.168.1.121 7000 8000 9000

Schließen können wir den Port wieder mit der zum Schließen definierten Reihenfolge.

knock -v 192.168.1.121 9000 8000 7000


Kombiniertes Port Knocking


Die Ports lassen sich auch mit den gleichen Klopfzeichen öffnen und schließen. Hierzu wieder die Konfiguration /etc/knockd.conf anpassen.

[OpenCloseSSH]
        sequence    = 7000,8000,9000
        seq_timeout = 5
        start command     = /sbin/iptables -I INPUT -s %IP% -p tcp --dport 80 -j ACCEPT
        stop command     = /sbin/iptables -D INPUT -s %IP% -p tcp --dport 80 -j ACCEPT
        tcpflags    = syn



Fazit


Vor allem für SSH bietet sich mit Port Knocking eine perfekte Möglichkeit ein Server System gegen unbefugte Angriff abzusichern. Weiterhin entfällt so eine statische Freischaltung bestimmter IPs in der Firewall, was bei dynamischen IP-Adressen auf Client Seite ohnehin nicht praktikabel ist.

Quellen: Ubuntu Logo

Michael Kostka

Fachinformatiker / Systemintegration
Ich schreibe hier regelmäßig zu den Themen Android, Web, Linux und Hardware.

Raspberry Pi Starter Kit
DataCloud

Hinterlasse einen Kommentar

Ich habe die Datenschutzerklärung zur Kenntnis genommen und stimme einer elektronischen Speicherung und Verarbeitung meiner eingegebenen Daten zur Beantwortung der Anfrage zu.