Linux Server Hardening – 5 einfache Schritte

Dieser Artikel ist an Leser mit Grundwissen im Bereich der Informatik gedacht. Weiterhin sollen hier nur Hinweise gegeben werden. Die vollständige Einrichtung der Systeme und der Software kann in den entsprechenden Dokumentationen nachgelesen werden.

Unter dem Begriff „Hardening“ versteht man in der IT-Sicherheit die erhöhung der Sicherheit eines Systems durch die Reduzierung der Angriffsoberflächen.

Die folgende Liste ist bei weitem nicht Vollständig, gibt aber einen ersten und schnellen Einblick in das Thema und zeigt einige essenzielle Schritte bei der Einrichtung eines Linux Servers.

1. SSH-Zugang via Public Key und sperren des root Nutzers

In den allermeisten Fällen wird der Server via SSH bedient. Das ist komfortabel und zugleich ein sehr großer Angriffsvektor. Ich habe mir beispielhaft den Auth Log von einem unserer Server angeschaut um zu sehen wie viele Loginversuche es pro Stunde über SSH im Schnitt gibt. Die Anzahl der versuchten Logins schwankt stark, liegt aber im Mittel zwischen 10 und 50 Versuchen.

Diese Versuche werden in der Regel automatisiert ausgeführt. Ein Programm probiert einfach einen Login mit dem Nutzernamen „root“ und ein paar Standardpasswörter auf sämtlichen IP-Adressen auf Port 22 (SSH) aus. Natürlich ist es auch üblich weitere weitverbreitete Nutzer zu testen wie zum Beispiel „git“ oder „admin“ oder „jenkins“.

Aus diesem Grund ist es sehr ratsam sowohl den Login für den root Nutzer (und alle weiteren Nutzer die sich nicht zwingend über SSH verbinden müssen) über SSH zu sperren, als auch die Authentifizierung mit einem Passwort zu verbieten. Anstelle eines Passworts wird zur Authentifizierung ein Public Key genutzt. Jeder nutzer erstellt ein Schlüsselpaar und legt den öffentlichen Teil auf dem Server ab.

2. fail2ban nutzen

Wie eingangs erwähnt gibt es unzählige automatisierte Versuche sich mit dem Server zu verbinden. SSH ist dabei natürlich nur ein Angriffspunkt von vielen. Solche automatisierten Angriffe testen natürlich auch andere übliche Schwachstellen, wie zum Beispiel einen (S)FTP-Server, verschiedene Webanwendungen die der Server bereitstellt wie WordPress, phpmyAdmin und so weiter.

Hier kommt das nützliche Tool „fail2ban“ ins Spiel. Das Tool durchsucht in Echtzeit die diversen Log-Dateien verschiedenster Anwendungen und sperrt nach einer selbst festgelegten Anzahl von Ereignissen im Log die IP-Adresse des Aufrufers. Diese Ereignisse müssen nicht zwingend Authentifizierungsversuche sein – fail2ban kann so konfiguriert werden, dass es auf jede beliebige Logzeile reagieren kann.

3. Nur wirklich notwendige Software installieren

Software die nicht installiert ist kann auch keinen Schaden anrichten. Schlimmer als Software die nicht aktuallisiert wird ist ungenutzte Software, die nicht aktuallisiert wird. Durch sinnlos laufende Software erhöhen wir vollkommen unnötig die Angriffsoberfläche unseres Systems. Es sollte daher nur die Software installiert werden, die auch wirklich genutzt wird und zusätzlich regelmäßig geprüft werden, ob es auf dem System Software gibt, die nicht mehr genutzt wird und daher deinstalliert werden kann.

4. Reverse Proxy & Firewall nutzen

Im Geschäftsleben wird ein Server in den allermeisten Fällen für das Hosting von Software genutzt. Ein einzelner Server dient in der Regel mehreren Projekten als Plattform. Ein häufiger „Fehler“ ist es für jeden Dienst einen Port zu öffnen.

Dienst 1: www.example.com:8080
Dienst 2: www.example.com:8081
Dienst 3: www.example.com:8082

So werden sinnlos Ports geöffnet und die Angriffsoberfläche drastisch erhöht. Es ist daher sinnvoll einen ReverseProxy zu nutzen der Anfragen an verschiedene Dienste über einen einzigen Zugangspunkt bündelt und dann verteilt.

Dienst 1: www.example.com/dienst1
Dienst 2: www.example.com/dienst2
Dienst 3: www.example.com/dienst3

Der ReverseProxy ist dann über den Port 443 erreichbar (HTTPS) und sämtliche Dienste hinter dem Proxy sind aus dem Netz ohne den ReverseProxy nicht erreichbar.

Diese Methode hat den Nachteil, dass der ReverseProxy ein Bottleneck erzeugt. In 99.9% der Fälle ist dies aber nicht relevant und für den Rest der Fälle gibt es Möglichkeiten solch ein Bottleneck zu lösen.

Des weiteren sollte unbedingt die Ubuntu Firewall aktiviert werden.

sudo ufw enable

Ufw ist ein Tool zur Konfiguration der Ubuntu Firewall. Die Firewall sperrt jeden eingehenden und/oder ausgehenden Datenverkehr auf bestimmten Ports. Es sollten natürlich nur die Ports freigegeben werden, die auch in Benutzung sind und dabei gilt wie oben bereits gesagt: Je weniger desto besser.

sudo ufw allow 22 #ssh
sudo ufw allow 443 #https

5. Kernel und Software regelmäßig updaten

Ein Punkt der eigentlich selbstverständlich sein sollte. Es gibt kein sicheres System. Sicherheitslücken wird es immer geben – alte werden geschlossen und neue werden auftauchen. Alte Sicherheitslücken werden aber logischerweise nur in aktuelleren Versionen der Software geschlossen sein. Daher ist es wichtig, seine Systeme IMMER aktuell zu halten.

Mit Tools wie zum Beispiel Prometheus ist es ein Kinderspiel auch eine Vielzahl von Servern zu beobachten und sich unter anderem vor veralteter Software warnen zu lassen.

Lob, Kritik, Anregungen?

Wir freuen uns auf Ihre Meinung


Ältere Posts dieses Autors