SSH‑Sicherheit
Starke Passwörter verwenden
Starke Passwörter sind Zeichenketten, die weder zufällig erraten noch per Brute‑Force in wenigen Stunden geknackt werden können.
Wähle Passwörter mit:
- Mindestens 15 Zeichen
- Kombination aus Groß‑/Kleinbuchstaben, Zahlen und Sonderzeichen
Programme wie pwgen, makepasswd, apg, KeePassX oder Unix‑Befehle erzeugen sichere Zufalls‑
Passwörter:
tr -dc '_A-Za-z0-9!"#$%&'\''()*+,-./:;<=>?@[\]^_`{|}~' < /dev/urandom | head -c25
pwgen -cnsy 25 1
Optionen für pwgen:
-c: mindestens ein Großbuchstabe-n: mindestens eine Ziffer-s: mindestens ein Sonderzeichen-y: mehrdeutige Zeichen ausschließen (l, 1, I, 0, O, …)25: Länge1: Anzahl der Passwörter
Solche Passwörter sind sicher, aber schwer merkbar – man muss sie notieren. Ich empfehle daher eine lange Passphrase, die nur du dir merken kannst.
Root‑Login per SSH deaktivieren
In
/etc/ssh/sshd_configfolgende Zeile setzen:PermitRootLogin noDaemon neu starten:
sudo /etc/rc.d/sshd restartoder mit systemd:
sudo systemctl restart sshd
Root‑Zugriff bei Bedarf über su.
Zugelassene SSH‑Benutzer einschränken
Sinnvoll, wenn nur wenige Nutzer per SSH zugreifen dürfen. In /etc/ssh/sshd_config:
AllowUsers usr_1 usr_2 usr_3
„Protocol 1“ deaktivieren
SSH bietet zwei Protokolle. Protocol 1 ist veraltet/unsicher; Protocol 2 aktivieren.
Port ändern
Standardport ist 22. Auf eine zufällige Nummer über 1024 ändern, z. B. Port 2345.
Ab jetzt muss der Port beim Verbinden angegeben werden:
ssh -p 2345 julio@home.juliobs.com
Den Port (TCP) ggf. auch im Router freigeben.
Firewall verwenden
Mit iptables nur bestimmte IPs auf den SSH‑Port lassen:
iptables -A INPUT -p tcp -s 201.43.81.111 --dport 22 -j ACCEPT
Da ich oft von wechselnden IPs zugreife, begrenze ich stattdessen die Versuche pro IP:
Loggt IPs, die Port 22 anfragen, und akzeptiert, wenn in 60 s weniger als 4 Versuche erfolgten:
iptables -A INPUT -p tcp --dport 22 -m recent --set --name ssh --rsource
iptables -A INPUT -p tcp --dport 22 -m recent ! --rcheck --seconds 60 \
--hitcount 4 --name ssh --rsource -j ACCEPT
Verbindungsversuche >3 pro Minute verwerfen:
iptables -A INPUT -p tcp --dport 22 --syn -m limit --limit 1/m --limit-burst 3 -j ACCEPT
iptables -A INPUT -p tcp --dport 22 --syn -j DROP
Public/Private Keys für Authentifizierung nutzen
Schlüssel erstellen:
ssh-keygen -t rsa -b 4096 -f servidorx -C "pubkey para servidor X"Standard ist RSA 2048; hier nutze ich RSA 4096.
2020‑Update: Empfohlen istEd25519:ssh-keygen -t ed25519 -f serverx -C "pubkey".Schlüssel auf den Server kopieren.
ssh-copy-id -i serverx.pub '-p 2345 julio@serverx.com'Das hängt
serverx.puban~/.ssh/authorized_keysauf dem Server an.Berechtigungen prüfen:
chmod 700 ~/.ssh chmod 600 ~/.ssh/serverx~/.ssh/configanlegen – per‑Host‑Einstellungen/Aliasse:Host github.com HostName github.com IdentityFile ~/.ssh/github User jbsilva Host juliobs.com HostName juliobs.com IdentityFile ~/.ssh/juliobs User julio Host servidorx HostName ssh.servidorx.com IdentityFile ~/.ssh/servidorx User usuariox Port 2345
Damit musst du Benutzer, Adresse und Port nicht mehr jedes Mal tippen.
Statt
ssh -i serverx -p 2345 userx@ssh.serverx.com
geht dann einfach:
ssh servidorx