SSH‑Sicherheit

Juli 30, 2011·
Julio Batista Silva
Julio Batista Silva
· 3 Min Lesezeit
blog Linux

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änge
  • 1: 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_config folgende Zeile setzen:

    PermitRootLogin no
    
  • Daemon neu starten:

    sudo /etc/rc.d/sshd restart
    

    oder 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

  1. 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 ist Ed25519: ssh-keygen -t ed25519 -f serverx -C "pubkey".

  2. Schlüssel auf den Server kopieren.

    ssh-copy-id -i serverx.pub '-p 2345 julio@serverx.com'
    

    Das hängt serverx.pub an ~/.ssh/authorized_keys auf dem Server an.

  3. Berechtigungen prüfen:

    chmod 700 ~/.ssh
    chmod 600 ~/.ssh/serverx
    
  4. ~/.ssh/config anlegen – 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

Julio Batista Silva
Autoren
Senior Cloud Developer

Ich bin ein brasilianischer Computeringenieur mit Wohnsitz in Deutschland und begeistere mich für Technik, Wissenschaft, Fotografie und Sprachen.

Ich programmiere seit etwa zwei Jahrzehnten und habe dabei alles von mobilen Apps und Webentwicklung bis hin zu Machine Learning erkundet. Derzeit fokussiere ich mich auf Cloud‑SRE und Data Engineering.

Ich engagiere mich ehrenamtlich in den Open‑Source- und Python‑Communities, helfe bei der Organisation der PyCon DE und PyData Berlin, betreue als Mentor und trage mit Code und Übersetzungen bei.

In meinem Blog teile ich Linux‑Tipps, Einrichtungsanleitungen und persönliche Notizen, die ich als spätere Referenz geschrieben habe. Ich hoffe, dass sie auch anderen nützlich sind. Die Inhalte sind in mehreren Sprachen verfügbar.

Schau dir meine Galerie an, um einige meiner Fotografien zu sehen.

Abseits der Tastatur findest du mich auf Konzerten, beim Klarinettenspiel, Radfahren, Tauchen oder beim Erkunden neuer Orte, Kulturen und Küchen.

Ich freue mich immer über den Austausch! 🙂

comments powered by Disqus