SSH ist das Standardprotokoll für den sicheren Fernzugriff auf Linux-Server. Ein falsch konfigurierter SSH-Dienst kann jedoch ein erhebliches Sicherheitsrisiko darstellen. In diesem Tutorial lernen Sie, wie Sie SSH auf Ihrem Server absichern – von der Nutzung von Schlüsseln über Portänderungen bis hin zu Intrusion-Prevention-Maßnahmen wie Fail2ban.
SSH Grundkonfiguration überprüfen
Die zentrale Konfigurationsdatei für SSH befindet sich unter /etc/ssh/sshd_config. Bevor Änderungen vorgenommen werden, empfiehlt es sich, eine Sicherung zu erstellen:
sudo cp /etc/ssh/sshd_config /etc/ssh/sshd_config.bak
Wichtige Parameter:
Port 22: Standardport, kann zur Abschreckung geändert werdenPermitRootLogin no: Root-Login verhindernPasswordAuthentication no: Nur Schlüssel-basierte Authentifizierung erlaubenAllowUsers/AllowGroups: Zugriff auf bestimmte Benutzer/Gruppen beschränken
SSH Keys erstellen und verwenden
Schlüsselbasierte Authentifizierung ist sicherer als Passwort-Login. Erstellung eines RSA-Schlüssels:
# Auf dem Client
ssh-keygen -t rsa -b 4096 -C "user@example.com"
Der öffentliche Schlüssel wird auf den Server kopiert:
ssh-copy-id user@server_ip
Alternative Möglichkeit manuell:
cat ~/.ssh/id_rsa.pub | ssh user@server_ip "mkdir -p ~/.ssh && cat >> ~/.ssh/authorized_keys"
Die Datei authorized_keys sollte korrekte Berechtigungen haben:
chmod 700 ~/.ssh
chmod 600 ~/.ssh/authorized_keys
SSH Port ändern
Um automatisierte Angriffe zu reduzieren, kann der SSH-Port geändert werden:
sudo nano /etc/ssh/sshd_config
# Beispiel:
Port 2222
Nach Änderungen den SSH-Dienst neu starten:
sudo systemctl restart sshd
Firewall-Regeln anpassen:
# UFW Beispiel
sudo ufw allow 2222/tcp
sudo ufw reload
Root-Login deaktivieren
Direkter Root-Zugang birgt Sicherheitsrisiken. In der Konfiguration:
PermitRootLogin no
Administratoren melden sich mit einem normalen Benutzer an und nutzen sudo für privilegierte Aktionen.
Passwort-Authentifizierung deaktivieren
Nur Schlüsselbasierte Anmeldung verwenden:
PasswordAuthentication no
ChallengeResponseAuthentication no
Damit wird das brute-force Risiko auf Passwörter deutlich reduziert.
Fail2ban installieren und konfigurieren
Fail2ban schützt vor wiederholten fehlgeschlagenen Loginversuchen, indem IPs temporär gesperrt werden.
# Installation
sudo apt install fail2ban # Debian/Ubuntu
sudo dnf install fail2ban # RHEL/CentOS/Fedora
Standardkonfiguration kopieren
sudo cp /etc/fail2ban/jail.conf /etc/fail2ban/jail.local
Wichtige Parameter für SSH:
[sshd]blockiert IPs nachmaxretryfehlgeschlagenen Versuchenbantimelegt Sperrzeit festfindtimedefiniert das Zeitfenster fürmaxretry
[sshd]
enabled = true
port = 2222
filter = sshd
logpath = /var/log/auth.log
maxretry = 5
bantime = 3600
Fail2ban starten und aktivieren:
sudo systemctl enable fail2ban
sudo systemctl start fail2ban
sudo systemctl status fail2ban
Zusätzliche Sicherheitsmaßnahmen
- SSH Protocol 2 erzwingen:
Protocol 2 - Idle-Timeout setzen:
ClientAliveInterval 300,ClientAliveCountMax 2 - Logging erhöhen:
LogLevel VERBOSE - Port-Knocking oder VPN-Zugang vor SSH
- Nur bestimmte IP-Adressen erlauben (
AllowUsers user@ip) - Multi-Faktor-Authentifizierung (z.B. mit
libpam-google-authenticator)
SSH Hardening Checkliste
- Schlüsselbasierte Authentifizierung aktiviert
- Passwort-Login deaktiviert
- Root-Login deaktiviert
- Port geändert von 22
- Fail2ban aktiviert und korrekt konfiguriert
- Idle-Timeout gesetzt
- Nur notwendige Benutzer/Gruppen Zugriff
- Protokollierung auf VERBOSE erhöht
- Optional: MFA und VPN vor SSH
- Regelmäßige Überprüfung der Logs
Fazit
Durch die Kombination aus Schlüssel-basierter Authentifizierung, Portänderung, Fail2ban und restriktiven Konfigurationen lässt sich SSH auf Linux-Servern erheblich absichern. Die Umsetzung dieser Maßnahmen schützt vor Brute-Force-Angriffen, reduziert die Angriffsfläche und stellt sicher, dass administrative Aktionen nachvollziehbar bleiben.
Konfiguriere Cisco Router & Switches und liefere ein Packet-Tracer-Lab/GNS3
Ich biete professionelle Unterstützung im Bereich Netzwerkkonfiguration und Network Automation für private Anforderungen, Studienprojekte, Lernlabore, kleine Unternehmen sowie technische Projekte. Ich unterstütze Sie bei der Konfiguration von Routern und Switches, der Erstellung praxisnaher Topologien in Cisco Packet Tracer, dem Aufbau und Troubleshooting von GNS3- und EVE-NG-Labs sowie bei der Automatisierung von Netzwerkaufgaben mit Netmiko, Paramiko, NAPALM und Ansible. Kontaktieren Sie mich jetzt – klicken Sie hier.
Meine Leistungen umfassen:
-
Professionelle Konfiguration von Routern und Switches
-
Einrichtung von VLANs, Trunks, Routing, DHCP, NAT, ACLs und weiteren Netzwerkfunktionen
-
Erstellung von Topologien und Simulationen in Cisco Packet Tracer
-
Aufbau, Analyse und Fehlerbehebung von Netzwerk-Labs in GNS3 und EVE-NG
-
Automatisierung von Netzwerkkonfigurationen mit Python, Netmiko, Paramiko, NAPALM und Ansible
-
Erstellung von Skripten für wiederkehrende Netzwerkaufgaben
-
Dokumentation der Konfigurationen und Bereitstellung nachvollziehbarer Lösungswege
-
Konfigurations-Backups, Optimierung bestehender Setups und technisches Troubleshooting
Benötigen Sie Unterstützung bei Ihrem Netzwerkprojekt, Ihrer Simulation oder Ihrer Network-Automation-Lösung? Kontaktieren Sie mich jetzt – klicken Sie hier.
