Wenn Sie Benutzern den Zugriff auf bestimmte Dienste auf Ihrem Server ermöglichen möchten, ohne eine Firewall zu öffnen, können Sie Port-Knocking verwenden. Port Knocking ist eine Methode, mit der Sie Ihren Dienst vor unbefugten Benutzern schützen können. Port-Knocking lässt eingehende Verbindungen zu, wenn eine korrekte Reihenfolge von Verbindungsversuchen empfangen wird.
In diesem Beitrag sichern wir den offenen SSH-Port 22 mit Port-Knocking. Dieser Port wird nur geöffnet, wenn jemand nacheinander die Ports 7000, 8000, 9000 anfordert.
Voraussetzungen
- Ein Ubuntu 20.04-Server auf der Atlantic.Net Cloud Platform
- Ein auf Ihrem Server konfiguriertes Root-Passwort
Schritt 1 – Atlantic.Net Cloud-Server erstellen
Melden Sie sich zunächst bei Ihrem Atlantic.Net Cloud Server an. Erstellen Sie einen neuen Server und wählen Sie Ubuntu 20.04 als Betriebssystem mit mindestens 2 GB RAM. Stellen Sie über SSH eine Verbindung zu Ihrem Cloud-Server her und melden Sie sich mit den oben auf der Seite hervorgehobenen Anmeldeinformationen an.
Sobald Sie sich bei Ihrem Ubuntu 20.04-Server angemeldet haben, führen Sie den folgenden Befehl aus, um Ihr Basissystem mit den neuesten verfügbaren Paketen zu aktualisieren.
apt-get update -y
Schritt 2 – Knockd installieren und konfigurieren
apt-get install knockd -y
Bearbeiten Sie nach der Installation des Pakets die Standardkonfigurationsdatei für das Port-Knocking:
nano /etc/knockd.conf
Suchen Sie die unten gezeigte Standardsequenz:
sequence = 7000,8000,9000 sequence = 9000,8000,7000
Und ersetzen Sie sie durch die folgende Sequenz:
sequence = 7777,8888,9999 sequence = 9999,8888,7777
Suchen Sie außerdem die folgende Zeile:
command = /sbin/iptables -A INPUT -s %IP% -p tcp --dport 22 -j ACCEPT
Und ersetzen Sie es durch die folgende Zeile:
command = /sbin/iptables -I INPUT -s %IP% -p tcp --dport 22 -j ACCEPT
Speichern und schließen Sie die Datei, wenn Sie fertig sind.
In der obigen Konfigurationsdatei wird die Sequenz 7777, 8888, 9999 verwendet, um Port 22 für ein Client-System zu öffnen, und die Sequenz 9999, 8888, 7777 wird verwendet, um Port 22 für ein Client-System zu schließen.
Bearbeiten Sie als Nächstes die Datei /etc/default/knockd Konfigurationsdatei:
nano /etc/default/knockd
Ändern Sie die folgenden Zeilen:
# Start the Knockd service START_KNOCKD=1 # Name of your network interface KNOCKD_OPTS="-i eth0"
Speichern und schließen Sie die Datei, wenn Sie fertig sind, starten Sie dann den Knockd-Dienst neu und aktivieren Sie ihn, um beim Systemneustart zu starten:
systemctl restart knockd systemctl enable knockd
Überprüfen Sie als Nächstes den Status des Knockd-Dienstes mit dem folgenden Befehl:
systemctl status knockd
Beispielausgabe:
● knockd.service - Port-Knock Daemon Loaded: loaded (/lib/systemd/system/knockd.service; disabled; vendor preset: enabled) Active: active (running) since Sun 2021-08-15 13:26:31 UTC; 5s ago Docs: man:knockd(1) Main PID: 6555 (knockd) Tasks: 1 (limit: 2353) Memory: 296.0K CGroup: /system.slice/knockd.service └─6555 /usr/sbin/knockd -i eth0 Aug 15 13:26:31 ubuntu2004 systemd[1]: Started Port-Knock Daemon. Aug 15 13:26:31 ubuntu2004 knockd[6555]: starting up, listening on eth0
Schritt 3 – Iptables installieren und konfigurieren
Knockd verwendet die Iptables-Regel, um den SSH-Port zu öffnen und zu schließen, daher müssen Sie das Iptables-Paket auf Ihrem Server installieren.
Führen Sie den folgenden Befehl aus, um das Iptables-Paket zu installieren:
apt-get install iptables iptables-persistent -y
Erstellen Sie nach der Installation des Pakets eine Iptables-Regel, um den SSH-Port 22 für alle Benutzer zu blockieren:
iptables -A INPUT -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT iptables -A INPUT -p tcp --dport 22 -j REJECT
Speichern Sie als Nächstes die Iptables-Regel und laden Sie sie mit dem folgenden Befehl neu:
netfilter-persistent save netfilter-persistent reload
An diesem Punkt ist Port Knocking für OpenSSH auf Ihrem Server konfiguriert.
Schritt 4 – OpenSSH-Verbindung vom Client-System prüfen
Gehen Sie als nächstes zum Client-System und prüfen Sie, ob der OpenSSH-Port 22 blockiert ist oder nicht.
Sie können dies mit dem NMAP-Befehl überprüfen:
nmap your-server-ip
Sie sollten sehen, dass Port 22 auf dem Server gefiltert wird.
Nmap scan report for your-server-ip Host is up (0.38s latency). Not shown: 998 closed ports PORT STATE SERVICE 21/tcp open ftp 22/tcp filtered ssh Nmap done: 1 IP address (1 host up) scanned in 277.58 seconds
Versuchen Sie nun, sich mit SSH vom Client-Rechner aus mit Ihrem Server zu verbinden:
ssh [email protected]
Sie sollten die Nachricht "Verbindung verweigert" sehen:
ssh: connect to host your-server-ip port 22: Connection refused
Schritt 5 – Konfigurieren Sie Knockd auf dem Client, um den SSH-Server zu verbinden
Jetzt müssen Sie den Knock-Client auf dem Client-System installieren, um sich mit dem SSH-Server zu verbinden.
Führen Sie zunächst den folgenden Befehl aus, um das Knockd-Clientpaket zu installieren:
apt-get install knockd -y
Verwenden Sie nun die folgende Klopfsequenz, um den SSH-Port 22 auf dem Server zu öffnen.
knock -v your-server-ip 7777 8888 9999
Wenn Ihr Server eine korrekte Sequenz empfängt, die Sie in der Knockd-Konfigurationsdatei definiert haben, öffnet er den SSH-Port 22 für Ihren Client-Rechner und Sie können sich mit dem SSH-Server verbinden.
ssh [email protected]
Nachdem Sie Ihre Aufgabe auf dem Remote-SSH-Server abgeschlossen haben, können Sie die folgende Sequenz vom Client-Computer verwenden, um den SSH-Port wieder zu schließen.
knock -v your-server-ip 9999 8888 7777
Schlussfolgerung
In der obigen Anleitung haben Sie gelernt, wie Sie einen SSH-Server mit Port-Knocking sichern. Sie können die gleiche Methode verwenden, um andere Ports auf einem Linux-Server zu sichern. Probieren Sie es auf VPS-Hosting von Atlantic.Net aus!