InfrawireInfrawire LogoDokumentation

SSH-Verbindung absichern

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 + X zum Beenden
  • Y zum Bestätigen
  • Enter zum 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

Bash
1# 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

Bash
1# 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

Bash
1# 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

Bash
1sudo 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)

Bash
1sudo nano /etc/ssh/sshd_config 2 3# Diese Zeile ändern 4PasswordAuthentication no 5PubkeyAuthentication yes

Nur SSH-Protokoll Version 2 verwenden

Bash
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)

Bash
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:

Bash
1# 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:

Bash
1# 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

Bash
1# 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

Bash
1# 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

Bash
sudo apt update sudo apt install fail2ban -y

Grundkonfiguration

Bash
1# 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:

INI
1[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

Bash
1# 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:

  1. Verwenden Sie Ihre Backup-Sitzung (Terminal 2, das Sie offen gehalten haben)

  2. 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

Bash
1# Ü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:

Bash
1# 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! 🚀