Allgemein

Webserver Security – Teil 2: Härten des Betriebssystems

Dieser Artikel beschäftigt sich mit dem Härten eines Linux-Betriebssystems.

Wird ein Webserver neu aufgesetzt, so müssen einige grundlegende Konfigurationen durchgeführt werden,
um einen Einbruchsschutz sicherzustellen. Dieser Artikel beschreibt einige besonders wichtige Einstellungen.
Er basiert auf die Verwendung von Debian Linux, kann aber auch auf andere Linux-Betriebssysteme
übertragen werden.

Härten des Betriebssystems

Nachdem sich der vorherige Artikel mit der richtigen Auswahl einer Linux-Distribution beschäftigt hat,
geht dieser Artikel weiter in die Details und optimiert das vorhandene Betriebssystem.

Um das Risiko eines erfolreichen Einbruchs zu reduzieren, ist es erforderlich das Betriebssystem
und dessen verwendeten Pakete zu „härten“. Unter Härten versteht man eine Menge von Methoden, die Sicherheit des Betriebssystems
zu erhöhen. Durch das Härten bleiben nur noch Dienste auf den Server, die für den Betrieb erforderlich sind.

Für Debian gibt es einen sehr umfangreichen Guide im Internet, der sehr gut ist und welcher durchgearbeitet werden sollte:
https://www.debian.org/doc/manuals/securing-debian-howto/#contents

An dieser Stelle folgt die Auflistung einiger wichtigen Grundmaßnahmen

Deaktivierung des ROOT-Logings über SSH

Per Default ist es über Debian möglich, dass sich der root-user per SSH anmeldet. Dadurch entsteht das Risiko,
dass ein Angreifer die volle Kontrolle über das System erlangt, sobald er das Root-Passwort herausfindet.

Erschwerend kommt hinzu, dass viele Botnetze Brute-Force-Angriffe auf den Root-User durchführen.
Wenn man den Root-Login per SSH deaktiviert, hat man hiermit einige Brute-Force-Bots außer Gefecht gesetzt.
Vorsicht! Bei Fehlkonfiguration besteht die Gefahr des Selbstaussperren. Konfigurieren Sie nur dann den sshd wenn Sie sich wirklich sicher sind.

  1. Einrichten eines lokalen Users mit sicherem Kennwort in die Gruppe „sudo“
    adduser myadmin sudo
  2. SSH-Login testen
    als Benutzer ‚myadmin‘ anmelden
    Sudo-Berechtigungen prüfen
    sudo -v
  3. Root-Login verbieten
    Wesentliche Schritte:
    Editieren Sie die Datei /etc/ssh/sshd_config
    und ändern Sie
    PermitRootLogin yes auf
    PermitRootLogin no
  4. Starten sie den sshd neu
    service ssh restart

Deaktivierung aller nicht zwingend erforderlichen Dienste (Telnet, X-Server)

Linux kommt mit einer Vielzahl von aktivierten Netzwerkdiensten. Hier sollte überlegt werden:
Was wird wirklich benötigt, auf was kann als reine Komfortfunktion verzichtet werden?
Abschaltkandidaten sind z.B.

  • Telnet
  • FTP
  • Samba
  • X-Server

Sperrung nicht benötigter Ports

Wichtig ist, die Ports genau zu definieren, über die zugegriffen werden muss. Ein Webserver sollte im Standardsetup über folgende Ports
zugreifbar sein:

  • Port 80 (HTTP)
  • Port 443 (HTTPS)
  • ggf. Port 22 (SSH) – Nur sofern SSH benötigt wird.

Hierzu ist die Firewall „iptables“ und das Persistenzpaket „iptables-persistent“ sehr nützlich.
Eine ausführliche Anleitung findet sich hier https://wiki.debian.org/iptables.

Setzung korrekter Dateiberechtigungen

Webserver laufen standardmäßig mit dem User „www-data“ in der Gruppe „www-data“. Es ist sicherzustellen, dass
alle Dateien unter /var/www (dem Webserver-Root) unter den korrekten Berechtigungen laufen.

chown -R www-data:www-data /var/www
chmod -R 755 /var/www

Fazit und Ausblick

Das Härten des Betriebssystems ist ein wichtiger Aspekt, um es angriffssicher zu machen.
Dieser Artikel erhebt keinen Anspruch auf Vollständigkeit, sondern weist nur auf wichtige Aspekte hin.
Es gibt zahllose zusätzliche Möglichkeiten und sinnvolle Ergänzungen.
Der nächste Artikel „Sinnvolle weitere Tools“ wird weitere Hinweise zur Serversicherheit geben.