Zum Inhalt springen

Bouxwiller

Der Blog der Stadt

Wichtige Tipps für mehr Sicherheit Ihres Linux-Systems im Alltag

Ein frisch installiertes Linux-System ist nicht automatisch sicher. Gängige Distributionen werden mit Konfigurationen ausgeliefert, die auf schnelle Inbetriebnahme ausgelegt sind, nicht auf Widerstandsfähigkeit …

Ingénieur Linux concentré tapant des commandes de sécurité dans un terminal sur un bureau moderne à domicile

Ein frisch installiertes Linux-System ist noch kein sicheres System. Mainstream-Distributionen werden mit Konfigurationen ausgeliefert, die auf einen schnellen Betrieb ausgelegt sind – nicht darauf, einem Einbruchsversuch standzuhalten. Um die Sicherheit Ihres Linux-Systems im Alltag zu erhöhen, genügen einige gezielte Maßnahmen, die regelmäßig wiederholt werden. So lässt sich die Angriffsfläche verkleinern, ohne Ihren Rechner in eine unbenutzbare Festung zu verwandeln.

systemd-Sandboxing: Jeden Linux-Dienst einzeln isolieren

Die meisten Linux-Sicherheitsratgeber befassen sich mit Benutzerkonten und Dateiberechtigungen. Weniger Beachtung findet die Isolierung der Dienste selbst. Ein Webserver oder ein Datenbankverwaltungssystem läuft oft mit deutlich mehr Rechten, als er benötigt.

Ist Ihnen schon einmal aufgefallen, dass ein kompromittierter Dienst Dateien lesen kann, die mit seiner Funktion nichts zu tun haben? Genau hier setzt systemd-Sandboxing an. Drei Direktiven machen den Unterschied:

  • ProtectSystem=strict bindet das Root-Dateisystem für den betreffenden Dienst schreibgeschützt ein. Dadurch werden Änderungen außerhalb ausdrücklich freigegebener Verzeichnisse verhindert.
  • PrivateTmp=true weist dem Dienst ein isoliertes temporäres Verzeichnis zu, das für andere Prozesse nicht sichtbar ist. Ein Angreifer, der auf das /tmp-Verzeichnis des Dienstes zugreift, kann nicht das des Systems einsehen.
  • NoNewPrivileges=true verhindert nach dem Start des Dienstes jede weitere Rechteausweitung – selbst wenn sich eine setuid-Binärdatei im Ausführungspfad befindet.

Diese Optionen werden im Unit-File des Dienstes im Abschnitt [Service] konfiguriert. Starten Sie den Dienst nach jeder Änderung neu und prüfen Sie anschließend, ob er weiterhin ordnungsgemäß funktioniert. Eine zu restriktive Direktive kann den legitimen Zugriff auf einen Socket oder eine Konfigurationsdatei verhindern.

Wer sich näher mit diesem Ansatz und weiteren Härtungsmethoden befassen möchte, findet in den Sicherheitstipps von Hebdo Linux mehrere Szenarien für Arbeitsplatzrechner und Server.

Cybersicherheitsexpertin prüft in einem Großraumbüro eine Checkliste zur Linux-Härtung

Den tatsächlichen Status von SELinux und AppArmor auf Ihrem System prüfen

Dass SELinux oder AppArmor installiert ist, bedeutet nicht automatisch, dass diese Mechanismen irgendetwas schützen. Warum wird dieser Punkt so oft übersehen? Weil ein Sicherheitsmodul im Kernel ein falsches Gefühl von Sicherheit vermittelt.

Ein inaktives Sicherheitsmodul schützt keinen einzigen Prozess. Bei einer Distribution wie Ubuntu ist AppArmor standardmäßig vorhanden, aber nicht alle Profile laufen im Modus „enforce“. Einige befinden sich im Modus „complain“ und protokollieren Verstöße lediglich, statt sie zu blockieren.

Konkrete Prüfkommandos

Für AppArmor zeigt der Befehl aa-status die Liste der geladenen Profile und ihren jeweiligen Modus an. Jedes Profil im Modus „complain“ ist ein offenes Einfallstor. Bei SELinux gibt sestatus an, ob der Modus auf „enforcing“, „permissive“ oder „disabled“ steht.

Diese Statusprüfungen gehören zu den sinnvollen täglichen Kontrollen. Ein per Cron oder systemd-Timer gestartetes Skript kann eine Warnung ausgeben, wenn der Modus nach einem Neustart oder einer Kernel-Aktualisierung auf „permissive“ wechselt. Solche unbemerkten Rückschritte treten bei Versions-Upgrades häufig auf.

Linux-Sicherheitsupdates: Prüfen, ob die Aktualisierung tatsächlich aktiv ist

Ein Sicherheitsupdate zu installieren, reicht nicht aus. Nach einer Kernel-Aktualisierung kann Ihr Rechner weiterhin mit dem alten Kernel laufen, bis er neu gestartet wird. Die Paketverwaltung meldet zwar „aktuell“, doch das System bleibt verwundbar.

Prüfen Sie nach jedem kritischen Update, welcher Kernel aktiv ist. Der Befehl uname -r zeigt die Version des aktuell laufenden Kernels an. Vergleichen Sie sie mit der neuesten installierten Version, die Sie in Ihrer Paketverwaltung finden. Weichen die beiden voneinander ab, ist ein Neustart erforderlich.

Updates auf einem Produktionsserver verwalten

Auf einem Server ist ein sofortiger Neustart nicht immer möglich. Dokumentieren Sie die Abweichung zwischen dem installierten und dem aktiven Kernel. Einige Distributionen bieten einen „Live-Patching“-Mechanismus, der Kernel-Patches ohne Neustart einspielt. Dieser deckt jedoch nicht alle Arten von Sicherheitslücken ab.

Ein oft übersehener Punkt sind alternative Boot-Einträge. Behält Ihr Bootloader alte Kernel bei, können die behobenen Sicherheitslücken durch einen versehentlichen Neustart mit einem veralteten Eintrag erneut auftreten. Entfernen Sie regelmäßig alte Kernel aus Ihrer Bootliste, sobald Sie die Stabilität des neuen Kernels bestätigt haben.

Nahaufnahme einer mechanischen Tastatur und eines Linux-Sicherheitsskripts in einem Serverraum

Die täglich erreichbare Netzwerkfläche verkleinern

Jeder offene Port ist ein potenzieller Zugangspunkt. Auf einem Linux-Arbeitsplatzrechner können Dienste wie CUPS (Druckfunktion), Avahi (Netzwerkerkennung) oder ein SSH-Server Verbindungen annehmen, ohne dass Sie es bemerken.

Der Befehl ss -tlnp listet alle lauschenden Ports samt zugehörigem Prozess auf. Gehen Sie die Liste durch:

  • Einen nicht benötigten Dienst (zum Beispiel Avahi auf einem Rechner ohne Netzwerkdrucker) deaktivieren Sie mit systemctl disable --now, gefolgt vom Namen des Dienstes.
  • Bei einem über den Standardport (22) erreichbaren SSH-Server sollte die Anmeldung per öffentlichem Schlüssel statt per Passwort erfolgen. Deaktivieren Sie die Passwortauthentifizierung in /etc/ssh/sshd_config mit PasswordAuthentication no.
  • Die Firewall nftables (oder je nach Distribution iptables) sollte eingehenden Datenverkehr standardmäßig ablehnen und nur für tatsächlich benötigte Dienste ausdrücklich Ausnahmen zulassen.

Weniger lauschende Dienste bedeuten eine kleinere Angriffsfläche, die überwacht werden muss. Diese Überprüfung dauert nur wenige Minuten und senkt das Risiko eines Fernzugriffsangriffs erheblich.

Ein Linux-System abzusichern ist keine einmalige Maßnahme. Dienste zu isolieren, aktive Sicherheitsmodule zu prüfen, die tatsächliche Anwendung von Updates zu bestätigen und unnötige Ports zu schließen, ergibt einen kurzen, wiederkehrenden Ablauf. Wird er jede Woche wiederholt, deckt dieser Ablauf die meisten gängigen Angriffsvektoren auf einem Linux-Arbeitsplatzrechner oder -Server ab.

Wichtige Tipps für mehr Sicherheit Ihres Linux-Systems im Alltag