Knockd (Debian)
Einrichtung des knock Dienstes (knockd), um Portzugriff einzuschränken
Softwareinstallation
apt-get install knockd # Installiert den Dienst und auch den Client
iptables vorbereiten
In der iptables-Konfiguration muss eine Zeile für das aufrechterhalten von aufgebauten Verbindungen eingefügt werden:
-A INPUT -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT
Eine Zeile für den freizugebenden Port ist nicht notwendig. Dieser wird vom knockd selbst freigegeben.
Testen, ob der Zugriff auf den betroffenen Port nun nicht mehr funktioniert.
knockd Konfiguration anpassen
Konfiguration in /etc/knockd.conf anpassen. Standardmäßig:
[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
- Ports in sequence-Zeile anpassen
- Freizugebenden Port in Command-Zeilen anpassen
- Erste Command-Zeile von append auf insert ändern:
command = /sbin/iptables -A INPUT -s %IP% -p tcp --dport 22 -j ACCEPT
Optional openSSH-Block so anpassen, dass nach einer Weile der Port wieder automatisch geschlossen wird, indem die iptables-Zeile gelöscht wird. Dies könnte so aussehen:
[openSSH] sequence = 7000,8000,9000 tcpflags = syn seq_timeout = 5 start_command = /sbin/iptables -I INPUT 1 -s %IP% -p tcp --dport 22 -j ACCEPT cmd_timeout = 5 stop_command = /sbin/iptables -D INPUT -s %IP% -p tcp --dport 22 -j ACCEPT
knockd aktivieren
nano /etc/defaults/knockd
Darin die Zeile
START_KNOCKD=0
ändern auf
START_KNOCKD=1
Danach knockd Dienst neu starten.
knockd nutzen
Offene Ports auf der Maschine überprüfen:
iptables -S
Anklopfen, um Port zu öffnen:
knock server_ip_address 7000 8000 9000
Danach innerhalb der festgelegten Zeit die andere Anwendung starten, z. B. ssh.
Alternativ beides in einem Befehl ausführen:
knock server_ip_address 7000 8000 9000 && ssh user@server_ip_address