Hardening/Linux/SSH: Unterschied zwischen den Versionen
Erscheinungsbild
Die Seite wurde neu angelegt: „'''Hardening/Linux/SSH''' == Beschreibung == == Vorgehen == * Aktive SSH-Session offen lassen (Rollback-Fenster) * Änderungen zuerst syntaktisch prüfen, danach ''reload'' statt ''restart'' ; Syntax prüfen und Konfiguration laden <syntaxhighlight lang="bash" highlight="" line copy> sudo sshd -t sudo systemctl reload ssh sudo systemctl status ssh --no-pager </syntaxhighlight> ; Effektive Konfiguration anzeigen <syntaxhighlight lang="bash" highlight="…“ |
|||
| (2 dazwischenliegende Versionen desselben Benutzers werden nicht angezeigt) | |||
| Zeile 4: | Zeile 4: | ||
== Vorgehen == | == Vorgehen == | ||
; Hinweis (!) | |||
* Aktive SSH-Session offen lassen (Rollback-Fenster) | * Aktive SSH-Session offen lassen (Rollback-Fenster) | ||
* Änderungen zuerst syntaktisch prüfen, danach ''reload'' statt ''restart'' | * Änderungen zuerst syntaktisch prüfen, danach ''reload'' statt ''restart'' | ||
| Zeile 20: | Zeile 22: | ||
== Port ändern == | == Port ändern == | ||
; Konfiguration | ; Konfiguration | ||
<syntaxhighlight lang="ini" highlight="" line copy> | <syntaxhighlight lang="ini" highlight="" line copy> | ||
Port 2222 | Port 2222 | ||
| Zeile 90: | Zeile 92: | ||
== Session- und Brute-Force-Parameter == | == Session- und Brute-Force-Parameter == | ||
; Konfiguration | ; Konfiguration | ||
<syntaxhighlight lang="ini" highlight="" line copy> | <syntaxhighlight lang="ini" highlight="" line copy> | ||
LoginGraceTime 30 | LoginGraceTime 30 | ||
Aktuelle Version vom 17. Dezember 2025, 15:27 Uhr
Hardening/Linux/SSH
Beschreibung
Vorgehen
- Hinweis (!)
- Aktive SSH-Session offen lassen (Rollback-Fenster)
- Änderungen zuerst syntaktisch prüfen, danach reload statt restart
- Syntax prüfen und Konfiguration laden
sudo sshd -t
sudo systemctl reload ssh
sudo systemctl status ssh --no-pager
- Effektive Konfiguration anzeigen
sudo sshd -T | sort
Port ändern
- Konfiguration
Port 2222
- Prüfen
sudo ss -lntp | grep -E ':(22|2222)\s'
- Client-Test
ssh -p 2222 user@host
- Hinweis
- Firewall/NAT-Regeln müssen an den neuen Port angepasst werden.
Public-Key-Login (inkl. Passphrase)
- Schlüssel erzeugen (Client)
ssh-keygen -t ed25519 -a 64 -o -f ~/.ssh/id_ed25519
- Public Key deployen
ssh-copy-id -p 2222 -i ~/.ssh/id_ed25519.pub user@host
- Berechtigungen (Server)
sudo chmod 700 ~user/.ssh
sudo chmod 600 ~user/.ssh/authorized_keys
- Hinweis
- Passphrase erhöht Schutz bei Schlüsselabfluss
Passwort-Login deaktivieren
Erzwingen von Public-Key-Authentisierung und Abschalten passwortbasierter Verfahren.
- Konfiguration (Key-only)
PubkeyAuthentication yes
PasswordAuthentication no
KbdInteractiveAuthentication no
AuthenticationMethods publickey
- Prüfen
ssh -p 2222 -o PreferredAuthentications=publickey -o PasswordAuthentication=no user@host
- Hinweis
- KbdInteractiveAuthentication steuert interaktive Verfahren (z.B. PAM-gestützte Challenges, 2FA). Für Key-only deaktivieren
- Bei 2FA via PAM wird typischerweise eine abweichende AuthenticationMethods-Kombination benötigt
Root-Login und Zugriff einschränken
- Konfiguration
PermitRootLogin no
AllowUsers admin ops
oder
AllowGroups ssh-login
Session- und Brute-Force-Parameter
- Konfiguration
LoginGraceTime 30
MaxAuthTries 3
MaxSessions 4
MaxStartups 10:30:60
ClientAliveInterval 300
ClientAliveCountMax 2
TCPKeepAlive no
- Hinweis
- ClientAliveInterval/ClientAliveCountMax beendet inaktive/tote Sessions nach definierter Zeit
- MaxStartups drosselt parallele, nicht authentisierte Verbindungen
Forwarding/Tunneling reduzieren
- Konfiguration
X11Forwarding no
AllowAgentForwarding no
AllowTcpForwarding no
GatewayPorts no
PermitTunnel no
PermitUserEnvironment no
PermitEmptyPasswords no
Logging
- Konfiguration
SyslogFacility AUTHPRIV
LogLevel VERBOSE
- Prüfen
sudo journalctl -u ssh --no-pager -n 200
Match-Blöcke (Policies)
- Beispiel
Default restriktiv.
- Ausnahmen nur gezielt (User/Adresse)
# Default: key-only, kein Forwarding
PasswordAuthentication no
KbdInteractiveAuthentication no
AllowTcpForwarding no
Match Address 192.168.0.0/24 User devops
PasswordAuthentication yes
KbdInteractiveAuthentication yes
AllowTcpForwarding yes
- Dies ermöglicht eine flexible Konfiguration von Richtlinien, einschließlich der Anwendung weniger restriktiver Vorgaben, wenn definierte Kriterien erfüllt sind
Audit
- Anwenden und verifizieren
- Konfigurationsdatei prüfen
sudo sshd -t
- Neue Konfiguration ohne Abbruch aktiver Verbindungen neu laden
sudo systemctl reload ssh
- Effektive sshd-Konfiguration anzeigen
sudo sshd -T | sort | less
- Remote-Verbindung testen
ssh -p 2222 -o PreferredAuthentications=publickey -o PasswordAuthentication=no user@host