Wie gefällt Ihnen der Artikel?
1
Wie gefällt Ihnen der Artikel?
1

Die richtige Konfiguration, um den Server abzusichern

Um maximale Freiheit bei der Konfiguration zu genießen, ist das Hosting eines eigenen Servers die optimale Lösung. Eine adäquate Alternative stellen Dedicated Root Server dar, die bei vielen Anbietern gemietet werden können und Zugriff auf das Root-Konto gewähren. Die elementaren Verwaltungsschritte wie Installation, Strukturierung und Instandhaltung des Servers liegen aufgrund dieser Berechtigung allerdings ebenso im Verantwortungsbereich des Mieters, wie es bei einer selbst gehosteten Variante der Fall wäre. Der Anbieter kümmert sich bei einem derartigen Server-Paket in der Regel nur um eine Erstinstallation des Betriebssystems – sofern diese erwünscht ist.

Unabhängig von der gewählten Hosting-Lösung sollte man bei der Gestaltung und Nutzung des Root-Kontos umsichtig und verantwortungsvoll vorgehen. Vor allem das Thema Sicherheit spielt hierbei eine wichtige Rolle: Denn einerseits wirkt sich ein fehlerhaftes Vorgehen im Root-Bereich besonders schwer aus, andererseits lässt sich bei korrekter Vorgehensweise die perfekte Basis für einen stabilen, leistungsstarken und sicheren Server schaffen. Um beispielsweise einen Dedicated Server abzusichern und vor externen Zugriffen zu schützen, ist die obligatorische Passwortänderung nur eine der vielen notwendigen Maßnahmen, mit denen sich die Server-Sicherheit erhöhen lässt.

Minimale Installation und ein sicheres Passwort

Bereits bevor Sie mit den eigentlichen Vorkehrungen beginnen und Ihren Server sicher konfigurieren, können Sie das spätere Sicherheitspotenzial Ihres Webprojekts beeinflussen. Vollkommen unabhängig davon, ob Sie sich für ein Windows- oder ein Linux-System entschieden haben, gilt bei der Installation nämlich folgender Grundsatz: Ein Server sollte nur diejenige Software enthalten, die er zur Erfüllung seiner Aufgaben benötigt. Hintergrund ist, dass jede installierte Anwendung ein potenzielles Sicherheitsrisiko bedeutet und sich auch negativ auf die Performance auswirken kann. Um Angreifern möglichst wenig Angriffsfläche zu bieten, sollten Sie daher lediglich die notwendigen Systemkomponenten installieren bzw. aktivieren und nur auf verifizierte Drittsoftware zurückgreifen.

Im Anschluss an die Installation sollten Sie zuallererst ein Root-Passwort (Linux-Systeme) setzen. Standardmäßig ist hierfür kein Wert definiert und damit auch das Administrator-Konto blockiert, bis Sie eine entsprechende Eingabe machen. In der Regel fordert Sie das jeweilige Betriebssystem nach der Installation automatisch auf, einen Nutzer-Account inklusive Passwort anzulegen, der fortan als Root-Zugang fungiert. Wenn Sie Ihren Server bei einem Provider gemietet und einen bestehenden Root-Log-in erhalten haben, müssen Sie das Passwort ändern. Zu diesem Zweck melden Sie sich entweder via SSH (von einem Linux-System aus) oder PuTTY (von einem Windows-System aus) auf Ihrem Server an und geben den folgenden Befehl in das jeweilige Terminal ein:

passwd

Nachfolgend können Sie Ihr Passwort definieren, das Sie anschließend noch verifizieren müssen. Achten Sie darauf, ein möglichst langes Kennwort zu wählen und dabei nicht nur auf Buchstaben, sondern auch auf Sonderzeichen und Zahlen zurückzugreifen. Zudem ist es empfehlenswert, das Passwort mithilfe eines Passwort-Managers abzuspeichern, um es im Zweifelsfall jederzeit parat zu haben. Versuchen Sie nun, eine Verbindung mit dem neuen Root-Log-in aufzubauen. Funktioniert dies wie gewünscht, können Sie die zu Beginn genutzte SSH-Verbindung wieder trennen.

Tipp

Falls für Ihr System bereits ein Root-Passwort gesetzt wurde, das Sie nicht kennen, können Sie es im Recovery-Modus ändern. Sie starten diesen, indem Sie während des Boot-Prozesses die Shift-Taste gedrückt halten. Über den Menü-Eintrag „root“ starten Sie die „Root“-Eingabeaufforderung, in der Sie automatisch als Administrator operieren und die gewünschte Kennwort-Änderung vornehmen können.

Änderung des SSH-Ports

Für den Server-Zugriff via SSH ist standardmäßig Port 22 vorgesehen, sodass dieser auch automatisch eingetragen ist, wenn Sie Ihr System neu installiert haben. Kriminelle, die auf der Suche nach undichten Systemen sind, werden ihre Angriffsversuche – hauptsächlich automatisierte Log-in-Versuche – folglich vor allem über diesen Port laufen lassen. Indem Sie einfach einen anderen Port für die verschlüsselten Remote-Verbindungen definieren, minimieren Sie das Risiko eines unerwünschten Zugriffs erheblich. Hierfür müssen Sie lediglich die SSH-Konfigurationsdatei sshd_config mit einem beliebigen Text-Editor öffnen. Der Befehl im folgenden Codebeispiel ruft die Datei mit dem Linux-Standard-Editor nano auf:

nano /etc/ssh/sshd_config

Suchen Sie nach der passenden Zeile und ersetzen die Portnummer 22 durch eine Nummer Ihrer Wahl. Behalten Sie dabei jedoch im Hinterkopf, dass es diverse weitere Standard-Ports für andere Dienste gibt (beispielsweise Port 80 für HTTP), die Sie, sofern möglich, aus diesem Grund nicht verwenden sollten. Werfen Sie daher zunächst einen Blick auf die Liste der standardisierten Ports, die von der IANA (Internet Assigned Numbers Authority) geführt wird und auf ihrer offiziellen Homepage einsehbar ist. Alternativ können Sie die Auflistung auch in der Datei /etc/services einsehen.

Hinweis

Bevor die Änderungen in der sshd_config aktiv werden, ist es notwendig den SSH-Dienst neu zu starten. Unter Debian gelingt dies mit dem Befehl „/etc/init.d/ssh restart“. Als Ubuntu-Nutzer starten Sie den Service mithilfe von „service ssh restart“ neu.

SSH-Anmeldung für Root-Nutzer deaktivieren

Um Ihren Server abzusichern, ist es darüber hinaus empfehlenswert, den direkten SSH-Log-in für das Root-Konto zu sperren. Andernfalls könnte ein Angreifer, der in den Besitz des Passworts gelangt ist, mithilfe des Root-Kontos aus der Ferne auf den Server zugreifen. Bevor Sie diese Maßnahme durchführen können, benötigen Sie neben dem Root-Nutzer jedoch mindestens einen weiteren Benutzer-Account, der sich mit dem Server verbinden kann, um anschließend nicht komplett vom System ausgesperrt zu sein. Wenn Sie noch kein entsprechendes Nutzerprofil erstellt haben, legen Sie es mit dem nachfolgenden Befehl an:

useradd -g users -d /home/nutzer1 -m -s /bin/bash nutzer1

Auf diese Weise erzeugen Sie den Benutzer-Account nutzer1, der zusätzlich der Gruppe users hinzugefügt wird (-g). Ferner wird diesem Nutzerprofil das Homeverzeichnis /home/nutzer1 zugeordnet (-d). Als Standard-Shell gibt das Kommando die Bash-Shell (-s /bin/bash) vor. Im Anschluss definieren Sie ein sicheres Kennwort für dieses neue Log-in-Konto:

passwd nutzer1

Testen Sie nun, ob die Anmeldung mit dem erstellten Benutzerkonto funktioniert, und fahren nur im Erfolgsfall mit dem eigentlichen Vorhaben – dem Aussperren des Root-Kontos – fort. Für dieses benötigen Sie erneut die SSH-Konfigurationsdatei sshd_config, die Sie mit dem Editor Ihrer Wahl öffnen. Suchen Sie nach dem Eintrag „PermitRootLogin yes“ und ersetzen diesen durch „PermitRootLogin no“. Nach einem Neustart des SSH-Dienstes via Kommandozeilenbefehl

/etc/init.d/ssh restart (alternativ: service ssh restart)

ist der Remote-Zugriff für den Root-Account nicht mehr möglich. Sie melden sich einfach mit dem bzw. den erstellten Nutzerprofil(en) an und wechseln jederzeit (nach der Anmeldung) mit dem Befehl

su

in den Root-Account, falls Sie diesen noch einmal benötigen. Über die Zeile AllowGroups können Sie in der Konfigurationsdatei außerdem festlegen, welche Nutzer sich via SSH mit dem Server verbinden dürfen. Zu diesem Zweck erstellen Sie einfach eine Gruppe (addgroup) und fügen dieser die gewünschten Nutzer hinzu (adduser). Anschließend ergänzen Sie den gewählten Gruppennamen in der sshd_config (z. B. AllowGroups ssh_nutzer).

Hinweis

Eine komfortable Alternative zur Sperrung des Root-Log-ins ist die Option, die Nutzeranmeldung mit Passwort gänzlich zu verbieten und stattdessen auf Public-Key-Authentifizierung mit SSH-Keys zurückzugreifen.

E-Mail-Benachrichtigung zur Meldung von SSH-Log-ins

Wie auch immer Sie im Detail bei der Absicherung des SSH-Zugangs zu Ihrem Server vorgehen, sollten Sie im Nachhinein unbedingt alle Remote-Aktivitäten im Auge behalten. Auf diese Weise können Sie feststellen, ob Sie den SSH-Service Ihres Servers korrekt abgesichert haben. Gleichzeitig sind Sie durch ein gutes Monitoring der aufgebauten Verbindungen im Fall eines unbefugten Zugriffs frühzeitig gewarnt und in der Lage, entsprechende Gegenmaßnahmen zu ergreifen. Dafür reicht bereits ein einfaches Shell-Skript aus, das automatisch bei jeder erfolgreichen Remote-Anmeldung auf Ihrem Server eine Benachrichtigungs-E-Mail an Ihre Adresse versendet.

Ein entsprechendes Skript (hier: /opt/shell-login.sh), das Sie problemlos selbst erstellen können, muss zu diesem Zweck lediglich folgenden Code beinhalten:

#!/bin/bash

echo "Login auf $(hostname) am $(date +%Y-%m-%d) um $(date +%H:%M)"
echo "Benutzer: $USER"
echo
finger

Anschließend gilt es, in der Datei /etc/profile folgende Zeile hinzuzufügen:

/opt/shell-login.sh | mailx -s "SSH-Log-in auf IHR-HOSTNAME" mailadresse@example.com

Mit diesem Eintrag sorgen Sie dafür, dass das Skript ausgeführt wird und im Fall eines erfolgreichen Log-ins mit der Benachrichtigungsmail an die gewünschte Adresse reagiert. Voraussetzung ist, dass dem Skript das Recht 755 zugewiesen ist, was Sie mit dem nachfolgenden Kommando erreichen:

chmod 755 /opt/shell-login.sh
Hinweis

Wenn ein Nutzer eine SSH-Verbindung mithilfe eines Programms wie WinSCP aufbaut, das keinen vollständigen Log-in durchführt, versendet das hier beschriebene Shell-Skript keine E-Mail!

Sperrung nicht genutzter Ports

Offene Ports stellen im Allgemeinen kein besonderes Sicherheitsrisiko dar. Da sie für die Kommunikation mit den einzelnen Diensten und Anwendungen benötigt werden, ist es sogar zwingend notwendig, dass gewisse Ports standardmäßig freigegeben sind – etwa Port 80 und 443 für HTTP- bzw. HTTPS-Verbindungen oder der von Ihnen gewählte SSH-Port. Wenn Sie eine minimale Systeminstallation realisieren konnten und auf eine geringe Anzahl an Drittanwendungen zurückgreifen, ist die Zahl weiterer benötigter Ports überschaubar. Zum Risiko werden diese offenen Schnittstellen nur dann, wenn die antwortenden Programme Sicherheitslücken aufweisen und sich Kriminelle diesen Umstand zunutze machen. Mit einer steigenden Zahl an Anwendungen wächst dieses Gefahrenpotenzial.

Aus diesem Grund ist es sinnvoll, Ihren Server gegen derartige Angriffe abzusichern, indem Sie sämtliche nicht benötigten offenen Ports blockieren. Nahezu alle gängigen Betriebssysteme haben hierfür mit der Paketfilter-Software iptables das passende Werkzeug bereits standardmäßig installiert. Mithilfe des Tools erstellen Sie feste Regeln zur Regulierung des Datenverkehrs, wobei unter anderem auch die benötigte Definition erwünschter bzw. unerwünschter Ports möglich ist. Eine kleine Einführung in das Filterprogramm inklusive einer Anleitung zur Einrichtung einer rudimentären Firewall für Ihr System finden Sie in unserem Tutorial zu diesem Thema.

Regelmäßige Software-Aktualisierung

Frei von den im vorherigen Abschnitt erwähnten Sicherheitslücken ist generell wohl keine Software. Die ausnutzbaren Fehlprogrammierungen müssen von Cyberkriminellen jedoch zunächst einmal entdeckt werden, bevor sie zum Angriff ausholen können. In der Regel werden bekannt gewordene Schwachstellen aber mithilfe von veröffentlichten Updates innerhalb kürzester Zeit wieder geschlossen. Wenn Sie sich regelmäßig über Aktualisierungen für das Betriebssystem und die installierten Programme informieren und neue Updates zeitnah aufspielen, sorgen Sie diesbezüglich für den bestmöglichen Schutz Ihres Servers. Fast alle Serversysteme ermöglichen darüber hinaus, wichtige Sicherheitsupdates auch automatisch im Hintergrund herunterzuladen und zu installieren.

Wenn Sie beispielsweise einen Windows-Server durch automatische Updates absichern wollen, haben Sie im „Windows Update“-Bereich die Möglichkeit, konkrete Richtlinien für den Aktualisierungsprozess festzulegen. Auf diese Weise konfigurieren Sie, wann und in welcher Regelmäßigkeit nach Updates gesucht werden soll, ob gefundene Aktualisierungen gleich installiert werden sollen und wann das System anschließend einen Neustart durchführen soll. Für Linux-Systeme existieren spezifische Skripte wie apt-listchanges oder apticron, die Sie täglich über neue verfügbare Softwarepakete informieren und diese auch herunterladen. Weitere Skripte wie unattended-upgrades übernehmen dann im Anschluss die automatische Installation.

Hinweis

Stellen Sie sicher, dass Sie auch bei einem automatisierten Update-Prozess den Überblick über erledigte Aktualisierungen behalten. Auf diese Weise können Sie infolge des Update-Vorgangs auftretende Fehler besser nachvollziehen und entsprechend reagieren.

Windows- und Linux-Server gegen Brute-Force-Attacken absichern

Hacker, die sich Zugang zu Ihrem Server bzw. den darauf laufenden Anwendungen verschaffen wollen, haben dafür prinzipiell verschiedene Optionen. Eine der einfachsten und meistgenutzten Angriffsarten ist die sogenannte Brute-Force-Methode. Bei dieser versucht der Angreifer mithilfe eines Tools, das eine Log-in-Möglichkeit nach der anderen ausprobiert, an Passwörter zu gelangen. Je sorgfältiger Sie bei der Vergabe Ihrer Kennwörter waren, desto unwahrscheinlicher ist allerdings, dass diese Methode zum Erfolg führt. Insbesondere, wenn Sie einen Dienst mit Anmeldemechanismus anbieten, müssen Sie jedoch davon ausgehen, dass nicht jeder Nutzer bei der Auswahl so gewissenhaft und vorsichtig vorgeht, wie es von Nöten wäre.

Für einen Schutz gegen derartige Angriffe bedarf es erfreulicherweise keiner komplexen, teuren Software: Da jeder Log-in-Versuch von Ihrem Server registriert, beantwortet und in Log-Dateien aufgezeichnet wird, können einfache Analyse-Tools Abhilfe schaffen. Fail2ban (Linux-/POSIX-Systeme) oder RdpGuard (Windows) überprüfen die relevanten Log-Files, erkennen ungewöhnliches Verhalten und blockieren die IP-Adresse verdächtiger Nutzer. Dabei können Sie individuell einstellen, nach wie vielen Fehlversuchen die Sperre verhängt werden oder wie lange diese gültig sein soll.

Hinweis

Sie können auch noch einen Schritt weiter gehen und eine Zwei-Faktor-Authentifizierung für den Verbindungsaufbau zu Ihrem Server einrichten, um den Log-in zusätzlich abzusichern. Bei diesem Verfahren wird neben der Passworteingabe noch eine weitere Komponente für den Log-in benötigt, die sich im persönlichen Besitz des Nutzers befindet (z. B. Smartphone, Smartcard, TAN-Liste).

Server sicher konfigurieren: Von Beginn an auf Monitoring-Tools setzen

Wenn Sie einen Server absichern wollen, haben die aufgezählten Maßnahmen gegen externe Widrigkeiten zweifelsohne einen großen Stellenwert. Ebenso wichtig ist es jedoch, dafür zu sorgen, dass das Zusammenspiel von Hard- und Software wie gewünscht funktioniert. Dabei handelt es sich keineswegs um eine einmalige Sache, die nach dem erfolgreichen Start Ihrer Serverumgebung beendet ist, sondern um eine langfristige Aufgabe, die Sie niemals aus den Augen verlieren sollten. Bei der hohen Zahl an verschiedenen Systemprozessen ist das natürlich leichter gesagt als getan, weshalb Sie von Beginn an auf Hilfstools zurückgreifen sollten, die sämtliche Vorgänge auf Ihrem Server überwachen und bei auffälligen Vorkommnissen Alarm schlagen.

Ein schlichtes und schnell konfiguriertes Programm dieser Art ist Monit, das bei vielen Linux-Distributionen unkompliziert über die Paketverwaltung installiert werden kann. Die Open-Source-Anwendung (GNU-AGPL-Lizenz) observiert nach dem Start wahlweise Prozesse, Dateien, Clouds, Hosts, Programme oder Skripte. Auch die Systemressourcen – CPU, Arbeitsspeicher und absolute Systemauslastung – lassen sich überwachen. In der Monit-Konfigurationsdatei können Sie Werte bzw. Ereignisse definieren, die zu einer Benachrichtigung per E-Mail führen. Wenn Sie mehr Details benötigen, ist darüber hinaus die Monitoring-Software Nagios zu empfehlen. Sie ist allerdings etwas komplexer, aber in der Core-Version ebenfalls Open-Source und zudem durch diverse Plug-ins erweiterbar. Mithilfe einer virtuellen Maschine ist außerdem die Nutzung auf einer Windows-Plattform möglich.

Vertrauen ist gut, Back-ups sind besser

Mit den empfohlenen Konfigurationsvorschlägen erhöhen Sie die Server-Sicherheit erheblich. Die verschiedenen Einstellungen für den Anmeldevorgang und die Einschränkung des Root-Kontos verleihen Ihrem Server im Zusammenspiel mit stetigen Updates, Monitoring-Tools und der obligatorischen Sicherheitssoftware einen sehr hohen Sicherheitsstandard. Allerdings können auch die beste Konfiguration und eine engagierte Pflege nicht für einen einhundertprozentigen Schutz des Servers sorgen. Programmfehler, Hardwareausfälle oder Eigenverschulden führen leicht dazu, dass im ungünstigsten Fall dennoch Daten verloren gehen. Eine weitere stützende Säule Ihres Sicherheitssystems sollte daher die passende Back-up-Strategie sein, die es Ihnen in einem solchen Fall ermöglicht, die entsprechenden Dateien wiederherzustellen.

An leistungsstarken Tools, die Sie nicht nur beim Anlegen, sondern auch beim Einspielen der Sicherheitskopie unterstützen, mangelt es in jedem Fall nicht: Eine kostenfreie Anwendung, die an dieser Stelle erwähnt werden soll, ist das Synchronisierungs-Programm rsync, das seinen Namen von dem gleichnamigen Protokoll hat und in verschiedenen Varianten für nahezu alle gängigen Plattformen (macOS, Windows, Linux) verfügbar ist. Dieses Tool hält die Kopie Ihrer Serverdaten auf dem aktuellen Stand, indem es sämtliche Veränderungen am Original in Echtzeit übernimmt. Neben dem allgemeinen Back-up des Servers gehört schließlich auch die Sicherung der Datenbank(en) zum Pflichtprogramm.

Hinweis

Für einen möglichst sicheren Back-up-Schutz ist es empfehlenswert, dass sich das Back-up-Verzeichnis auf einem externen Speichermedium (portable Festplatte, ein weiterer Server etc.) und nicht auf dem Server, den Sie absichern wollen, befindet.

Netzwerk Windows Linux Sicherheit