Checkliste für die Härtung von Linux-Servern

15 Min. Lesezeit - 8. Mai 2026

hero section cover
Inhaltsverzeichnis
  • Checkliste zur Absicherung von Linux-Servern
  • SSH absichern
  • Konfigurieren Sie Firewalls und Fail2Ban
  • Patches und automatische Updates
  • Dateisysteme und Berechtigungen absichern
  • Aktivieren Sie obligatorische Zugriffskontrollen
  • Einrichtung von Audit-Protokollierung und Überwachung
  • Laufende Wartung
Teilen

Schritt-für-Schritt-Checkliste zur Absicherung eines Linux-Servers. Behandelt SSH, Firewalls, Patching, Dateizugriffsrechte, SELinux/AppArmor und Audit-Protokollierung

Checkliste zur Absicherung von Linux-Servern

Eine Standard-Linux-Installation ist keine sichere Linux-Installation. Fehlkonfigurationen wie offener Root-SSH-Zugriff, schwache Firewalls und nicht gepatchte Software sind für die meisten Sicherheitsverletzungen verantwortlich. Neue Server werden innerhalb von Minuten nach ihrer Inbetriebnahme automatisierten Scans ausgesetzt, daher sollte die Absicherung vor allem anderen erfolgen.

Diese Checkliste umfasst die wichtigsten Schritte: Absicherung von SSH, Konfiguration von Firewalls, Installation von Patches, Verschärfung der Dateiberechtigungen, Aktivierung von obligatorischen Zugriffskontrollen und Einrichtung der Audit-Protokollierung.

SSH absichern

SSH ist Ihr primärer Zugangspunkt und das Erste, was Angreifer ausloten. Die Standardkonfiguration (Passwortauthentifizierung, Root-Login, Port 22) ist genau das, wonach automatisierte Scanner suchen.

Generieren Sie ein Ed25519-Schlüsselpaar, das mehr Sicherheit und Leistung bietet als RSA:

ssh-keygen -t ed25519

Sobald die schlüsselbasierte Anmeldung funktioniert, aktualisieren Sie /etc/ssh/sshd_config:

PasswordAuthentication no
ChallengeResponseAuthentication no
PubkeyAuthentication yes
PermitRootLogin no
AllowUsers yourname
MaxAuthTries 3
ClientAliveInterval 300
ClientAliveCountMax 2

Ändern Sie den Standardport von 22 auf einen weniger offensichtlichen Wert. Dies wird einen entschlossenen Angreifer nicht aufhalten, reduziert aber die Flut automatisierter Scans erheblich.

Testen Sie Änderungen immer von einem zweiten Terminal aus, bevor Sie Ihre aktuelle Sitzung schließen. Führen Sie sudo sshd -t aus, um auf Syntaxfehler zu prüfen, und dann systemctl reload sshd um die Änderungen zu übernehmen, ohne aktive Verbindungen zu unterbrechen.

Fügen Sie die Zwei-Faktor-Authentifizierung hinzu

2FA bedeutet, dass ein Angreifer sowohl Ihren SSH-Schlüssel als auch physischen Zugriff auf Ihr Gerät benötigt. Installieren Sie das Google Authenticator PAM-Modul:

sudo apt install libpam-google-authenticator   # Debian/Ubuntu
sudo dnf install google-authenticator           # RHEL/Fedora

Führen Sie google-authenticator für jeden Benutzer aus, um einen geheimen Schlüssel und Wiederherstellungscodes zu generieren. Speichern Sie die Wiederherstellungscodes offline.

Fügen Sie diese Zeile zu /etc/pam.d/sshd:

auth required pam_google_authenticator.so

Aktualisieren Sie anschließend /etc/ssh/sshd_config:

KbdInteractiveAuthentication yes
UsePAM yes
AuthenticationMethods publickey,keyboard-interactive

Halten Sie während des Tests eine aktive Sitzung offen. TOTP-Codes sind von der genauen Systemzeit abhängig, stellen Sie daher sicher, dass NTP läuft.

Konfigurieren Sie Firewalls und Fail2Ban

Betreiben Sie eine hostbasierte Firewall, auch wenn sich Ihr Server hinter einer Netzwerk-Firewall befindet. Das Prinzip ist einfach: Blockieren Sie standardmäßig den gesamten eingehenden Datenverkehr und lassen Sie dann nur das zu, was Sie benötigen.

Für Ubuntu/Debian (UFW):

ufw default deny incoming
ufw default allow outgoing
ufw limit ssh
ufw enable

Für RHEL/Rocky/AlmaLinux (Firewalld):

firewall-cmd --set-default-zone=public
firewall-cmd --permanent --add-service=ssh
firewall-cmd --permanent --add-service=https
firewall-cmd --reload

Sichern Sie den Kernel-Netzwerkstack, indem Sie Folgendes zu /etc/sysctl.conf:

net.ipv4.tcp_syncookies = 1
net.ipv4.conf.all.accept_source_route = 0
net.ipv4.icmp_echo_ignore_broadcasts = 1

Installieren Sie Fail2Ban

Fail2Ban überwacht Anmeldeversuche und sperrt IP-Adressen nach wiederholten Fehlversuchen. Erstellen Sie /etc/fail2ban/jail.local (nicht direkt bearbeiten jail.conf direkt, da Aktualisierungen die Datei überschreiben) und konfigurieren Sie es so, dass IP-Adressen nach drei fehlgeschlagenen Versuchen innerhalb von 10 Minuten für eine Stunde gesperrt werden. Legen Sie das richtige Backend für Ihre Firewall fest (banaction = ufw oder banaction = nftables).

Audit-Dienste und Entfernen veralteter Protokolle

Überprüfen Sie mit ss -tlnp und was läuft mit systemctl list-units --type=service --state=running. Deaktivieren Sie alles, was Sie nicht benötigen: Bluetooth, CUPS, avahi-daemon, rpcbind.

Entfernen Sie veraltete Protokolle, die Daten im Klartext übertragen:

Veraltetes ProtokollPort(s)Sichere Alternative
Telnet23SSH
RSH / Rlogin512, 513, 514SSH
FTP21SFTP / FTPS
TFTP69SFTP / SCP
NISVariabelLDAP / Kerberos

Unter Debian/Ubuntu: sudo apt-get --purge remove xinetd nis tftpd telnetd rsh-server. Auf RHEL-basierten Systemen: yum erase xinetd ypserv tftp-server telnet-server rsh-server. Überprüfen Sie die Entfernung mit ss -tulpn.

Patches und automatische Updates

Die Aktualisierung Ihres Systems ist der schnellste Weg, bekannte Sicherheitslücken zu schließen. Führen Sie Updates unmittelbar nach der Bereitstellung durch:

apt update && apt upgrade -y      # Debian/Ubuntu
dnf update -y                      # RHEL/Rocky

Automatisieren Sie anschließend Sicherheitspatches. Installieren Sie unter Debian/Ubuntu unattended-upgrades und konfigurieren Sie es so, dass nur Sicherheitspatches angewendet werden. Unter RHEL/Rocky installieren Sie dnf-automatic und setzen Sie upgrade_type = security in /etc/dnf/automatic.conf.

Richten Sie E-Mail-Benachrichtigungen für die Ergebnisse der Updates ein. Deaktivieren Sie automatische Neustarts auf Produktionsservern (Automatic-Reboot = false), damit Neustarts während geplanter Wartungsfenster erfolgen. Für Umgebungen mit hoher Verfügbarkeit sollten Sie Live-Patching mit Canonical Livepatch (Ubuntu) oder kpatch (RHEL) in Betracht ziehen.

Dateisysteme und Berechtigungen absichern

Überprüfen Sie zunächst SUID- und SGID-Binärdateien. Diese Dateien werden mit erhöhten Berechtigungen ausgeführt und sind bevorzugte Ziele für Angriffe:

find / -xdev \( -perm -4000 -o -perm -2000 \) -type f -ls

Verschärfen Sie die Berechtigungen für kritische Dateien: /etc/shadow sollten 600, /etc/passwd sollten 644, /etc/ssh/sshd_config sollte 600. Setzen Sie eine globale umask von 027 in /etc/profile , um zu verhindern, dass neue Dateien für alle lesbar sind.

Suchen und korrigieren Sie für alle lesbare Dateien mit find / -xdev -type f -perm -0002 -ls. Wenden Sie bei Verzeichnissen, die für alle lesbar bleiben müssen (wie /tmp), wenden Sie das Sticky-Bit an: chmod 1777 /tmp.

Optionen für sicheres Mounten

Bearbeiten /etc/fstab bearbeiten, um die Aktivitäten auf kritischen Partitionen einzuschränken:

PartitionEinhängungsoptionenZweck
/tmpnodev, nosuid, noexecVerhindert die Ausführung von Malware in einem weltweit beschreibbaren Bereich
/var/tmpnodev, nosuid, noexecGleiche Schutzmaßnahmen wie bei /tmp
/dev/shmnodev, nosuid, noexecSichert den gemeinsamen Speicher
/homenodev, nosuidBlockiert setuid-Binärdateien und Geräteknoten
/var/lognodev, nosuid, noexecSchützt die Integrität von Protokollen

Testen Sie Änderungen mit mount -o remount vor dem Neustart, um Probleme beim Booten zu vermeiden.

Aktivieren Sie obligatorische Zugriffskontrollen

SELinux und AppArmor fügen auf Kernel-Ebene Einschränkungen hinzu, was Prozesse tun dürfen. Verwenden Sie das, was Ihre Distribution mitliefert: SELinux für RHEL/CentOS/Fedora, AppArmor für Ubuntu/Debian/SUSE. Ein Wechsel zwischen den beiden führt zu Kompatibilitätsproblemen.

SELinux: Überprüfen Sie den Status mit getenforce. Starten Sie im permissiven Modus (setenforce 0) für mindestens zwei Wochen, um das Verhalten der Workloads zu erfassen, ohne etwas zu beschädigen. Überwachen Sie Verstöße mit ausearch -m avc -ts recent. Verwenden Sie audit2why , um Blockierungen zu diagnostizieren, und audit2allow -M [module_name] zum Erstellen von Policy-Modulen. Sobald die Protokolle sauber sind, wechseln Sie mit setenforce 1, und machen Sie dies dann in /etc/selinux/config.

AppArmor dauerhaft zu machen: Überprüfen Sie aktive Profile mit aa-status. Installieren Sie apparmor-utils für Verwaltungsbefehle. Starten Sie Profile im Warnmodus mit aa-complain, wechseln Sie dann in den Durchsetzungsmodus mit aa-enforce , sobald Sie sicher sind. Verwenden Sie aa-genprof , um Profile für benutzerdefinierte Anwendungen zu erstellen.

Einrichtung von Audit-Protokollierung und Überwachung

Ohne Protokollierung hinterlassen Vorfälle keine Spuren. Installieren auditd:

sudo apt-get install auditd audispd-plugins

Fügen Sie Dateisystemüberwachungen für kritische Dateien hinzu:

-w /etc/passwd -p wa -k identity
-w /etc/shadow -p wa -k identity

Verfolgen Sie die Ausführung aller Befehle auf Root-Ebene:

-a always,exit -F arch=b64 -S execve -F euid=0 -k root_commands

Laden Sie Regeln mit augenrules --load und fügen Sie -e 2 am Ende Ihrer Regeldatei hinzu, um die Konfiguration manipulationssicher zu machen (Änderungen erfordern einen Neustart).

Überwachung der Dateiintegrität mit AIDE

AIDE erkennt unbefugte Dateiänderungen, indem es den aktuellen Zustand mit einer als fehlerfrei bekannten Basislinie vergleicht. Installieren Sie das Programm, initialisieren Sie die Datenbank mit aideinitund verschieben Sie die resultierende Datei nach /var/lib/aide/aide.db.gz. Richten Sie einen täglichen Cron-Job ein, um aide --check und die Ergebnisse per E-Mail an Administratoren zu senden.

Zentralisieren Sie Protokolle

Lokale Protokolle sind nutzlos, wenn ein Angreifer mit Root-Zugriff sie löscht. Leiten Sie Protokolle in Echtzeit mithilfe von rsyslog mit TLS-Verschlüsselung an einen Remote-Server weiter. Fügen Sie hinzu /etc/rsyslog.conf:

*.* @@remote-host:514

Set LogLevel VERBOSE in Ihrer SSH-Konfiguration hinzu, damit die Protokolle die Schlüssel-Fingerabdrücke für jede erfolgreiche Anmeldung enthalten. Für Produktionsumgebungen mit mehreren Servern bieten Tools wie Wazuh oder OSSEC eine hostbasierte Intrusion Detection mit zentraler Protokollanalyse.

Laufende Wartung

Hardening ist keine einmalige Aufgabe. Konfigurationen verschieben sich, neue Schwachstellen treten auf und Personalwechsel hinterlassen verwaisten Konten.

Wöchentlich: Überprüfen Sie die Fail2Ban-Protokolle, suchen Sie nach fehlgeschlagenen Updates und verifizieren Sie Backups.

Monatlich: Benutzerkonten und Berechtigungen prüfen, laufende Dienste überprüfen, einen vollständigen Scan mit Lynis oder OpenSCAP durchführen.

Vierteljährlich: Anmeldedaten rotieren, Firewall-Regeln aktualisieren, Disaster Recovery testen.

Verwenden Sie Infrastructure-as-Code-Tools wie Ansible mit den Härtungsrollen von dev-sec.io, um konsistente Konfigurationen in Ihrer gesamten Infrastruktur durchzusetzen und Abweichungen zwischen den Audits zu verhindern.

Die dedizierten Server von FDC bieten Ihnen vollen Root-Zugriff und vollständige Kontrolle über Ihren Security-Stack. Entdecken Sie die Optionen für dedizierte Server, um auf einer Plattform aufzubauen, auf der Sie jede Ebene kontrollieren.

background image
Bremst Ihr Server Ihr Wachstum?

Haben Sie genug von langsamen Bereitstellungen oder Bandbreitenbeschränkungen? FDC Servers bietet sofortige dedizierte Leistung, globale Reichweite und flexible Pläne, die für jede Größenordnung geeignet sind.

Jetzt aktualisieren

Blog

Diese Woche im Blickpunkt

Weitere Artikel
Warum es wichtig ist, einen leistungsstarken und ungemessenen VPS zu haben

Warum es wichtig ist, einen leistungsstarken und ungemessenen VPS zu haben

Ein ungemessener VPS bietet eine pauschale Bandbreite mit einer festen Portgeschwindigkeit. Wie er sich von gebührenpflichtigen Tarifen unterscheidet, wann er sich lohnt und worauf Sie vor dem Kauf achten sollten.

7 Min. Lesezeit - 9. Mai 2025

Linux-Speicherverwaltung: Swap, OOM Killer & Cgroups

12 Min. Lesezeit - 31. Mai 2026

Weitere Artikel
background image

Haben Sie Fragen oder benötigen Sie eine individuelle Lösung?

icon

Flexible Optionen

icon

Globale Reichweite

icon

Sofortige Bereitstellung

icon

Flexible Optionen

icon

Globale Reichweite

icon

Sofortige Bereitstellung