Aufmacher

Rechner absichern mit Knock

Klopf, klopf

Rechner mit Internetzugang gilt es, gegen Angreifer abzusichern. Eine ebenso faszinierend einfache wie auch effiziente Barriere schafft ein Portknocker.

Der Albtraum eines jeden Netzwerkadministrators: Unsichere Dienste, die es Angreifern ermöglichen, ins heimische LAN oder das Firmennetz einzudringen. Von außen erreichbare Dienste stellen immer ein Sicherheitsrisiko dar, als mögliche Ansatzpunkte dienen Angreifern eine fehlerhafte Konfiguration oder Sicherheitslücken im Programm selbst. Um zum Datenaustausch oder zur Fernwartung auf den Rechner zugreifen zu können, bleibt jedoch nichts anderes übrig, als Ports für die entsprechenden Dienste zu öffnen. Diese müssen jedoch nicht dauerhaft offen stehen: Das Programm Knock [1] erlaubt, bestimmte Ports quasi auf Zuruf zu öffnen und wieder zu schließen, und minimiert auf diese Weise die Angriffsfläche.

Angeklopft …

Im Normalfall greift ein Client auf den Port eines auf dem Server laufenden Diensts zu, um mit der Applikation zu kommunizieren. Über eine Firewall lässt sich der Port gegen den Zugriff von außen abschotten. Der Portknocker-Daemon knockd sorgt dafür, dass autorisierte Verbindungen trotzdem zustande kommen.

Dazu öffnet Knockd beim Start einen Raw-Socket und registriert alle am Netzwerkdevice ein- und ausgehenden Pakete, unabhängig von der Konfiguration der Firewall. Empfängt der Daemon eine bestimmte Paketsequenz, die besondere Merkmale im Protokoll, Port und Flag aufweist, öffnet er die Firewall mit einer entsprechenden Regel (Abbildung 1).

Abbildung 1: Die Zeichnung verdeutlicht die Arbeitsweise von Knock: Im Normalfall schützt eine Firewall den Port (1.). Sendet der Client eine bestimmte Abfolge von Paketen (2.) öffnet Knock den Zugang (3.).

Auf welche Triggerpakete der Daemon reagiert und welche Aktion er ausführt, legen Sie in der Konfiguration fest. Die Palette reicht dabei vom Freischalten eines verschlüsselten SSH-Zugangs zum Zweck der Fernwartung [2] bis hin zur Abfrage des heimischen Mailservers über die POP3-/SMTP-Protokolle.

Benötigen Sie die Verbindung nicht mehr, so schließen Sie sie mithilfe von Knock auch wieder. Das erfolgt auf dem selben Weg wie das Öffnen, jedoch mit einer anderen Klopfsequenz wieder schließen.

Knock installieren

Der Portknocker-Daemon knockd zählt bei gängigen Distributionen wie Debian, Ubuntu sowie OpenSuse zum Umfang der Repositories. Sie installieren die Software dort über den Paketmanager Ihrer Distribution. Darüber hinaus stellt der Entwickler Judd Vinet auf der Knock-Website [1] sowohl DEB- und RPM-Pakete als auch den Quellcode zum Download bereit.

Um den Portknocker zu nutzen, gilt es zudem auf den zugreifenden Hosts den Knock-Client zu installieren. Auf der Webseite des Projekts finden Sie verschiedene Versionen für Linux sowie für Windows und Mac OS zum Download.

… und aufgemacht

Nach der Installation starten Sie den Portknocker-Daemon durch Eingabe von knockd -d. Er verwendet als Konfigurationsgrundlage die Angaben aus der Datei /etc/knockd.conf (Listing 1). In der Grundeinstellungen legt diese in [options] fest, dass die sich Logdatei von Knock im Verzeichnis /var/log befindet. Zudem lauscht der Portknocker im Betrieb per Voreinstellung auf eth0 – in aller Regel der erste kabelgebundene Netzwerkanschluss. Möchten Sie den Daemon an ein anderes Netzwerkinterface binden, teilen Sie ihm das im Bereich [options] mit der Option interface mit, beispielsweise interface = eth2.

Der Abschnitt [openSSH] legt sowohl die Klopfsequenz fest, als auch die damit verbundene Aktion in Form einer Firewallregel – in diesem Fall das Öffnen des Ports 22 sowie das entsprechende TCP-Flag. Der Bereich [closeSSH] definiert die Sequenz zum Schließen des Ports sowie den entsprechenden Löschbefehl an die Firewall. Nach diesem Muster erweitern Sie die Konfiguration bei Bedarf um beliebig viele Regeln.

Listing 1
[options]
  logfile = /var/log/knockd.log
[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

LinuxCommunity kaufen

Einzelne Ausgabe
 
Abonnements
 
TABLET & SMARTPHONE APPS
Bald erhältlich
Get it on Google Play

Deutschland

Ähnliche Artikel

Kommentare

Infos zur Publikation

LU 12/2017: Perfekte Videos

Digitale Ausgabe: Preis € 5,95
(inkl. 19% MwSt.)

LinuxUser erscheint monatlich und kostet 5,95 Euro (mit DVD 8,50 Euro). Weitere Infos zum Heft finden Sie auf der Homepage.

Das Jahresabo kostet ab 86,70 Euro. Details dazu finden Sie im Computec-Shop. Im Probeabo erhalten Sie zudem drei Ausgaben zum reduzierten Preis.

Bei Google Play finden Sie digitale Ausgaben für Tablet & Smartphone.

HINWEIS ZU PAYPAL: Die Zahlung ist ohne eigenes Paypal-Konto ganz einfach per Kreditkarte oder Lastschrift möglich!

Stellenmarkt

Aktuelle Fragen

Huawei
Pit Hampelmann, 13.12.2017 11:35, 1 Antworten
Welches Smartphone ist für euch momentan das beste? Sehe ja die Huawei gerade ganz weit vorne. Bi...
Fernstudium Informatik
Joe Cole, 12.12.2017 10:36, 2 Antworten
Hallo! habe früher als ich 13 Jahre angefangen mit HTML und später Java zu programmieren. Weit...
Installation Linux mint auf stick
Reiner Schulz, 10.12.2017 17:34, 3 Antworten
Hallo, ich hab ein ISO-image mit Linux Mint auf einem Stick untergebracht Jetzt kann ich auch...
Canon Maxify 2750 oder ähnlicher Drucker
Hannes Richert, 05.12.2017 20:14, 4 Antworten
Hallo, leider hat Canon mich weiterverwiesen, weil sie Linux nicht supporten.. deshalb hier die...
Ubuntu Server
Steffen Seidler, 05.12.2017 12:10, 1 Antworten
Hallo! Hat jemand eine gute Anleitung für mich, wie ich Ubuntu Server einrichte? Habe bisher...