>_ DevTrendsde

Sprache

Start

Sprachen

Bereiche

Frontend Backend Mobile DevOps AI / ML GameDev Blockchain Embedded Sicherheit
Shell

So verhindern Sie, dass Ihr Server zum leichten Ziel wird – mit konstruktoids Hardening-Scripts

Stellen Sie sich vor, Sie haben gerade eine neue Ubuntu-Instanz bereitgestellt. Alles läuft, SSH ist offen, Pakete sind aktualisiert. Sie fühlen sich sicher – bis Sie die Logs überprüfen und endlose Brute-Force-Anmeldeversuche aus der ganzen Welt sehen. Standardmäßige Linux-Distro-Einstellungen priorisieren Bequemlichkeit über Sicherheit, daher erfordert die Härtung eines Systems stundenlanges Anpassen von SSH-Konfigurationen, Konfigurieren von Firewalls und Einschränken von Dienstberechtigungen.

Der Repository-Autor unter dem Handle konstruktoid hat beschlossen, diese Routine zu vereinfachen, und hat Scripts für die automatische Ubuntu-Härtung zusammengestellt. Dies ist nicht nur eine Befehlssammlung – es ist eine gesamte Strategie zur Umwandlung eines normalen OS in eine digitale Festung, mit Steuerung durch systemd als Grundpfeiler.

Was dieses Script genau macht

Die Kernidee des Projekts ist es, die Angriffsoberfläche so weit wie möglich zu minimieren. Wenn ein Dienst nicht benötigt wird, sollte er deaktiviert werden. Wenn ein Dienst läuft, sollte er genau die Berechtigungen haben, die zur Ausführung seiner Aufgabe erforderlich sind.

Das Script prüft das System gegen eine umfassende Liste von Kriterien, von denen viele aus den CIS-Empfehlungen (Center for Internet Security) stammen. Hier sind einige Bereiche, in denen es für Ordnung sorgt:

  • Kernel-Parameter-Konfiguration über sysctl. Dies umfasst das Blockieren der Paketweiterleitung (IP-Forwarding), Spoofing-Schutz und die Einschränkung des Zugriffs auf Kernel-Debugging-Funktionen.
  • Härtung von Dateiberechtigungen auf Systemdateien. Das Script prüft Berechtigungen auf /etc/shadow, /etc/gshadow und anderen kritischen Konfigurationen, sodass normale Benutzer oder kompromittierte Web-Anwendungen sie nicht lesen können.
  • Einschränkung von systemd-Diensten. Dies ist vielleicht der interessanteste Teil. Das Script nutzt moderne systemd-Isolationsfunktionen wie PrivateTmp, NoNewPrivileges und ProtectSystem.
  • Kernel-Modul-Verwaltung. Selten verwendete Protokolle (wie DCCP oder SCTP) und Dateisysteme, die oft zu Sicherheitslücken werden, werden deaktiviert.

Wie es in der Praxis funktioniert

Das Projekt ist in Shell geschrieben, was es transparent für Audits macht. Sie können den Code einfach lesen, bevor Sie ihn ausführen, und genau verstehen, was sich in Ihrem System ändern wird. Um zu beginnen, klonen Sie einfach das Repository und führen Sie das Hauptscript als Root aus.

git clone https://github.com/konstruktoid/hardening.git
cd hardening
sudo bash ubuntu.sh

Übrigens hat der Autor eine separate Version für Debian, aber dieses Repository konzentriert sich spezifisch auf Ubuntu (Versionen 20.04, 22.04 und 24.04). Interessanterweise modifiziert das Script nicht nur Konfigurationen – es installiert auch zusätzliche Sicherheitstools, zum Beispiel auditd für tiefgehendes System-Call-Logging.

Feintuning für Ihre Bedürfnisse

Das Script direkt auf einem Live-Produktionssystem auszuführen, ist ein riskantes Unterfangen. Härtung ist immer ein Kompromiss zwischen Sicherheit und Funktionalität. Wenn Sie die Möglichkeit deaktivieren, bestimmte Kernel-Module zu laden, könnten Docker oder bestimmte Netzwerkhardware nicht mehr funktionieren.

Das Projekt enthält eine Konfigurationsdatei, in der Sie Variablen überschreiben können. Wenn Sie beispielsweise IPv6 unbedingt benötigen (was das Script standardmäßig einzuschränken versucht), können Sie dies in den Einstellungen anpassen. Ich würde empfehlen, das Script zuerst auf einer Test-VM auszuführen, die Ihren Produktions-Technologie-Stack vollständig repliziert.

Warum Sie auf die systemd-Edition achten sollten

Viele ältere Linux-Sicherheitsanleitungen empfehlen immer noch, Dutzende von Dateien in /etc/ zu bearbeiten. Der konstruktoid-Ansatz ist moderner: Er nutzt aktiv die Modularität von systemd. Anstatt die Haupt-Service-Unit-Datei umzuschreiben, werden Drop-in-Dateien erstellt. Dies ermöglicht das Aktualisieren von Paketen über apt ohne Konfigurationskonflikte, während Ihre Sicherheitsanpassungen weiterhin wirksam bleiben.

Das Script prüft auch auf kompromittierte Pakete und schlägt vor, Software zu entfernen, die oft zu einer Sicherheitslücke wird, wie alte Implementierungen von rsh oder telnet.

Wem dieses Projekt nützen wird

Wenn Sie ein paar Server für persönliche Projekte verwalten, wird dieses Repository zu einer großartigen Checkliste. Sie müssen nicht das gesamte Script ausführen – Sie können gute Lösungen für die Konfiguration von ufw oder sysctl-Parametern übernehmen.

Für Systemadministratoren in Unternehmen ist dies eine fertige Grundlage für die Erstellung Ihres eigenen Corporate Golden Image. Anstatt das Rad neu zu erfinden, können Sie konstruktoids Arbeit nehmen und an Ihre Compliance-Anforderungen anpassen.

Denken Sie jedoch daran: Sicherheit ist ein Prozess. Das Ausführen des Scripts heute garantiert keinen Schutz gegen eine Sicherheitslücke, die morgen auftaucht. Aber es erhöht die Hürde für einen potenziellen Angreifer definitiv so hoch, dass er mit ziemlicher Sicherheit nach einfacherer Beute suchen wird.

Wo Sie mit dem Lernen beginnen

  1. Werfen Sie einen Blick auf die ubuntu.sh-Datei. Dies ist der Einstiegspunkt, von dem aus die anderen Module aufgerufen werden.
  2. Erkunden Sie den scripts/-Ordner. Die Logik ist nach Kategorien aufgeteilt: Netzwerk, Dateisystem, Berechtigungen.
  3. Lesen Sie unbedingt den Abschnitt über Umgebungsvariablen im README, um zu verstehen, wie Sie das Verhalten des Scripts steuern können, ohne seinen Code zu bearbeiten.

Das Projekt ist lebendig und wird regelmäßig für neue Ubuntu-Versionen aktualisiert und integriert die neuesten Sicherheitsempfehlungen. Dies ist ein großartiges Beispiel dafür, wie Automatisierung stundenlange Routinearbeit in eine Aufgabe verwandelt, die Minuten dauert.

Ähnliche Projekte