Installation
Voraussetzung für das Port Knocking ist eine funktionierende Firewall und der Port Knocking Dienste, welcher im Hintergrund auf Klopfzeichen wartet.
sudo apt-get install iptables knockd
Einrichtung
Zuerst schließen wir den Port 22 (SSH) in der Firewall.
sudo iptables -A INPUT -p tcp --dport 22 -j DROP
Jetzt können wir das Port Knocking konfigurieren. Sämtliche Anpassungen erfolgen über die Datei /etc/knockd.conf.
sudo nano /etc/knockd.conf
Diese passen wir für SSH nun wie folgt an.
[options]
UseSyslog
[openSSH]
sequence = 7000:tcp,8000:tcp,9000:tcp
seq_timeout = 5
command = /sbin/iptables -I INPUT -s %IP% -p tcp --dport 22 -j ACCEPT
tcpflags = syn
[closeSSH]
sequence = 9000:tcp,8000:tcp,7000:tcp
seq_timeout = 5
command = /sbin/iptables -D INPUT -s %IP% -p tcp --dport 22 -j ACCEPT
tcpflags = syn
Bei der Open Regel wählen wir für Iptables bewusst die -I Regel. Diese steht für Insert und fügt die Regel oberhalb aller anderen Regeln ein. Dies ist notwendig, da Iptables nach dem First-Match-Prinzip arbeitet.
Die Option seq_timeout gibt die Zeit in Sekunden an wie lange das gesamte Klopfzeichen dauern darf.
Nach der Konfiguration können wir den Dienst aktivieren. Hierzu die Datei /etc/default/knockd editieren.
START_KNOCKD=1
Zum Abschluss wird der Dienst neugestartet.
sudo service knockd restart
Firewall Regeln beim Systemstart
Um nach jedem Systemstart den Port 22 zunächst zu verbieten binden wir die Regeln bei jedem Start ein.
Hierzu installieren wir in Ubuntu das Paket iptables-persistent.
sudo apt-get install iptables-persistent
Bei der Installation wird gefragt ob wir den aktuellen Regelsatz speichern möchten. Dies führen wir gleich manuell durch, weshalb wir die Frage verneinen.
Nun speichern wir den aktuellen Regelsatz
sudo iptables-save > /etc/iptables/rules.v4
und fügen den Iptables Dienst dem Autostart hinzu.
sudo update-rc.d iptables-persistent defaults
Vorteile
Wie bereits angedeutet ist Port Knocking eine gute Möglichkeit um offene Serverdienste vor unbefugtem Zugriff zu schützen.
Client
Auf dem Client wird ebenfalls das knockd Paket aus den Ubuntu Paketquellen benötigt um die Klopfzeichen abzusetzen.
sudo apt-get install knockd
Um nun den Port zu öffnen setzen wir die Klopfzeichen ab.
knock -v 192.168.1.121 7000 8000 9000
Schließen können wir den Port wieder mit der zum Schließen definierten Reihenfolge.
knock -v 192.168.1.121 9000 8000 7000
Kombiniertes Port Knocking
Die Ports lassen sich auch mit den gleichen Klopfzeichen öffnen und schließen. Hierzu wieder die Konfiguration /etc/knockd.conf anpassen.
[OpenCloseSSH]
sequence = 7000,8000,9000
seq_timeout = 5
start command = /sbin/iptables -I INPUT -s %IP% -p tcp --dport 80 -j ACCEPT
stop command = /sbin/iptables -D INPUT -s %IP% -p tcp --dport 80 -j ACCEPT
tcpflags = syn
Fazit
Vor allem für SSH bietet sich mit Port Knocking eine perfekte Möglichkeit ein Server System gegen unbefugte Angriff abzusichern. Weiterhin entfällt so eine statische Freischaltung bestimmter IPs in der Firewall, was bei dynamischen IP-Adressen auf Client Seite ohnehin nicht praktikabel ist.
Quellen: Ubuntu Logo
Hinterlasse einen Kommentar