Rechner absichern mit Knock

© © sxc.hu

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

<C>knock.conf<C>

 

Ähnliche Artikel

comments powered by Disqus

Artikel der Woche

Eigene Registry für Docker-Images

Wer selber Docker-Images herstellt, braucht auch eine eigene Registry. Diese gibt es ebenfalls als Docker-Image, aber nur mit eingeschränkter Funktionalität. Mit einem Auth-Server wird daraus ein brauchbares Repository für Images. (mehr)
Einmal pro Woche aktuelle News, kostenlose Artikel und nützliche ADMIN-Tipps.
Ich habe die Datenschutzerklärung gelesen und bin einverstanden.

Konfigurationsmanagement

Ich konfiguriere meine Server

  • von Hand
  • mit eigenen Skripts
  • mit Puppet
  • mit Ansible
  • mit Saltstack
  • mit Chef
  • mit CFengine
  • mit dem Nix-System
  • mit Containern
  • mit anderer Konfigurationsmanagement-Software

Google+

Ausgabe /2019