Technologieführer

Port Knocking auf Ubuntu: Installation, Konfiguration und Sicherheits-Checklist

7 min read Sicherheit Aktualisiert 20 Oct 2025
Port Knocking auf Ubuntu: Installation & Sicherheit
Port Knocking auf Ubuntu: Installation & Sicherheit

Port Knocking versteckt Services wie SSH hinter einer Folge geschlossener Ports. Nach korrektem „Klopf“-Sequenz öffnet knockd die Firewall temporär für die anfragende IP. Dieses Tutorial zeigt Installation, iptables-Regeln, knockd-Konfiguration, Tests, Sicherheits-Härtung und Praxis-Checklisten für Ubuntu/Debian-Server.

Warum Port Knocking einsetzen?

Port Knocking funktioniert wie das Klopfmuster in alten Gangsterfilmen: Der Server ignoriert Verbindungsversuche zu geschützten Ports, bis ein Client in der richtigen Reihenfolge andere Ports „anklopft“. Das reduziert sichtbare Angriffsflächen gegen automatisierte Port-Scanner und senkt die Anzahl unerwünschter Verbindungsversuche.

Wichtige Einschränkung in einem Satz: Port Knocking ist eine zusätzliche Schutzschicht, kein Ersatz für starke Authentifizierung (z. B. SSH-Schlüssel) oder gute Patch- und Monitoring-Prozesse.

Einordnung und Begriffe

  • Port Knocking: Technik, die eine Firewall-Regel erst nach einer bestimmten Portfolge anpasst.
  • knockd: Daemon, der Knock-Sequenzen erkennt und Kommandos ausführt.
  • SPA (Single Packet Authorization): moderne Alternative, die einzelne verschlüsselte Pakete nutzt.

Kurzüberblick der Schritte

  1. Pakete installieren: openssh-server, knockd, iptables, iptables-persistent
  2. iptables so konfigurieren, dass SSH (Port 22) standardmäßig blockiert ist, aber bestehende Verbindungen bestehen bleiben
  3. knockd konfigurieren (/etc/knockd.conf) und Dienst aktivieren
  4. Mit telnet oder passenden Tools die Sequenz absetzen und SSH testen

Schritt 1: Benötigte Pakete installieren

Alle folgenden Befehle müssen als root ausgeführt werden. Falls Sie als normaler Nutzer arbeiten, wechseln Sie vorab zu root:

sudo su

Aktualisieren Sie die Paketliste:

apt-get update

Installieren Sie den SSH-Server (falls noch nicht vorhanden):

apt-get install openssh-server

Installieren Sie knockd, den Daemon für Port Knocking:

apt-get install knockd

Beispielausgabe (gekürzt):

Get:1 http://security.debian.org wheezy/updates Release.gpg [1,554 B]  
Get:2 http://security.debian.org wheezy/updates Release [102 kB]  
... 
Do you want to continue [Y/n]?

Bestätigen Sie mit Y.

Install knockd.

Installieren Sie zusätzlich iptables, falls nicht vorhanden:

apt-get install iptables

Hinweis: Neuere Distributionen nutzen nftables statt iptables. In solchen Umgebungen gelten andere Befehle; dieses Tutorial fokussiert iptables-kompatible Systeme (Ubuntu/Debian älterer Releases oder mit iptables installiert).

Schritt 2: iptables-Regeln hinzufügen

Zuerst leeren wir vorhandene Regeln und erlauben ausgehenden Verkehr:

iptables --flush
iptables -t nat --flush
iptables -t mangle --flush
iptables --policy OUTPUT ACCEPT

Erlauben Sie laufende Verbindungen, damit die aktuelle SSH-Sitzung nicht abbricht:

iptables -A INPUT -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT

Wichtig: In der Regel steht zwischen ESTABLISHED und RELATED kein Leerzeichen um das Komma.

Blockieren Sie anschließend eingehende Verbindungen auf Port 22 (SSH):

iptables -A INPUT -p tcp --destination-port 22 -j DROP

Damit die Regeln nach einem Neustart erhalten bleiben, installieren Sie iptables-persistent:

apt-get install iptables-persistent

Während der Installation werden Sie gefragt, ob die aktuellen IPv4- und IPv6-Regeln gespeichert werden sollen. Wählen Sie jeweils “Yes”.

Install iptables persistant.

IPTables persistant, part 2

Save current rules prompt

Speichern Sie die aktuelle Regelmenge optional manuell:

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

Beispielausgabe von iptables-save:

# Generated by iptables-save v1.4.14 on Tue Feb 23 04:59:28 2016
*filter
:INPUT ACCEPT [1:40]
:FORWARD ACCEPT [0:0]
:OUTPUT ACCEPT [17:1976]
-A INPUT -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT
-A INPUT -p tcp -m tcp --dport 22 -j DROP
COMMIT
# Completed on Tue Feb 23 04:59:28 2016

Diese Konfiguration hält Ihre bestehende Sitzung aktiv, blockiert aber neue SSH-Verbindungen, bis knockd die temporäre Ausnahme setzt.

Schritt 3: knockd konfigurieren

Öffnen Sie die Hauptkonfigurationsdatei von knockd:

nano /etc/knockd.conf

Editing knockd.conf with nano.

Eine typische Beispielkonfiguration sieht so aus:

[options]
 UseSyslog

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

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

Erklärungen:

  • UseSyslog: Aktiviert Logging via syslog.
  • sequence: Portfolge, die ein Client absetzen muss. %IP% wird mit der IP des Klopfenden ersetzt.
  • seq_timeout: Sekunden, innerhalb derer die komplette Sequenz abgeschickt werden muss.
  • tcpflags = syn: knockd achtet nur auf SYN-Pakete in diesem Beispiel.

Tipp: Ändern Sie die Portnummern und die Reihenfolge. Standardsequenzen sind bekannt und verringern die Wirksamkeit der Maßnahme.

/etc/default/knockd anpassen

Damit knockd beim Systemstart läuft, editieren Sie:

nano /etc/default/knockd

Setzen Sie:

START_KNOCKD=1

Wenn Ihr System mehrere Netzwerkinterfaces hat, können Sie KNOCKD_OPTS setzen, z. B. “-i eth0”.

Starten Sie den Dienst:

service knockd start

knockd überwacht nun die eingehenden Verbindungen und führt die konfigurierten Kommandos aus, wenn eine richtige Sequenz erkannt wurde.

Schritt 4: Den Server erreichen, wenn knockd läuft

Sobald SSH per iptables blockiert ist, wird ein normaler Verbindungsversuch aus dem Internet einfach ignoriert oder beendet. Testen Sie die Knock-Sequenz mit telnet oder geeigneten Tools.

Test mit telnet (einfaches Beispiel)

Linux: falls telnet fehlt, installieren Sie es mit apt.

Windows: Aktivieren Sie den Telnet-Client über “Programme” → “Windows-Features aktivieren oder deaktivieren”.

Führen Sie die Sequenz aus (ersetzen Sie youripaddress):

telnet youripaddress 7000
telnet youripaddress 8000
telnet youripaddress 9000

Sie haben 5 Sekunden Zeit (seq_timeout = 5). Danach versuchen Sie, sich per SSH zu verbinden:

ssh user@youripaddress

Um die Portfreigabe wieder zu schließen, senden Sie die Schließsequenz in umgekehrter Reihenfolge:

telnet youripaddress 9000
telnet youripaddress 8000
telnet youripaddress 7000

Wichtig: Telnet sendet Verbindungen offen; viele nutzen spezialisierte Tools oder Skripte, die SYN-Pakete erzeugen, um die tcpflags-Anforderungen von knockd zu erfüllen.

Praktische Beispiele für knockd.conf

Beispiel: Sequenz mit nicht standardmäßigen Ports und längerer Timeout:

[openSSH]
 sequence = 30123,45211,60010
 seq_timeout = 15
 command = /sbin/iptables -A INPUT -s %IP% -p tcp --dport 22 -j ACCEPT
 tcpflags = syn

Beispiel: Nur UDP-Ports verwenden:

[openUDP]
 sequence = 4000,5000,6000
 seq_timeout = 8
 command = /sbin/iptables -A INPUT -s %IP% -p udp --dport 1194 -j ACCEPT

Beispiel: alternative Aktion (z. B. hinzufügen in eine allow-list):

command = /usr/local/bin/add-to-allowlist %IP%

Achten Sie bei benutzerdefinierten Skripten auf sichere Pfade und Rechte. Die von knockd ausgeführten Kommandos laufen mit Root-Rechten.


Sicherheits-Härtung und Einschränkungen

Wichtig: Port Knocking erhöht die Sicherheit, hat aber Schwachstellen. Prüfen Sie folgende Punkte:

  • NAT/Proxy/Load Balancer: Wenn Ihr Server hinter einer NAT oder einem Load Balancer steht, kann knockd die tatsächliche Client-IP nicht korrekt erkennen. In Cloud-Umgebungen prüfen Sie, ob die Quell-IP erhalten bleibt.
  • Gemeinsame IPs: Bei Clients mit dynamischer oder geteilter IP (z. B. mobile Netzwerke) kann %IP% nicht stabil sein.
  • Paketerfassung: Ein Angreifer mit Netzwerkzugriff kann eine Sequenz mitschneiden und nachspielen.
  • Port-Sniffing: Manche Netzwerke loggen ausgehende Verbindungen und könnten Sequenzen verraten.

Empfohlene Gegenmaßnahmen:

  • Kombinieren Sie Port Knocking mit SSH-Key-Authentifizierung und DisablePasswordAuthentication yes.
  • Verwenden Sie nicht-triviale Portsequenzen und wechselnde Sequenzen nach Bedarf.
  • Für höhere Sicherheit: Nutzen Sie SPA-Tools wie fwknop (Single Packet Authorization). Diese senden verschlüsselte Tokens und sind resistenter gegen Mitschneiden.

Vergleich: Port Knocking vs SPA

  • Port Knocking: einfache Implementierung, anfälliger für Mitschneiden, arbeitet oft mit mehreren Ports in Folge.
  • SPA (fwknop): verschlüsselte Einmal-Pakete, besser gegen Replay-Angriffe, komplexere Einrichtung.

Wann Port Knocking nicht funktioniert (Gegenbeispiele)

  • Ihr Host sitzt hinter einer Cloud-Load-Balancer-IPs, die Quell-IP ändert sich. knockd öffnet den Port für die Load-Balancer-IP statt für den Endnutzer.
  • Netzwerk-Filter in Ihrem ISP unterdrücken SYN-Pakete an ungewöhnliche Ports. Knockd erwartet aber SYN-Flags.
  • Intrusion Detection/Prevention blockiert ungewöhnliche wiederholte Verbindungsversuche und markiert diese als Angriff.

Checklisten und Betriebsablauf

Allgemeine Checkliste vor Produktivsetzung:

  • Sicherstellen, dass Sie eine alternative Konsole (z. B. Konsole des Cloud-Providers) haben, falls die SSH-Verbindung dauerhaft blockiert wird.
  • Aktuelle Backup-Regeln mit iptables-save erstellen.
  • knockd.conf mit einzigartiger Sequenz erstellen und testen.
  • START_KNOCKD=1 setzen und Dienst starten.
  • SSH-Schlüssel-Authentifizierung erzwingen, Passwort-Login deaktivieren.
  • Logging prüfen (/var/log/syslog) auf knockd-Einträge.

Rolle-basierte Kurz-Checklisten:

  • Systemadministrator:

    • Backup iptables-Regeln
    • Test per lokaler Konsole
    • Dokumentation der Sequenz in einem sicheren Tresor
  • Security Officer:

    • Review der knockd- und iptables-Einträge
    • Risiko-Einschätzung bzgl. Anschlüssen und Netzwerkarchitektur
  • DevOps:

    • Deployment-Skripte aktualisieren (iptables-persistent)
    • Monitoring/Alerts für ungewöhnliche Knock-Versuche einrichten

Risiko-Matrix (qualitativ)

  • Risiko: Mitschneiden der Sequenz -> Auswirkung: Mittel -> Gegenmaßnahme: SPA, SSH-Keys
  • Risiko: NAT/Load Balancer verfälscht IP -> Auswirkung: Hoch -> Gegenmaßnahme: Alternative Authentifizierung, Konsole
  • Risiko: Fehlkonfiguration führt zu Sperre -> Auswirkung: Hoch -> Gegenmaßnahme: Testumgebung, Zugriffskonsole

Troubleshooting und Tests

  • knockd log prüfen:
grep knockd /var/log/syslog
  • Aktive iptables-Regeln anzeigen:
iptables -L -n -v
  • Wenn knockd nicht startet: prüfen Sie /etc/default/knockd auf START_KNOCKD=1 und setzen Sie KNOCKD_OPTS falls nötig (z. B. -i eth0).

  • Testen Sie, ob tcpflags gesetzt werden müssen. Viele Knock-Clients senden TCP SYN; wenn Sie tcpflags = syn gesetzt haben, müssen die Tests SYN-Pakete erzeugen.


Alternative Ansätze

  • fwknop (SPA): Verschlüsselte Einmal-Pakete, höhere Sicherheit gegen Mitschneiden.
  • Port-Fowarding über VPN: VPN-Zugang vor SSH setzen, dann SSH nur intern erreichbar.
  • Firewall-Whitelist: IP-Adressbereiche in die Firewall erlauben (günstig für feste Administrator-IP).

Kurzer Befehlssatz (Cheat Sheet)

  • Wechsel zu root:
sudo su
  • Update und Pakete:
apt-get update
apt-get install openssh-server knockd iptables iptables-persistent
  • iptables Basisregeln:
iptables -A INPUT -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT
iptables -A INPUT -p tcp --destination-port 22 -j DROP
  • Starten von knockd:
service knockd start
  • Regeln speichern:
iptables-save > /etc/iptables/rules.v4

1‑Zeilen-Glossar

  • knockd: Dienst, der Port-Sequenzen erkennt und Firewall-Kommandos ausführt.
  • SPA: Single Packet Authorization, stärkeres Alternativverfahren.

Abschlusszusammenfassung

Port Knocking ist eine einfache und effektive Zusatzschicht, um SSH und andere Dienste vor automatischen Scans zu verbergen. Richtig eingerichtet reduziert es unerwünschte Verbindungsversuche. Verwenden Sie es in Kombination mit SSH-Schlüsseln, Monitoring und, wo möglich, moderneren Verfahren wie SPA für bestmöglichen Schutz. Testen Sie Änderungen immer in einer sicheren Umgebung und halten Sie einen Rettungszugang bereit.

Wichtige Hinweise

  • Speichern Sie Ihre knock-Sequenz sicher. Leak der Sequenz reduziert die Wirksamkeit.
  • Port Knocking ist kein Ersatz für Patch-Management oder starke Authentifizierung.
Autor
Redaktion

Ähnliche Materialien

YouTube TV auf Roku reparieren – Schritt für Schritt
Streaming

YouTube TV auf Roku reparieren – Schritt für Schritt

Hotkey: Web-Bilder in Windows schnell speichern
Windows

Hotkey: Web-Bilder in Windows schnell speichern

CDP.dll fehlt: Fehler in Windows beheben
Windows Fehler

CDP.dll fehlt: Fehler in Windows beheben

KI in Texten erkennen – Manuelle Methoden
Redaktion

KI in Texten erkennen – Manuelle Methoden

RabbitMQ auf CentOS 7 installieren und sichern
DevOps

RabbitMQ auf CentOS 7 installieren und sichern

SSHFS auf CentOS: installieren, mounten, sichern
Serverbetrieb

SSHFS auf CentOS: installieren, mounten, sichern