Linux Sicherheit - Systemhärtung

Aus Xinux Wiki
Zur Navigation springen Zur Suche springen

Linux Sicherheit - Systemhärtung

  • Die Systemhärtung (Hardening) umfasst alle Maßnahmen, die ein Linux-System auf das notwendige Minimum reduzieren und seine Angriffsfläche minimieren. Ziel ist ein stabiler, wartbarer und sicher konfigurierter Zustand mit klar kontrollierten Schnittstellen.*

Grundlagen

  • Systemhärtung bedeutet, alle nicht benötigten Dienste, Benutzer, Ports und Funktionen zu entfernen oder zu deaktivieren.
  • Jede installierte Software und jeder offene Port ist potenziell ein Risiko.
  • Ein gehärtetes System folgt dem Prinzip: „Alles ist verboten, was nicht ausdrücklich erlaubt ist.“

Paketverwaltung und Systembasis

  • apt update && apt upgrade -y
  • dnf update -y
  • zypper update -y
  • System stets aktuell halten, insbesondere Kernel- und Sicherheitsupdates.
  • Nur benötigte Pakete installieren – jede zusätzliche Software erhöht die Angriffsfläche.
  • apt autoremove --purge -y
  • dnf remove --noautoremove <paketname>
  • Entferne Entwicklungs- und Debugtools, wenn nicht erforderlich.

Benutzer- und Rechtehärtung

  • Nur dedizierte Benutzerkonten, keine gemeinsamen Logins.
  • Root-Login über SSH deaktivieren:
PermitRootLogin no
  • Sudo nur gezielt freigeben:
  • visudo
  • sudo -l
  • Home-Verzeichnisse mit restriktiven Rechten (700) konfigurieren.
  • Unnötige Systemkonten sperren:
  • passwd -l daemon
  • usermod -s /usr/sbin/nologin nobody

Dienstekontrolle und Minimierung

  • systemctl list-unit-files --type=service
  • systemctl disable --now avahi-daemon
  • systemctl disable --now cups
  • systemctl disable --now bluetooth
  • Nur benötigte Dienste aktivieren.
  • Netzwerkdienste wie Telnet, FTP oder rsh sind veraltet und unsicher – entfernen.
  • Anstatt von FTP → sftp oder scp.
  • Für Administration SSH mit Key-Authentifizierung einsetzen.

Kernel- und Netzwerkschutz

  • sysctl -a | grep net.ipv4
  • Einstellungen in /etc/sysctl.conf oder /etc/sysctl.d/hardening.conf:
net.ipv4.icmp_echo_ignore_broadcasts = 1
net.ipv4.conf.all.accept_redirects = 0
net.ipv4.conf.all.send_redirects = 0
net.ipv4.conf.all.rp_filter = 1
net.ipv4.tcp_syncookies = 1
net.ipv6.conf.all.accept_redirects = 0
  • sysctl -p
  • Redirects, Source Routing und ICMP-Broadcasts deaktivieren.
  • TCP-SYN-Cookies aktivieren schützt vor DoS-SYN-Floods.

Dateisystem-Härtung

  • Separate Partitionen für /boot, /var, /tmp und /home mit restriktiven Mount-Optionen.
/etc/fstab:
/tmp   tmpfs   defaults,noexec,nosuid,nodev   0  0
/var   ext4    defaults,relatime,nodev        0  2
  • Mit „noexec“ wird die Ausführung von Binärdateien in /tmp verhindert.
  • Mit „nosuid“ und „nodev“ werden SUID-Bits und Gerätedateien blockiert.
  • Optional: Dateisysteme mit Integrity-Unterstützung (z. B. dm-verity) nutzen.

Logging und Überwachung

  • journalctl -p 3 -xb
  • journalctl -u ssh
  • ausearch -m USER_LOGIN
  • last
  • Sicherheitsrelevante Logs zentralisieren (z. B. mit rsyslog, syslog-ng oder journald-Forwarding).
  • Regelmäßige Auswertung ist Pflicht, nicht optional.
  • Integritätsprüfungen mit aide oder tripwire regelmäßig durchführen.

Kernelmodule und Laufzeitüberwachung

  • lsmod
  • modprobe -r <modulname>
  • echo "install usb-storage /bin/true" >> /etc/modprobe.d/blacklist.conf
  • Nicht benötigte Kernelmodule deaktivieren oder blockieren.
  • Blacklisting sensibler Module wie FireWire, USB-Speicher, Bluetooth etc.
  • Kernel selbst regelmäßig auf CVEs prüfen:
  • uname -r
  • apt list --upgradable | grep linux-image

SSH-Härtung

  • vi /etc/ssh/sshd_config
PermitRootLogin no
PasswordAuthentication no
PubkeyAuthentication yes
MaxAuthTries 3
LoginGraceTime 30
AllowUsers admin backup
  • systemctl restart ssh
  • Passwortlogin ausschalten, nur Key-Authentifizierung.
  • MaxAuthTries begrenzen, um Brute-Force-Angriffe zu verhindern.

Zeit- und Integritätssicherung

  • apt install ntp -y
  • systemctl enable --now ntp
  • Systemzeit synchron halten (NTP/PTP), da Logs sonst unglaubwürdig werden.
  • Integritätsprüfungen mit aide:
  • aideinit
  • aide --check
  • Änderungen in Systemdateien frühzeitig erkennen.

Boot- und BIOS-Sicherheit

  • Grub mit Passwort schützen:
  • grub-mkpasswd-pbkdf2
  • Eintrag in /etc/grub.d/40_custom:
set superusers="admin"
password_pbkdf2 admin <HASH>
  • update-grub
  • Bootreihenfolge im BIOS sperren, Secure Boot aktivieren.
  • USB-Boot deaktivieren, falls physischer Zugriff möglich.

Firewall-Basisregeln

  • apt install nftables -y
  • systemctl enable --now nftables
  • vi /etc/nftables.conf
table inet filter {
  chain input {
    type filter hook input priority 0;
    policy drop;
    ct state established,related accept
    iif lo accept
    tcp dport {22,443} accept
  }
}
  • systemctl reload nftables
  • Standardregel: Alles blocken, nur explizit benötigte Ports erlauben.

Automatisierung und Compliance

  • Härtungsrichtlinien nach Standards prüfen:
  • CIS Benchmark, BSI Grundschutz, DISA STIG.
  • Tools: Lynis, OpenSCAP, Tiger.
  • lynis audit system
  • oscap xccdf eval --profile xccdf_org.ssgproject.content_profile_standard /usr/share/xml/scap/ssg/content/ssg-debian12-ds.xml
  • Ergebnisse dokumentieren und regelmäßig reviewen.

Quick Checklist

  • Alle ungenutzten Dienste und Ports deaktivieren.
  • SSH-Zugang nur mit Keys, Root-Login sperren.
  • noexec/nosuid/nodev auf /tmp, /var/tmp, /home aktivieren.
  • Regelmäßige Updates einspielen.
  • sudo restriktiv konfigurieren.
  • Integrität (AIDE) regelmäßig prüfen.
  • Firewall aktiv und Logging eingeschaltet.
  • Kernelparameter gemäß Hardening-Guide setzen.
  • Systemhärtung regelmäßig überprüfen und dokumentieren.

Zusammenfassung

  • Systemhärtung ist kein einmaliger Vorgang, sondern ein kontinuierlicher Prozess.
  • Jede installierte Komponente ist potenziell ein Risiko.
  • Durch gezieltes Deaktivieren, Isolieren und Protokollieren lässt sich ein Linux-System effektiv absichern.
  • Ziel: M*