SSH-Verbindung absichern zur Verhinderung von Brute-Force-Angriffen
Der Standard-SSH-Port (22) wird häufig von automatisierten Brute-Force-Angriffen angegriffen. Diese Anleitung zeigt Ihnen, wie Sie den SSH-Port ändern und zusätzliche Sicherheitsoptionen konfigurieren, um Ihren Server zu schützen.
📋 Voraussetzungen
- Ein VPS-Server mit Root- oder sudo-Zugriff
- Eine aktive SSH-Verbindung
- UFW installiert und konfiguriert (siehe das Tutorial UFW installieren)
⚠️ WICHTIG: Behalten Sie eine SSH-Sitzung offen
Öffnen Sie zwei SSH-Terminals parallel:
- Terminal 1: Arbeits-Sitzung (für Änderungen)
- Terminal 2: Backup-Sitzung (nur für den Fall)
🔧 SSH-Port ändern
Schritt 1: Neuen Port wählen
Wählen Sie einen Port zwischen 1024 und 65535. Zu vermeidende gebräuchliche Ports:
- 22 (Standard-SSH-Port, stark angegriffen)
- 80, 443 (HTTP/HTTPS)
- 3306, 5432 (Datenbanken)
Beispiele für sichere Ports: 2222, 2200, 1022, 5000
Schritt 2: SSH-Konfiguration ändern
Bash# SSH-Konfigurationsdatei bearbeiten sudo nano /etc/ssh/sshd_config
Schritt 3: Port ändern
Suchen Sie die Zeile #Port 22 und ändern Sie sie:
# Vorher
#Port 22
# Nachher (ersetzen Sie 2222 durch Ihren gewählten Port)
Port 2222
Tipp: Verwenden Sie Ctrl + W in nano, um nach "Port 22" zu suchen
Schritt 4: Speichern und beenden
In nano:
Ctrl + Xzum BeendenYzum BestätigenEnterzum Speichern
Schritt 5: Syntax überprüfen
Bash# Überprüfen, dass die Konfiguration gültig ist sudo sshd -t
Wenn dieser Befehl keine Fehler zurückgibt, ist Ihre Konfiguration korrekt.
Schritt 6: Neuen Port in UFW erlauben
Bash1# Neuen SSH-Port erlauben (ersetzen Sie 2222 durch Ihren Port) 2sudo ufw allow 2222/tcp 3 4# Optional: Alten Port 22 entfernen, wenn Sie ihn nicht mehr verwenden 5sudo ufw delete allow 22/tcp 6 7# UFW neu laden 8sudo ufw reload 9 10# Überprüfen, dass die Regel aktiv ist 11sudo ufw status | grep 2222
Schritt 7: SSH-Dienst neu starten
Bash1# SSH mit der neuen Konfiguration neu starten 2sudo systemctl restart sshd 3 4# Überprüfen, dass SSH noch funktioniert 5sudo systemctl status sshd
Schritt 8: Neue Verbindung testen
In einem neuen Terminal testen Sie die Verbindung mit dem neuen Port:
Bash# Ersetzen Sie 2222 durch Ihren Port und benutzer@ihre-ip durch Ihre Anmeldedaten ssh -p 2222 benutzer@ihre-ip
Wenn die Verbindung funktioniert, können Sie die alte Sitzung auf Port 22 schließen.
🔒 Zusätzliche Sicherheitsoptionen
Root-Login deaktivieren
Bash1# SSH-Konfiguration bearbeiten 2sudo nano /etc/ssh/sshd_config 3 4# Diese Zeile finden und ändern 5PermitRootLogin no 6 7# Speichern und neu starten 8sudo sshd -t 9sudo systemctl restart sshd
Verbindungsversuche begrenzen
Bash1sudo nano /etc/ssh/sshd_config 2 3# Diese Zeilen hinzufügen oder ändern 4MaxAuthTries 3 # Maximum 3 Verbindungsversuche 5LoginGraceTime 30 # 30 Sekunden Timeout zum Verbinden
Passwort-Authentifizierung deaktivieren (nur SSH-Schlüssel verwenden)
Bash1sudo nano /etc/ssh/sshd_config 2 3# Diese Zeile ändern 4PasswordAuthentication no 5PubkeyAuthentication yes
Nur SSH-Protokoll Version 2 verwenden
Bashsudo nano /etc/ssh/sshd_config # Diese Zeile hinzufügen (wenn sie nicht existiert) Protocol 2
X11-Tunnel deaktivieren (wenn Sie sie nicht benötigen)
Bashsudo nano /etc/ssh/sshd_config # Diese Zeile ändern X11Forwarding no
Empfohlene vollständige Konfiguration
Hier ist eine vollständige sichere SSH-Konfiguration, die in /etc/ssh/sshd_config hinzugefügt werden soll:
# Benutzerdefinierter SSH-Port
Port 2222
# Root-Login deaktivieren
PermitRootLogin no
# Verbindungsgrenzen
MaxAuthTries 3
LoginGraceTime 30
# Passwort-Authentifizierung deaktivieren (wenn Sie SSH-Schlüssel verwenden)
# PasswordAuthentication no
# PubkeyAuthentication yes
# Nur SSH-Protokoll Version 2
Protocol 2
# X11-Forwarding deaktivieren
X11Forwarding no
# TCP-Tunnel deaktivieren
AllowTcpForwarding no
# Inaktivitäts-Timeout vor Trennung
ClientAliveInterval 300
ClientAliveCountMax 2
Nach jeder Änderung vergessen Sie nicht:
Bash1# Syntax überprüfen 2sudo sshd -t 3 4# SSH neu starten 5sudo systemctl restart sshd
🔄 Benutzer mit sudo erstellen (falls erforderlich)
Wenn Sie Root-Login deaktiviert haben, stellen Sie sicher, dass Sie einen Benutzer mit sudo-Berechtigungen haben:
Bash1# Neuen Benutzer erstellen 2sudo adduser meinbenutzer 3 4# Benutzer zur sudo-Gruppe hinzufügen 5sudo usermod -aG sudo meinbenutzer 6 7# Testen, dass der Benutzer sudo verwenden kann 8su - meinbenutzer 9sudo whoami 10# Sollte "root" anzeigen
✅ Endgültige Überprüfung
Überprüfen, dass SSH funktioniert
Bash1# Dienststatus überprüfen 2sudo systemctl status sshd 3 4# Überprüfen, dass SSH auf dem richtigen Port lauscht 5sudo netstat -tlnp | grep ssh 6# oder 7sudo ss -tlnp | grep ssh 8 9# Konfiguration überprüfen 10sudo sshd -T | grep port
SSH-Logs überprüfen
Bash1# Verbindungsversuche anzeigen 2sudo tail -f /var/log/auth.log 3 4# Erfolgreiche Verbindungen anzeigen 5sudo grep "Accepted" /var/log/auth.log 6 7# Fehlgeschlagene Versuche anzeigen 8sudo grep "Failed" /var/log/auth.log
🛡️ Zusätzlicher Schutz mit fail2ban
fail2ban ist ein Tool, das automatisch IPs blockiert, die Brute-Force-Angriffe versuchen.
fail2ban installieren
Bashsudo apt update sudo apt install fail2ban -y
Grundkonfiguration
Bash1# Konfigurationsdatei kopieren 2sudo cp /etc/fail2ban/jail.conf /etc/fail2ban/jail.local 3 4# Konfiguration bearbeiten 5sudo nano /etc/fail2ban/jail.local
Empfohlene Konfiguration für SSH:
INI1[sshd] 2enabled = true 3port = 2222 # Ihr neuer SSH-Port 4maxretry = 3 # Anzahl der Versuche vor Bann 5bantime = 3600 # Bannzeit in Sekunden (1 Stunde) 6findtime = 600 # Zeitfenster zum Zählen der Versuche (10 Minuten)
fail2ban aktivieren
Bash1# fail2ban starten 2sudo systemctl start fail2ban 3 4# Beim Start aktivieren 5sudo systemctl enable fail2ban 6 7# Status überprüfen 8sudo systemctl status fail2ban 9 10# Gebannte IPs anzeigen 11sudo fail2ban-client status sshd
🆘 Fehlerbehebung
Kann mich nicht mehr über SSH verbinden
Wenn Sie vom Server ausgesperrt sind:
-
Verwenden Sie Ihre Backup-Sitzung (Terminal 2, das Sie offen gehalten haben)
-
Wenn Sie keine Backup-Sitzung haben:
- Kontaktieren Sie den Infrawire-Support mit Ihren Anmeldedaten
- Verwenden Sie die VNC/KVM-Konsole aus Ihrem Control Panel
- Verbinden Sie sich direkt und stellen Sie die alte Konfiguration wieder her:
Bash
sudo nano /etc/ssh/sshd_config # Setzen Sie Port 22 zurück sudo systemctl restart sshd
SSH-Port antwortet nicht
Bash1# Überprüfen, dass SSH auf dem Port lauscht 2sudo netstat -tlnp | grep ssh 3 4# Überprüfen, dass der Port in UFW offen ist 5sudo ufw status | grep 2222 6 7# SSH-Logs überprüfen 8sudo journalctl -u sshd -n 50
Muss mich vorübergehend mit dem alten Port verbinden
Wenn Sie sich mit dem alten Port (22) verbinden müssen, bevor Sie ihn entfernen:
Bash1# Port 22 vorübergehend erlauben 2sudo ufw allow 22/tcp 3 4# Verbinden 5ssh -p 22 benutzer@ihre-ip 6 7# Einmal verbunden, Regel entfernen 8sudo ufw delete allow 22/tcp
📚 Zusätzliche Ressourcen
❓ Häufig gestellte Fragen
F: Welchen Port soll ich für SSH wählen?
A: Wählen Sie einen Port zwischen 1024 und 65535. Vermeiden Sie gebräuchliche Ports (80, 443, 3306, etc.). Ports wie 2222, 2200 oder 1022 sind gute Wahlmöglichkeiten.
F: Kann ich denselben Port für mehrere Dienste verwenden?
A: Nein, jeder Dienst muss seinen eigenen eindeutigen Port haben.
F: Muss ich wirklich den SSH-Port ändern?
A: Es wird dringend empfohlen. Es reduziert automatisierte Brute-Force-Angriffe erheblich.
F: Ist fail2ban notwendig, wenn ich den Port geändert habe?
A: Nein, aber es ist eine empfohlene zusätzliche Sicherheitsschicht.
F: Wie verbinde ich mich mit dem neuen Port von einem SSH-Client aus?
A: Verwenden Sie die Option -p: ssh -p 2222 benutzer@ihre-ip
Viel Erfolg bei der Sicherung! 🚀