knockd.conf-Beispiele
knockd liest /etc/knockd.conf: einen Abschnitt [options] und einen Abschnitt pro Tür. Jeder Abschnitt enthält eine Sequenz, ein Zeitlimit und den Befehl, der für die anklopfende Adresse %IP% ausgeführt wird. Wähle eigene Ports – verwende niemals die aus Beispielen erneut.
SSH für einige Sekunden öffnen
Die häufigste Konfiguration: Ein Anklopfen öffnet SSH, und knockd schließt es nach cmd_timeout wieder. Bereits geöffnete Sitzungen funktionieren weiter, wenn die Firewall bestehende Verbindungen akzeptiert.
[options]
UseSyslog
[openSSH]
sequence = 7311:tcp,8822:tcp,9133:udp
seq_timeout = 10
tcpflags = syn
start_command = /usr/sbin/iptables -I INPUT -s %IP% -p tcp --dport 22 -j ACCEPT
cmd_timeout = 10
stop_command = /usr/sbin/iptables -D INPUT -s %IP% -p tcp --dport 22 -j ACCEPT Separate Sequenzen zum Öffnen und Schließen
Ohne Timer bleibt der Port geöffnet, bis du die Schließsequenz anklopfst. Praktisch, aber leicht zu vergessen – bevorzuge die zeitgesteuerte Variante.
[options]
UseSyslog
[openSSH]
sequence = 7311:tcp,8822:tcp,9133:udp
seq_timeout = 10
tcpflags = syn
command = /usr/sbin/iptables -I INPUT -s %IP% -p tcp --dport 22 -j ACCEPT
[closeSSH]
sequence = 9133:udp,8822:tcp,7311:tcp
seq_timeout = 10
tcpflags = syn
command = /usr/sbin/iptables -D INPUT -s %IP% -p tcp --dport 22 -j ACCEPT Einmalsequenzen
Statt einer festen Sequenz kann knockd eine Datei mit Sequenzen lesen und jede nur einmal akzeptieren, sodass ein aufgezeichnetes Anklopfen nicht wiederholt werden kann. Secret Knock verwendet dieselbe Liste und wechselt nach einem Anklopfen, das die Tür geöffnet hat, zur nächsten Sequenz.
[openSSH]
one_time_sequences = /etc/knockd/ssh_sequences
seq_timeout = 10
tcpflags = syn
start_command = /usr/sbin/iptables -I INPUT -s %IP% -p tcp --dport 22 -j ACCEPT
cmd_timeout = 10
stop_command = /usr/sbin/iptables -D INPUT -s %IP% -p tcp --dport 22 -j ACCEPT
# /etc/knockd/ssh_sequences — one sequence per line, each used once
2222:udp,3333:tcp,4444:udp
5555:tcp,6666:udp,7777:tcp
8888:udp,9999:tcp,1111:tcp Mit nftables
Auf Systemen mit nftables kann knockd die Adresse mit einem Timeout zu einem Set hinzufügen; die Anleitung zum Verbergen von SSH zeigt die passende nftables-Tabelle.
[openSSH]
sequence = 7311:tcp,8822:tcp,9133:udp
seq_timeout = 10
tcpflags = syn
start_command = /usr/sbin/nft add element inet filter knocked4 { %IP% timeout 30s } Nach der Bearbeitung
- 1Lege unter Debian und Ubuntu die Schnittstelle, auf der knockd lauscht, in /etc/default/knockd fest (KNOCKD_OPTS="-i eth0") und starte knockd neu.
- 2Beobachte mit journalctl -u knockd -f, wie es funktioniert, während du anklopfst.
- 3In Secret Knock erstellt + › Aus Datei importieren aus jedem Abschnitt mit einer Sequenz eine Tür; Listen mit Einmalsequenzen gibst du manuell ein.
Alle Beispiele auf GitHub → Jede Konfiguration auf dieser Seite, kopierbereit: github.com/mobilcomm/secretknock-examples (gemeinfrei).
Fragen
Sollte ich TCP- oder UDP-Schritte verwenden?
Beides funktioniert. Eine Mischung aus beiden macht es schwieriger, eine Sequenz anhand eines Portscans zu erraten. UDP-Schritte können in Secret Knock eine Nutzlast enthalten, wenn deine Konfiguration sie prüft.
Anleitungen für dein Setup
- Port knocking erklärt →
- knockd auf iPhone, iPad und Mac →
- fwknop SPA auf iPhone, Mac und Apple Watch →
- MikroTik-Port-Knocking →
- DrayTek Vigor Port Knocking →
- SSH hinter Port Knocking verbergen →
- Port Knocking auf der Apple Watch →
- Warum ein Port-Knock nicht öffnet →
- fwknop-Server einrichten →
- Port Knocking, VPN oder fail2ban? →