
Abbildung 1: Wenn er das Klopfzeichen erkennt, öffnet »knockd« per IPtables den Port 22 für die anfragende IP.
Gruselromane sind voller schwarzer Gestalten, die in sturmumtosten Nächten obskure Rhythmen an mies beleuchtete Portale klopfen, um eingelassen zu werden. Unter Linux heißt das Verfahren neudeutsch Port Knocking und ist ausgesprochen nützlich.
|
Inhalt |
|---|
|
76 | Ksplice Das Projekt beseitigt Linux’ letzten Downtime-Grund und patcht den 80 | Exchange-Ersatz Kommerzielle Linux-Mailserver präsentieren sich im Test als 88 | Zertifizierungsprogramme Übersicht über verschiedene Linux-Zertifikate und 92 | Kvpnc Das Tool verspricht VPN-Konfiguration und Tunnelbau aus einer |
Port Knocking ist interessant, wenn zum Beispiel eine IPtables-Firewall keinen offensichtlichen Wartungszugang haben soll – aber einen heimlichen. Das kann die Begehrlichkeiten skriptgesteuerter Angriffe verhindern. Das Werkzeug der Wahl für den ambitionierten Heimlichtuer ist Knockd [1]. Das Paket enthält zwei Komponenten: Knock ist der Client, der die Klopfsignale sendet. Der Daemon »knockd« empfängt sie.
Knock, der Anklopfer-Client, bekommt als Parameter nur die abzuklopfenden Portnummern und ein »-v«, um den Vorgang beobachten zu können. Beispiel:
knock -v 10.0.0.42 7000 8000 9000
Das Tool antwortet auf der Kommandozeile pfeilgerade mit:
hitting tcp 10.0.0.42:7000 hitting tcp 10.0.0.42:8000 hitting tcp 10.0.0.42:9000
Welche Aktion der Daemon ausführt, wenn er ein gültiges Klopfsignal erhält, lege ich in der Konfigurationsdatei »/etc/knockd.conf« fest. Ein passendes Beispiel zeigt Listing 1. In der Praxis wähle ich natürlich eher unregelmäßige Portnummern.
|
Listing 1: |
|---|
01 [options] 02 logfile = /var/log/knockd.log 03 [openSSH] 04 sequence = 7000,8000,9000 05 seq_timeout = 5 06 command = /sbin/iptables -A INPUT -s %IP% -p tcp --dport 22 -j ACCEPT 07 tcpflags = syn 08 [closeSSH] 09 sequence = 9000,8000,7000 10 seq_timeout = 5 11 command = /sbin/iptables -D INPUT -s %IP% -p tcp --dport 22 -j ACCEPT 12 tcpflags = syn |
Morsen für den guten Zweck
Wenn er das Klopfzeichen erkennt, öffnet »knockd« den Port 22 für die anklopfende IP, die »%IP%« übergibt (siehe Abbildung 1). Klopfe ich die Ports in umgekehrter Reihenfolge ab, schließt der Daemon den SSH-Zugang wieder. Für schusselige Admins wie mich gibt es noch eine weitere Möglichkeit, die in der »knockd.conf« so aussieht:
start_command = /usr/sbin/iptables -A INPUT -s %IP% -p tcp --syn --dport 22 -j ACCEPT cmd_timeout = 10 stop_command = /usr/sbin/iptables -D INPUT -s %IP% -p tcp --syn --dport 22 -j ACCEPT

Abbildung 1: Wenn er das Klopfzeichen erkennt, öffnet »knockd« per IPtables den Port 22 für die anfragende IP.
Nach dem Anklopfen führt der Daemon »start_command« aus, dann wartet er die in »cmd_timeout« eingetragene Anzahl Minuten und arbeitet »stop_command« ab. Ganz Paranoide machen von der Möglichkeit Gebrauch, eine Datei mit Portsequenzen zu hinterlegen. Jede der Sequenzen verfällt nach einmaliger Benutzung. (jk)
|
Infos |
|---|
|
[1] Knockd: [http://www.zeroflux.org/projects] |





