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.
- Einrichten eines lokalen Users mit sicherem Kennwort in die Gruppe „sudo“
adduser myadmin sudo - SSH-Login testen
als Benutzer ‚myadmin‘ anmelden
Sudo-Berechtigungen prüfen
sudo -v - Root-Login verbieten
Wesentliche Schritte:
Editieren Sie die Datei /etc/ssh/sshd_config
und ändern Sie
PermitRootLogin yes auf
PermitRootLogin no - 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.