Knockd (Debian)

Aus MattWiki

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