Zum Inhalt springen

Hardening/Linux: Unterschied zwischen den Versionen

Aus Foxwiki
DanielZorin (Diskussion | Beiträge)
Keine Bearbeitungszusammenfassung
DanielZorin (Diskussion | Beiträge)
Keine Bearbeitungszusammenfassung
Zeile 1: Zeile 1:
'''Hardening/Linux'''
'''Hardening/Linux'''


== Beschreibung ==
== 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
sudo sysctl -a > /tmp/default_sysctl.txt


;
<syntaxhighlight lang="bash" highlight="1" copy line>
dann legen wir die Datei /etc/sysctl.d/97_hard.conf an und kopieren folgende Zeilen rein.
sudo sysctl -a > /tmp/default_sysctl.txt
</syntaxhighlight>


Auch hier gilt wieder die Einstellungen müssen zu der eingesetzten Software kompatible sein
; 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:
|}
|}


Die Erklärung zu den jeweiligen Konfigurationen kann unter dem Link in der Quellenangabe nachgelesen werden
; 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
service procps force-reload
 
<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

  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