🔐 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
# 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
# Ü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
# Neuen SSH-Port erlauben (ersetzen Sie 2222 durch Ihren Port) sudo ufw allow 2222/tcp # Optional: Alten Port 22 entfernen, wenn Sie ihn nicht mehr verwenden sudo ufw delete allow 22/tcp # UFW neu laden sudo ufw reload # Überprüfen, dass die Regel aktiv ist sudo ufw status | grep 2222
Schritt 7: SSH-Dienst neu starten
# SSH mit der neuen Konfiguration neu starten sudo systemctl restart sshd # Überprüfen, dass SSH noch funktioniert sudo systemctl status sshd
Schritt 8: Neue Verbindung testen
In einem neuen Terminal testen Sie die Verbindung mit dem neuen Port:
# 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
# SSH-Konfiguration bearbeiten sudo nano /etc/ssh/sshd_config # Diese Zeile finden und ändern PermitRootLogin no # Speichern und neu starten sudo sshd -t sudo systemctl restart sshd
Verbindungsversuche begrenzen
sudo nano /etc/ssh/sshd_config # Diese Zeilen hinzufügen oder ändern MaxAuthTries 3 # Maximum 3 Verbindungsversuche LoginGraceTime 30 # 30 Sekunden Timeout zum Verbinden
Passwort-Authentifizierung deaktivieren (nur SSH-Schlüssel verwenden)
sudo nano /etc/ssh/sshd_config # Diese Zeile ändern PasswordAuthentication no PubkeyAuthentication yes
Nur SSH-Protokoll Version 2 verwenden
sudo nano /etc/ssh/sshd_config # Diese Zeile hinzufügen (wenn sie nicht existiert) Protocol 2
X11-Tunnel deaktivieren (wenn Sie sie nicht benötigen)
sudo 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:
# Syntax überprüfen sudo sshd -t # SSH neu starten sudo 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:
# Neuen Benutzer erstellen sudo adduser meinbenutzer # Benutzer zur sudo-Gruppe hinzufügen sudo usermod -aG sudo meinbenutzer # Testen, dass der Benutzer sudo verwenden kann su - meinbenutzer sudo whoami # Sollte "root" anzeigen
✅ Endgültige Überprüfung
Überprüfen, dass SSH funktioniert
# Dienststatus überprüfen sudo systemctl status sshd # Überprüfen, dass SSH auf dem richtigen Port lauscht sudo netstat -tlnp | grep ssh # oder sudo ss -tlnp | grep ssh # Konfiguration überprüfen sudo sshd -T | grep port
SSH-Logs überprüfen
# Verbindungsversuche anzeigen sudo tail -f /var/log/auth.log # Erfolgreiche Verbindungen anzeigen sudo grep "Accepted" /var/log/auth.log # Fehlgeschlagene Versuche anzeigen sudo 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
sudo apt update sudo apt install fail2ban -y
Grundkonfiguration
# Konfigurationsdatei kopieren sudo cp /etc/fail2ban/jail.conf /etc/fail2ban/jail.local # Konfiguration bearbeiten sudo nano /etc/fail2ban/jail.local
Empfohlene Konfiguration für SSH:
[sshd] enabled = true port = 2222 # Ihr neuer SSH-Port maxretry = 3 # Anzahl der Versuche vor Bann bantime = 3600 # Bannzeit in Sekunden (1 Stunde) findtime = 600 # Zeitfenster zum Zählen der Versuche (10 Minuten)
fail2ban aktivieren
# fail2ban starten sudo systemctl start fail2ban # Beim Start aktivieren sudo systemctl enable fail2ban # Status überprüfen sudo systemctl status fail2ban # Gebannte IPs anzeigen sudo 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:
sudo nano /etc/ssh/sshd_config # Setzen Sie Port 22 zurück sudo systemctl restart sshd
SSH-Port antwortet nicht
# Überprüfen, dass SSH auf dem Port lauscht sudo netstat -tlnp | grep ssh # Überprüfen, dass der Port in UFW offen ist sudo ufw status | grep 2222 # SSH-Logs überprüfen sudo 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:
# Port 22 vorübergehend erlauben sudo ufw allow 22/tcp # Verbinden ssh -p 22 benutzer@ihre-ip # Einmal verbunden, Regel entfernen sudo 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! 🚀