Hardening/Linux: Unterschied zwischen den Versionen
Keine Bearbeitungszusammenfassung |
Keine Bearbeitungszusammenfassung |
||
| Zeile 1: | Zeile 1: | ||
'''Hardening/Linux''' | '''Hardening/Linux''' | ||
== | == Kernel-Hardening (sysctl) == | ||
; Backup | ; Backup | ||
Erstmal legen wir uns ein Backup der Default Config an | Erstmal legen wir uns ein Backup der Default Config an | ||
<syntaxhighlight lang="bash" highlight="1" copy line> | |||
sudo sysctl -a > /tmp/default_sysctl.txt | |||
</syntaxhighlight> | |||
; Konfiguration | |||
Datei ''/etc/sysctl.d/97_hard.conf'' anlegen und die folgenden Parameter eintragen | |||
* Einstellungen müssen mit der eingesetzten Software kompatibel sein | |||
==== Parameter ==== | |||
{| class="wikitable sortable options big" | {| class="wikitable sortable options big" | ||
| Zeile 50: | Zeile 56: | ||
|} | |} | ||
; Aktivierung | |||
Nach einem Neustart werden die Kernelparameter aktiv, wer nicht solange warten möchte kann diese mit | Nach einem Neustart werden die Kernelparameter aktiv, wer nicht solange warten möchte kann diese mit | ||
<syntaxhighlight lang="bash" highlight="1" copy line> | |||
sudo sysctl --system | |||
</syntaxhighlight> | |||
sofort einlesen. | 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. [[Systemd/Journald|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 und Angriffsfläche == | |||
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 und Boot-Schutz == | |||
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 | |||
<noinclude> | <noinclude> | ||
Version vom 17. Dezember 2025, 14:31 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 und Angriffsfläche
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 und Boot-Schutz
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
Anhang
Siehe auch
Links
Weblinks
- https://www.thomas-krenn.com/de/wiki/Absicherung_eines_Debian_Servers
- https://www.kernel.org/doc/html/latest/admin-guide/sysctl/
- https://www.fb-pro.com/linux-haerten/
- https://www.kuketz-blog.de/linux-systemhaertung-basis-linux-haerten-teil2/
- https://netwrix.com/de/resources/guides/linux-hardening-security-best-practices