Debian: port knocking einrichten

2

I.d.R. werden Linux Systeme mit SSH Ferngewartet. Doch wenn man mal einen Blick in das auth Logfile wirft wird einem manchmal ganz anders. Da wird teilweise alle x Sekunden versucht sich über SSH anzumelden. Auch ein umlegen des SSH Ports bringt da nicht immer das gewünschte Ergebniss.

Jeder hat mittlerweile schon was von Portknocking gehört. Das Prinzip das dahinter steckt ist relativ simpel. Der eigentliche Dienst Port wird von der Firewall blockiert. Möchte man nun die Anwendung dahinter erreichen so senden man Pakete eines vorher definierten Typs an vorher fesgelegte Ports. Erkennt das System innerhalb von X Sekunden die entsprechenden Pakte an den definierten Ports, so wird der Zugriff für das absenden System für eine bestimmte Zeit geöffnet. Für SSH reichen wenigen Sekunden, da die Verbindung auch nach blockierung des Ports noch aktiv bleiben kann (bereites initiierte Verbindungen dürfen nicht von der Firewall gekappt werden).

Nun aber zur Einrichtung des port knocking dameons…. Unter Debian gibt es ein Paket namens knockd das zuerst installiert werden muss…

apt-get install knockd

Anschließend muss der Dienst noch aktiviert werden

/etc/default/knockd
START_KNOCKD=1

Nun kommt die Konfiguration des Daemons

/etc/knockd.conf
[options]        logfile = /var/log/knockd.log
[openSSH]
        sequence        = 1234,5678,9101
        seq_timeout     = 15
        start_command   = /sbin/iptables -A INPUT -s %IP% -p tcp --dport 22 -j ACCEPT
        tcpflags        = syn
        cmd_timeout     = 30
        stop_command    = /sbin/iptables -D INPUT -s %IP% -p tcp --dport 22 -j ACCEPT

Dieses Beispiel erwartet innerhalb von 15 Sekunden (seq_timeout) syn Pakete (tcpflags) auf den Ports 1234, 4567, 9101 (sequence) und erweitert nach erfolgreicher „Authentifizierung“ die iptables (start_command) um eine Regel die Verbindungen der Quelladresse auf Port 22 zulässt. Anschließend wird nach 30 Sekunden der Port 22 wieder geschlossen (cmd_timeout)

Um nun eine Verbindung aufzubauen müssen Sie zuerst an den entsprechenden Ports „anklopfen“

knock 1234 5678 9101
ssh host

Links

Teilen.

Über den Autor

Seit der Ausbildung zum Fachinformatiker Systemintegration (2002-2005) bei der DaimlerChrysler AG, beruflich im Bereich der E-Mail Kommunikation (Exchange, Linux) sowie des ActiveDirectory, mit entsprechenden Zertifizierungen (MCSE 2003, MCITP Ent.-Admin 2008, MCSE 2012, LPIC 1-3) tätig. Abgeschlossenes Studium zum Master of Science der IT-Management an der FOM sowie zertifizierter Datenschutzbeauftragter. Aktuell im Projektmanagement tätig.

2 Kommentare

  1. Kleiner Fehler:

    Habe mich schon gewundert, wenn ich lokal „knock“e

    > knock 1234 5678 9101

    wie soll der Host, der knockd ausführt, wissen, dass ich zu ihm will.

    Richtiger Aufruf laut Hilfe ist:

    > knock host 1234 5678 9101

    Danach ssh und ab geht’s…! 🙂

Antworten