zentilia - Fotolia

Höhere Sicherheit: Linux-Server nach der Installation härten

Nach der Installation eines Linux-Servers müssen die Administratoren für entsprechende Sicherheit sorgen. Mit wenigen Schritten machen Sie Angreifern das Leben sehr viel schwerer.

Wir haben Ihnen in bereits erklärt, wie Sie den Kernel eines Ubuntu-Servers über den Canonical Livepatch Service live patchen und System-Updates automatisch einspielen lassen. Außerdem haben wir Ihnen mit kpatch und Ksplice entsprechende Tools für Oracle Linux und Red Hat vorgestellt. Sie müssen dabei den Linux-Server nicht neu starten, was bei produktiven Umgebungen ein großer Vorteil ist. Ein Administrator muss somit nicht dauernd prüfen, ob es neue Security Updates gibt und sie zügig manuell einspielen.

Das erleichtert die Aufgabe eines Administrators. Dennoch muss er sich um die allgemeine Sicherheit eines Servers kümmern. Dazu gehört auch, dass ein Server nach der Installation in Sachen Security gehärtet wird. In diesem Beitrag geben wir Ihnen einige praktische Tipps, wie Sie die Sicherheit nach der Installation eines Linux-Servers verbessern.

Wir beziehen uns speziell auf Ubuntu Server. Die Tipps lassen sich aber auch auf andere Enterprise-Distributionen wie zum Beispiel RHEL (Red Hat Enterprise Linux) oder SLES (SUSE Linux Enterprise Server) übertragen.

Systeme mit Langzeitunterstützung

Kaufen Sie RHEL oder SLES, bekommen Sie sowieso Systeme mit Langzeitunterstützung. Wollen Sie einen Ubuntu Server (Download) produktiv einsetzen, laden Sie auf jeden Fall die LTS-Variante (Long Term Support) herunter. Solche Versionen wartet Canonical ab Veröffentlichung fünf Jahre lang. Ubuntu 16.04 LTS wird bis Juli 2021 unterstützt. Die nächste LTS-Version ist Ubuntu 18.04 und erscheint laut Zeitplan im April 2018.

Wollen Sie neuere Technologien testen, können Sie auch Nicht-LTS-Versionen installieren. Beachten Sie aber, dass sie nur neun Monate lang Aktualisierungen bekommen. Danach gibt es auch keine Sicherheits-Updates mehr.

Installieren Sie nur Services, die Sie auch benutzen

Je mehr Services installiert sind, desto größer ist die potenzielle Angriffsfläche. Das ist ganz klar.

Ubuntu Server wird per Standard ohne grafische Oberfläche installiert. Die meisten Server laufen headless, also ohne Bildschirm oder verrichten ihren Dienst in einer virtuellen Maschine (VM). Belassen Sie das auch dabei. Installieren Sie nicht aus Bequemlichkeit eine grafische Oberfläche, die danach nie wieder genutzt wird.

Installieren Sie auch keine Services, die Sie vielleicht erst in der Zukunft brauchen. Je mehr Software und Services installiert sind und laufen, desto mehr potenzielle Schwachstellen gibt es. Halten Sie Ihren Server so schlank wie möglich.

Packen Sie nicht alle Services auf einen Server

Ein weiterer Sicherheitsgrundsatz ist, nicht nur auf ein Pferd zu setzen. Gerade in der Welt der Virtualisierung können Sie relativ einfach mehrere Serverinstanzen betreiben. Voraussetzung ist natürlich, dass genug Ressourcen zur Verfügung stehen. Virtualisierung ist aber immer noch günstiger als separate Hardware. Manche Services benötigen möglicherweise minimale Ressourcen.

Trennen Sie wichtige Services von öffentlichen Diensten. Sie werden keinen FTP-Server für Datenaustausch mit Kunden auf dem gleichen Server mit ihren wichtigen Datenbanken betreiben wollen. Für die Trennung von Services können Sie auch diverse Container-Technologien in Betracht ziehen. Eine prominente Open-Source-Lösung dafür ist Docker.

Es spielt keine Rolle, für welche Variante Sie sich entscheiden. Legen Sie potenziellen Angreifern auf jeden Fall so viele Steine in den Weg wie möglich. Sollte ein Service kompromittiert werden, dürfen andere nicht gleich auf dem Silbertablett liegen.

Kein SSH für root

Administrator auf einem Linux-System ist bekanntlich root. Da ein Server normalerweise headless läuft, braucht der Administrator Remote-Zugriff. In den allermeisten Fällen administrieren Systemverwalter Linux-Systeme via SSH. Wir gehen davon aus, dass OpenSSH installiert und aktiviert ist:

sudo apt install openssh-server

Das Minimum an Sicherheit an dieser Stelle ist, dass sich root nicht direkt via SSH anmelden darf. Wesentlich sicherer ist es, wenn sich nur bestimmte Anwender am System anmelden können, die Befehle als Systemverwalter ausführen und das System administrieren dürfen.

Erstellen Sie also einen Anwender, der sich später via SSH anmelden darf und der sudo-Rechte erhält. In unserem Beispiel heißt der Anwender sshjuerg:

adduser sshjuerg

usermod -aG sudo sshjuerg

Im Anschluss editieren Sie die Datei /etc/ssh/sshd_config und fügen die nachfolgende Zeile ein:

AllowUsers sshjuerg

Die Zeile kann auch mehrere Anwender enthalten, die durch ein Leerzeichen getrennt sind. Laden Sie die SSH-Konfiguration neu und testen, ob Sie sich mit dem eben angelegten Nutzer via SSH anmelden können. 

sudo service ssh reload

Funktioniert eine Remote-Anmeldung, stellen Sie sicher, dass sich root nicht anmelden darf. Die relevante Zeile in der Konfiguration /etc/ssh/sshd_config sieht so aus:

PermitRootLogin no

Laden Sie die SSH-Konfiguration im Anschluss neu:

sudo service ssh reload

In unserer Konfiguration darf sich root nicht direkt anmelden. Nur Anwender sshjuerg hat die Rechte, sich via SSH anzumelden.
Abbildung 1: In unserer Konfiguration darf sich root nicht direkt anmelden. Nur Anwender sshjuerg hat die Rechte, sich via SSH anzumelden.

Sie können die Sache noch sicherer machen, indem Sie kein Passwort verwenden, sondern ein Public-Private-Schlüsselpaar setzen. In dem Fall würden wir den Anwender sshjuerg auch auf unserem entfernten System verwenden, auf dem OpenSSH Client installiert ist:

sudo apt install openssh-client

Ein Schlüsselpaar erstellen Sie so:

ssh-keygen

Verändern Sie den Standardordner für die Datei id_rsa nicht und lassen das Passwort leer. Im Endeffekt drücken Sie dreimal die Eingabetaste. Danach führen Sie diesen Befehl aus:

ssh-copy-id -i <Remote-Server>

Sie werden nach dem Passwort gefragt, um den Schlüssel kopieren zu können. Im Anschluss können Sie sich via

ssh <Remote-Server>

ohne Eingabe des Passworts anmelden. Wollen Sie eine Anmeldung mit Passwort komplett verbieten und nur eine Authentifizierung via Schlüssel erlauben, muss in der SSH-Konfigurationsdatei folgende Zeile stehen:

PasswordAuthentication no

Danach laden Sie die Konfiguration wie bereits erklärt wieder neu.

Fail2Ban installieren

Fail2Ban ist ein sehr nützlicher Service, der als weitere Schutzschicht auf keinem Linux-Server fehlen sollte. Nach einer gewissen Anzahl an fehlgeschlagenen Anmeldeversuchen sperrt der Service die dazugehörige IP-Adresse für eine Weile. Sogenannte Brute-Force-Angriffe sind damit so gut wie unmöglich. Sie installieren Fail2Ban so:

sudo apt install fail2ban

Mit Fail2Ban können Sie nicht nur SSH-Zugriffe absichern, sondern auch Apache, Postfix und so weiter. Sie konfigurieren dabei sogenannte Jails, die sich um die jeweiligen Services kümmern. Sie finden die Konfiguration unter /etc/fail2ban/. Ein Jail für SSH ist per Standard aktiv, alle anderen müssen Sie manuell konfigurieren. Wie das genau funktioniert, würde den Rahmen des Beitrags sprengen. Sie finden auf der Projektseite weiterführende Informationen zur Konfiguration von Fail2Ban.

Es wird empfohlen, nicht direkt mit der Standardkonfigurationsdatei jail.conf zu arbeiten, sondern die Kopie jail.local zu erstellen und sie zu editieren.

Die Bots schlafen nie, aber Fail2Ban passt auf und verhindert Brute-Force-Angriffe.
Abbildung 2: Die Bots schlafen nie, aber Fail2Ban passt auf und verhindert Brute-Force-Angriffe.

Der Auszug ist aus der Log-Datei. Sie finden sie unter /var/log/fail2ban.log.

Durch die hier genannten sehr einfachen Schritte ist die Sicherheit Ihres Servers um einiges verbessert. Natürlich müssen Sie auch weiterhin ein Auge auf Ihre Server werfen und angemessenes Monitoring betreiben. Ziel ist es aber immer, es den Angreifern so schwer wie möglich zu machen.

Folgen Sie SearchNetworking.de auch auf Twitter, Google+, Xing und Facebook!

Nächste Schritte

Linux-Tools gegen Angreifer im Netzwerk

Linux-Tools für Automatisierung, Monitoring und Backups

Tipps für ein optimiertes Linux-Management

 

Erfahren Sie mehr über Serverbetriebssysteme