Files
ssh-jumphost/ansible/roles/os_hardening/CIS_STIG_MAPPING.md
2026-08-19 22:33:19 +02:00

6.5 KiB
Raw Blame History

CIS/STIG-Mapping der os_hardening-Rolle

Diese Rolle deckt eine bewusst ausgewählte, für einen dedizierten Jumphost (Debian/Ubuntu-Familie) relevante Teilmenge der CIS Debian/Ubuntu Linux Benchmarks sowie einzelner DISA-STIG-typischer Controls ab. Sie ist kein vollständiger, zertifizierter Benchmark-Lauf — dafür fehlt ein automatisiertes Compliance-Scanning-Tool. Empfehlung: nach dem Rollout zusätzlich mit oscap xccdf eval (OpenSCAP) gegen das jeweils zutreffende Profil prüfen und diese Tabelle bei Abweichungen als Startpunkt für die Nacharbeit nutzen.

Referenz-Control-IDs folgen der CIS-Nummerierung sinngemäß (Benchmark-Version kann je nach Debian/Ubuntu-Release leicht abweichen); wo passend ist zusätzlich vermerkt, wenn ein Control STIG-typisch, aber nicht CIS-nummeriert ist.

Bereich CIS-Control (sinngemäß) Umsetzung Status
Unsichere Legacy-Dienste 2.1.x tasks/packages.yml Implementiert
Automatische Sicherheitsupdates 1.9 tasks/packages.yml Implementiert
Deaktivierung seltener Dateisystemtreiber 1.1.1.11.1.1.8 tasks/kernel_modules.yml Implementiert
Deaktivierung seltener Netzwerkprotokolle 3.4.13.4.4 tasks/kernel_modules.yml Implementiert
USB-Speichermedien deaktivieren 1.1.23 tasks/kernel_modules.yml Implementiert
Netzwerk-/Kernel-sysctl-Härtung 3.x, 1.5.x tasks/sysctl.yml Implementiert
Core Dumps deaktivieren 1.5.1 tasks/sysctl.yml Implementiert
/tmp, /dev/shm mit noexec/nosuid/nodev 1.1.2.x tasks/mounts.yml Best-Effort — nur wirksam, wenn bereits eigene Mountpoints existieren (siehe unten)
Passwortqualität (Länge/Komplexität) 5.4.1 tasks/pam_password_policy.yml Implementiert (lokale OS-Konten)
Account-Lockout (pam_faillock) 5.3.1 tasks/pam_password_policy.yml Implementiert, siehe Einschränkung unten
Passwort-Historie 5.4.2 tasks/pam_password_policy.yml Implementiert
Passwort-Ablauf (login.defs) 5.4.1.15.4.1.4 tasks/pam_password_policy.yml Implementiert
Erweiterte auditd-Regeln (Identität, Zeit, Netzwerk, Logins, Kernelmodule) 4.1.34.1.14 tasks/auditd.yml Implementiert
auditd-Log-Handling (keep_logs, space_left_action) 4.1.2.3, 4.1.2.4 tasks/auditd.yml Implementiert
auditd unveränderlich (-e 2) 4.1.1.4 (STIG) tasks/auditd.yml Implementiert, standardmäßig deaktiviert (Opt-in os_hardening_auditd_immutable, da Reboot zum Ändern nötig)
Datei-Integritäts-Monitoring (AIDE) 1.4.1, 1.4.2 tasks/aide.yml Implementiert
Rootkit-Scanner (rkhunter, ergänzend) STIG-typisch, nicht CIS-nummeriert tasks/rootkit_scan.yml Implementiert
Anmelde-Banner STIG-typisch (Legal Notice) tasks/banners.yml, tasks/sshd.yml Implementiert
cron/at auf autorisierte Nutzer beschränken 2.4.1.x tasks/cron_at.yml Implementiert
Berechtigungen kritischer Dateien (/etc/shadow etc.) 6.1.x tasks/file_permissions.yml Implementiert
sudo-Logging (log_input, log_output, use_pty) STIG-typisch tasks/file_permissions.yml Implementiert
su auf Gruppe sudo beschränken 5.6 tasks/file_permissions.yml Implementiert
SSH-Daemon-Härtung (Ciphers/KEX/MACs, kein Root-Login, etc.) 5.2.x tasks/sshd.yml Implementiert
IPv6 deaktivieren 3.1.1 tasks/sysctl.yml Implementiert, Opt-in (os_hardening_disable_ipv6, Default aus)

Bewusst nicht automatisiert (mit Begründung)

Bereich CIS-Control (sinngemäß) Warum nicht automatisiert
Getrenntes Partitionslayout (/tmp, /var, /var/log, /var/log/audit, /home als eigene Partitionen) 1.1.11.1.1.30 Erfordert eine Neupartitionierung der Festplatte — nur zum Zeitpunkt der OS-Installation sinnvoll setzbar, nicht nachträglich per Ansible auf ein laufendes System ohne Datenverlustrisiko. Empfehlung: beim Erstellen des Basis-Images/der VM-Vorlage bereits mit diesem Layout provisionieren.
Bootloader-Passwort (GRUB) 1.4.1 (ältere CIS-Nummerierung) Erfordert physischen/Konsolen-Zugriff zum Testen und ist bei Cloud-/Hypervisor-Images oft irrelevant oder sogar kontraproduktiv (verhindert automatisierten Neustart). Bewusst dem jeweiligen Betreiber überlassen.
Volltext-Festplattenverschlüsselung Nicht CIS-nummeriert, STIG-typisch Muss bei der OS-Installation eingerichtet werden (LUKS o.ä.), nicht nachträglich per Ansible. In Cloud-Umgebungen häufig durch Provider-seitige Verschlüsselung (z.B. verschlüsselte Volumes) abgedeckt — separat prüfen.
Physische Sicherheit / BIOS-UEFI-Passwort Nicht CIS-nummeriert Außerhalb der Reichweite von Ansible; organisatorische/physische Maßnahme.
Zentrales Log-Forwarding an SIEM/Syslog-Server Nicht CIS-nummeriert, aber im Jumphost-Konzept Kap. 6.9 gefordert Erfordert Kenntnis der Ziel-SIEM-Infrastruktur (Empfänger-Host, Protokoll, TLS-Zertifikate) — als eigener Konfigurationspunkt vorgesehen, aber nicht Teil dieser Rolle (siehe Konzept Kap. 6.9, Erweiterungspunkt).
Netzwerksegmentierung / Firewalling zwischen Zielsystemen Außerhalb des Jumphost-Scopes Betrifft die Netzwerkinfrastruktur rund um den Jumphost, nicht den Jumphost selbst — Bestandteil des übergeordneten Netzwerkkonzepts.

Bekannte Einschränkungen

  • pam_faillock-Einbindung (tasks/pam_password_policy.yml) fügt einen Block direkt in /etc/pam.d/common-auth ein. Auf Systemen, die pam-auth-update --force als Teil eines anderen Automatisierungsschritts laufen lassen, kann dieser Block überschrieben werden. Für produktive Systeme mit häufigen PAM-Änderungen wird empfohlen, stattdessen ein eigenes pam-auth-update-Profil unter /usr/share/pam-configs/ zu pflegen (sauberer, upgrade-fest) — hier aus Gründen der Nachvollziehbarkeit als direkter Block-Insert gehalten.
  • /tmp//dev/shm-Remount wirkt nur, wenn diese Pfade bereits eigene Mountpoints sind. Ist das nicht der Fall, gibt die Rolle eine Debug-Meldung aus, ändert aber nichts automatisch am Partitionslayout (siehe Tabelle oben).
  • Diese Rolle wurde in dieser Session nicht gegen ein reales Debian/Ubuntu-System ausgeführt (kein Root-/Zielsystem verfügbar) — nur ansible-playbook --syntax-check sowie YAML-/Jinja2-Parsing wurden verifiziert (siehe README, Abschnitt „Was bewusst noch offen ist"). Ein --check-Lauf (Dry-Run) und ein realer Rollout-Test in einer Staging-Umgebung stehen vor dem Produktivbetrieb noch aus.