Debian Webserver härten gegen Hack-Angriffe

Bevor Services eines Servers über das Internet erreichbar sind, sollten diese abgesichert werden. Mit kleinen Einstellungen können oft gleich eine vielzahl an Angriffen ausgeklammert werden.

In diesem Beitrag möchte ich gezielt auf das Hardening eines Webservers mit den Standardservices eingehen. Die einzelnen Punkte können natürlich auch für andere Einsatzgebiete sinnvoll sein.

SSH Konfiguration optimieren

Benötigt man SSH-Zugriff auf den Server (ungeachtet dessen ob der Dienst auf eine öffentliche Adresse gemappt wurde) verringern folgende Einstellungen das Risiko angegriffen zu werden. Die Optionen werden in folgender Datei angepasst oder hinzugefügt:

Root Login deaktivieren

Automatisierte Attacken richten sich oft gegen den root-User. Ausserdem muss man zweimal mit unterschiedlichen Benutzern authentifizieren, bevor man root-Zugriff hat. Am besten deaktiviert man diesen Zugang.

Leere Passwörter nicht zulassen

Dies schützt vor dem Fernzugriff über einen versehentlich erstellten Benutzer oder ein Benutzer, der automatisch von einem Dienst erstellt wurde.

Listen-Port verändern

Diese Massnahme schützt nur durch Verschleierung. Automatisierte Attacken können damit aber gut abgewendet werden.

Fun-Fact: Port 666 (zwar UDP) ist die offizielle Port-Nummer des FPS Doom.

SSH-Zugriff auf einzelne User/Groups beschränken

Grenzt den SSH-Zugriff auf einzelne Nutzer oder Gruppen ein.

Verbindung trennen nach 3 Fehlversuchen

Nach einer bestimmten Anzahl Fehlversuchen wird die Verbindung getrennt.

Service neustarten

Apache Konfiguration optimieren

Eigener User für Apache

Um einem Angreifer die Eskalation seiner Berechtigungen so schwierig wie möglich zu machen, sollte der User welcher den Apache-Service startet, so wenig Berechtigungen haben wie möglich. Während der Apache installation wird in der Regel ein solcher User erstellt (www-data). Ob Apache korrekt über diesen User gestartet wurde, kann man über folgendem Befehl testen:

Versionsnummer nicht ausgeben

Bei Fehlermeldungen (Bsp. 404 – Not Found) wird unten die Versionsnummer des Webservers angezeigt. Diese kann wie folgt versteckt werden:

Ordnerauflistung standardmässig deaktivieren

Die Ordnerauflistung (bei fehlender Index-Datei) kann per Options-Direktive deaktiviert werden.

Unnötige Module deaktivieren

Module die nicht mehr benötigt werden brauchen unnötig Ressourcen und repräsentieren nur eine grössere Angriffsfläche. Was nicht mehr benötigt wird, sollte deaktiviert werden:

Dieser Befehl listet aktivierte Module auf. Durch Eingabe deren Namen kann man diese deaktivieren.

Dieser Beitrag wird laufend aktualisiert

Notizen für weitere Schritte 🙂

apt-get install fail2ban
change hostname
add user deploy
installed and enabled ufw
ssh private keys, no root login
logwatch
rkhunter
chkrootkit
psad
tripwire