Zum Inhalt springen

Hardening/Linux/SSH

Aus Foxwiki

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