diff --git a/rmm-tasks/ESPO-01-Grundeinrichtung.sh b/rmm-tasks/ESPO-01-Grundeinrichtung.sh index 71edc5e..6ab5a05 100755 --- a/rmm-tasks/ESPO-01-Grundeinrichtung.sh +++ b/rmm-tasks/ESPO-01-Grundeinrichtung.sh @@ -9,7 +9,7 @@ set -u # Standzeile: zeigt im Protokoll, welche Fassung tatsaechlich gelaufen ist. -echo "ESPO-01-Grundeinrichtung, Skriptstand 2026-09-24" +echo "ESPO-01-Grundeinrichtung, Skriptstand 2026-09-25" KUERZEL_ROH="${1:-}" FEHLER=0 @@ -51,7 +51,28 @@ PermitRootLogin no MaxAuthTries 3 LoginGraceTime 20 CONF -if sshd -t; then systemctl reload ssh && echo "SSH: PermitRootLogin no, MaxAuthTries 3"; else echo "FEHLER: sshd-Konfiguration ungueltig"; FEHLER=1; fi +# /run/sshd muss dafuer existieren: `sshd -t` bricht ohne das Verzeichnis ab +# ("Missing privilege separation directory"). Ubuntu 24.04 startet sshd ueber ssh.socket +# erst bei der ersten Verbindung, und erst dann legt systemd (RuntimeDirectory=sshd) es an. +# Auf einer VM, auf der bisher nur die Konsole benutzt wurde, fehlt es deshalb. +install -d -m 0755 /run/sshd +if sshd -t; then + # Laeuft sshd als Dienst, muss er die Aenderung nachlesen. Unter ssh.socket laeuft er nicht + # dauerhaft - dort liest jede neue Verbindung die Konfiguration ohnehin neu. + if systemctl is-active --quiet ssh; then + systemctl reload ssh || { echo "FEHLER: sshd laedt die Konfiguration nicht neu"; FEHLER=1; } + fi + # Nachweis statt Zusicherung: die Werte so ausgeben, wie sshd sie tatsaechlich anwendet. + # Laesst sich das nicht auslesen, ist die Haertung unbewiesen - dann ist der Lauf ein Fehler. + SSH_IST="$(sshd -T | grep -iE '^(permitrootlogin|maxauthtries|logingracetime) ')" + if [ -n "$SSH_IST" ]; then + echo "$SSH_IST" | sed 's/^/SSH: /' + else + echo "FEHLER: wirksame SSH-Werte nicht auslesbar"; FEHLER=1 + fi +else + echo "FEHLER: sshd-Konfiguration ungueltig"; FEHLER=1 +fi # 5. Journal begrenzen, damit Logs das Wurzeldateisystem nicht fuellen koennen. install -d -m 755 /etc/systemd/journald.conf.d