Zum Inhalt springen

Hardening/Linux: Unterschied zwischen den Versionen

Aus Foxwiki
DanielZorin (Diskussion | Beiträge)
DanielZorin (Diskussion | Beiträge)
Zeile 127: Zeile 127:
* Container-Runtimes mit restriktiven Profilen (z.B. Namespaces, ''seccomp'', Capability-Reduktion) betreiben
* Container-Runtimes mit restriktiven Profilen (z.B. Namespaces, ''seccomp'', Capability-Reduktion) betreiben
* Abhängigkeiten und Images regelmäßig aktualisieren und auf bekannte Schwachstellen prüfen
* Abhängigkeiten und Images regelmäßig aktualisieren und auf bekannte Schwachstellen prüfen
* Zur Erhöhung der Sicherheit auf dem Docker-Host kann [[userns-remap]] eingesetzt werden
* Zur Erhöhung der Sicherheit auf dem [[Docker]]-Host kann [[userns-remap]] eingesetzt werden


<noinclude>
<noinclude>

Version vom 17. Dezember 2025, 15:30 Uhr

Hardening/Linux

Kernel-Hardening (sysctl)

Backup

Erstmal legen wir uns ein Backup der Default Config an

sudo sysctl -a > /tmp/default_sysctl.txt
Konfiguration

Datei /etc/sysctl.d/97_hard.conf anlegen und die folgenden Parameter eintragen

  • Einstellungen müssen mit der eingesetzten Software kompatibel sein

Parameter

Parameter Beschreibung
kernel.kptr_restrict = 2
kernel.dmesg_restrict = 1
kernel.unprivileged_bpf_disabled=1
net.core.bpf_jit_harden=2
dev.tty.ldisc_autoload=0
vm.unprivileged_userfaultfd=0
kernel.kexec_load_disabled = 1
kernel.sysrq=4
kernel.unprivileged_userns_clone=0
kernel.perf_event_paranoid = 3
kernel.yama.ptrace_scope=2
vm.mmap_rnd_bits=32
vm.mmap_rnd_compat_bits=16
fs.protected_symlinks=1
fs.protected_hardlinks=1
fs.protected_fifos=2
fs.protected_regular=2
Aktivierung

Nach einem Neustart werden die Kernelparameter aktiv, wer nicht solange warten möchte kann diese mit

sudo sysctl --system

sofort einlesen.

Mount-Optionen

Härtung auf Dateisystemebene reduziert die Auswirkungen lokaler Angriffe und Fehlkonfigurationen.

  • Separate Partitionen für Daten- und Systembereiche (z.B. /home, /var, /tmp) vorsehen, sofern möglich
  • Mount-Optionen wie nodev, nosuid und noexec für geeignete Dateisysteme verwenden, um die Ausführung oder Nutzung bestimmter Objekttypen zu unterbinden
  • Kritische Systempfade möglichst restriktiv einhängen (z.B. nur lesbar, sofern der Betriebsfall dies zulässt)

SSH-Hardening

SSH ist typischer Einstiegspunkt für Angriffe und sollte besonders restriktiv konfiguriert werden.

  • Schlüsselbasierte Authentifizierung bevorzugen und Passwörter, wo möglich, deaktivieren
  • Root-Login einschränken oder deaktivieren und administrative Zugriffe über dedizierte Benutzerkonten mit sudo abbilden
  • Protokollversion, Kryptosuiten und erlaubte Authentifizierungsverfahren anhand aktueller Sicherheitsrichtlinien auswählen

Firewall

Eine hostbasierte Firewall begrenzt eingehenden und ausgehenden Verkehr auf das notwendige Minimum.

  • Default-Deny-Policy für eingehenden Verkehr, explizite Freigabe nur benötigter Ports und Protokolle
  • Trennung von Verwaltungs-, Anwendungs- und Datenverkehr durch Zonen oder separate Regeln
  • Regelwerk regelmäßig prüfen und an Änderungen der Dienste oder Topologie anpassen

Mandatory Access Control (MAC)

MAC-Systeme ergänzen klassische Berechtigungen um kontextabhängige Richtlinien.

  • Einsatz von AppArmor, SELinux oder vergleichbaren Mechanismen zur Einschränkung von Prozessen auf das notwendige Minimum
  • Profile für kritische Dienste definieren, testen und kontinuierlich pflegen
  • Alarmierung und Logging von Policy-Verletzungen zur Erkennung fehlerhafter Konfigurationen nutzen

Audit und Logging

Strukturiertes Logging unterstützt Erkennung, Analyse und Nachweis sicherheitsrelevanter Ereignisse.

  • Zentrale Sammlung von System- und Anwendungslogs (z.B. journald, klassische Logfiles, Audit-Subsystem)
  • Klare Aufbewahrungs- und Rotationsrichtlinien für Logs definieren
  • Regelmäßige Auswertung und Korrelation von Meldungen (z.B. Anmeldefehler, Policy-Verstöße, Dienstabstürze)

Rechtemanagement

Sauberes Identitäts- und Rechtemanagement reduziert das Risiko von Fehlbedienung und Missbrauch.

  • Minimalprinzip für Berechtigungen umsetzen (Least Privilege)
  • Trennung von administrativen und nichtadministrativen Konten
  • Gruppenstrukturen und sudo-Regeln so gestalten, dass nachvollziehbare Verantwortlichkeiten entstehen

Dienste

Jeder aktive Dienst erweitert die Angriffsfläche des Systems.

  • Nicht benötigte Pakete, Dienste und Timer entfernen oder deaktivieren
  • Nur notwendige Netzwerk-Listener bereitstellen; interne Dienste möglichst auf lokale Schnittstellen binden
  • Standardkonfigurationen von Diensten prüfen und sicherheitsrelevante Parameter (z.B. TLS, Authentifizierung, Zugriffskontrolle) anpassen

Physischer Zugriff

Physischer Zugriff ermöglicht oft das Umgehen logischer Schutzmechanismen.

  • Einsatz von Datenträgerverschlüsselung für sensible Systeme und Datenbestände prüfen
  • Bootloader-Konfiguration und Start von alternativen Medien kontrollieren
  • Firmware-/UEFI-Einstellungen absichern und, wo sinnvoll, mit Passwörtern schützen

Anwendungen und Container

Applikationen und Container sollten nicht nur funktional, sondern auch sicher integriert werden.

  • Standardkonfigurationen von Anwendungen prüfen und auf minimale benötigte Funktionen reduzieren
  • Container-Runtimes mit restriktiven Profilen (z.B. Namespaces, seccomp, Capability-Reduktion) betreiben
  • Abhängigkeiten und Images regelmäßig aktualisieren und auf bekannte Schwachstellen prüfen
  • Zur Erhöhung der Sicherheit auf dem Docker-Host kann userns-remap eingesetzt werden


Anhang

Siehe auch

Links

Weblinks

  1. https://www.thomas-krenn.com/de/wiki/Absicherung_eines_Debian_Servers
  2. https://www.kernel.org/doc/html/latest/admin-guide/sysctl/
  3. https://www.fb-pro.com/linux-haerten/
  4. https://www.kuketz-blog.de/linux-systemhaertung-basis-linux-haerten-teil2/
  5. https://netwrix.com/de/resources/guides/linux-hardening-security-best-practices