Open Source im professionellen Einsatz

Aus dem Alltag eines Sysadmin: Knockd

Klopffest

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
laufenden Kernel.

80 | Exchange-Ersatz

Kommerzielle Linux-Mailserver präsentieren sich im Test als
Konkurrenten für Microsofts Communication Platform.

88 | Zertifizierungsprogramme

Übersicht über verschiedene Linux-Zertifikate und
-Prüfungen.

92 | Kvpnc

Das Tool verspricht VPN-Konfiguration und Tunnelbau aus einer
Hand.

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:
»/etc/knockd.conf«

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.

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]

Der Autor


Charly Kühnast administriert Unix-Betriebssysteme im Rechenzentrum Niederrhein in Moers. Zu seinen Aufgaben gehören die Sicherheit und Verfügbarkeit der Firewalls und der DMZ. Im heißen Teil seiner Freizeit frönt er dem Kochen, im feuchten Teil der Süßwasseraquaristik und im östlichen lernt er Japanisch.

Diesen Artikel als PDF kaufen

Als digitales Abo

Als PDF im Abo bestellen

comments powered by Disqus

Ausgabe 07/2013

Preis € 6,40

Insecurity Bulletin

Insecurity Bulletin

Im Insecurity Bulletin widmet sich Mark Vogelsberger aktuellen Sicherheitslücken sowie Hintergründen und Security-Grundlagen. mehr...

Linux-Magazin auf Facebook