Einführung
Das ist ein schöner neuer Linux-Server… es wäre wirklich schade, wenn ihm etwas zustöße. Er mag zwar sofort funktionieren, aber bevor Sie ihn produktiv einsetzen, sollten Sie zehn Schritte durchführen, um die Sicherheit Ihrer Konfiguration zu gewährleisten. Die Details dieser Schritte können je nach Distribution variieren, das Grundprinzip gilt jedoch für alle Linux-Distributionen. Indem Sie diese Schritte auf neuen Servern durchführen, stellen Sie sicher, dass diese zumindest grundlegend vor den häufigsten Cyberangriffen geschützt sind.
1 – Benutzerkonfiguration
Als Erstes sollten Sie, sofern dies nicht bereits in Ihren Betriebssystemeinstellungen erfolgt ist, das Root-Passwort ändern. Das sollte eigentlich selbstverständlich sein, wird aber bei der typischen Serverkonfiguration überraschenderweise oft übersehen. Das Passwort sollte mindestens acht Zeichen lang sein und eine Mischung aus Groß- und Kleinbuchstaben, Zahlen und Sonderzeichen enthalten. Wenn Sie lokale Benutzerkonten verwenden, sollten Sie außerdem eine Passwortrichtlinie einrichten, die Anforderungen an Gültigkeitsdauer, Sperrfrist, Passwortverlauf und Komplexität festlegt. In den meisten Fällen empfiehlt es sich, den Root-Benutzer komplett zu deaktivieren und für Benutzer mit erhöhten Berechtigungen separate Benutzerkonten mit sudo-Zugriff zu erstellen.
2 – Netzwerkkonfiguration
Eine der grundlegendsten Konfigurationen ist die Aktivierung der Netzwerkverbindung durch Zuweisung einer IP-Adresse und eines Hostnamens zum Server. Für die meisten Server empfiehlt sich eine statische IP-Adresse, damit Clients die Ressource immer unter derselben Adresse erreichen können. Bei VLANs sollten Sie die Isolation des Serverbereichs und den optimalen Standort für den Server berücksichtigen. Deaktivieren Sie IPv6, falls Sie es nicht verwenden. Konfigurieren Sie Hostname, Domain und DNS-Serverinformationen. Für Redundanz sollten mindestens zwei DNS-Server eingesetzt werden. Testen Sie anschließend mit nslookup die Namensauflösung.
3 – Paketverwaltung
Sie richten Ihren neuen Server wahrscheinlich für einen bestimmten Zweck ein. Installieren Sie daher alle benötigten Pakete, falls diese nicht bereits in Ihrer Distribution enthalten sind. Dies können beispielsweise Hilfsprogramme wie PHP, MongoDB oder nginx sein, oder Supportpakete wie pear. Entfernen Sie außerdem alle unnötig installierten Pakete, um den Speicherbedarf des Servers zu minimieren. Nutzen Sie hierfür am besten die Paketverwaltung Ihrer Distribution, beispielsweise Yum oder apt, um die Verwaltung später zu vereinfachen.
4 – Installation und Konfiguration aktualisieren
Sobald die benötigten Pakete auf Ihrem Server installiert sind, müssen Sie sicherstellen, dass alles auf dem neuesten Stand ist. Dies betrifft nicht nur die installierten Pakete, sondern auch den Kernel und die Standardpakete. Sofern Sie keine bestimmte Version benötigen, sollten Sie aus Sicherheitsgründen immer die aktuellste Produktionsversion verwenden. Ihr Paketverwaltungsprogramm stellt Ihnen in der Regel die neueste unterstützte Version zur Verfügung. Richten Sie außerdem automatische Updates in Ihrem Paketverwaltungsprogramm ein, falls dies für die auf diesem Server gehosteten Dienste erforderlich ist.
5 – NTP-Konfiguration
Konfigurieren Sie Ihren Server so, dass er seine Zeit mit NTP-Servern synchronisiert. Dies ist möglich, wenn Ihre Umgebung über interne NTP-Server oder externe, öffentlich zugängliche Zeitserver verfügt. Wichtig ist, eine Zeitabweichung zu vermeiden, bei der die Serveruhr von der Echtzeit abweicht. Dies kann zahlreiche Probleme verursachen, insbesondere Authentifizierungsprobleme, da die Zeitabweichung zwischen Server und Authentifizierungsinfrastruktur vor der Zugriffsgewährung gemessen wird. Dies sollte eigentlich ein einfacher Trick sein, doch eine zuverlässige Infrastruktur ist unerlässlich.
6 – Firewall und iptables
Je nach Distribution können die Porttabellen vollständig gesperrt sein und Sie auffordern, die benötigten Ports manuell zu öffnen. Unabhängig von der Standardkonfiguration sollten Sie diese jedoch immer überprüfen und sicherstellen, dass sie Ihren Wünschen entspricht. Beachten Sie stets das Prinzip der minimalen Berechtigungen und öffnen Sie nur die Ports, die für die Dienste auf diesem Server erforderlich sind. Befindet sich Ihr Server hinter einer dedizierten Firewall, blockieren Sie dort alle Verbindungen außer den benötigten. Selbst wenn Ihre iptables/Firewall standardmäßig restriktiv ist, vergessen Sie nicht, die für den Betrieb Ihres Servers notwendigen Ports zu öffnen!
7 – SSH absichern
SSH ist die primäre Methode für den Fernzugriff auf Linux-Distributionen und muss daher angemessen gesichert werden. Sie sollten die SSH-Zugriffsrechte des Root-Benutzers deaktivieren, selbst wenn Sie das Konto deaktiviert haben. So wird verhindert, dass der Server aus irgendeinem Grund weiterhin über SSH angegriffen werden kann. Sie können SSH auch auf bestimmte IP-Bereiche beschränken, wenn Sie eine feste Anzahl von Client-IPs verwenden. Optional können Sie den Standard-SSH-Port ändern, um ihn zu verschleiern. Allerdings lässt sich der neue offene Port durch einen einfachen Scan ermitteln. Schließlich können Sie die Passwortauthentifizierung komplett deaktivieren und stattdessen eine zertifikatbasierte Authentifizierung verwenden, um das Risiko eines SSH-Angriffs weiter zu minimieren.
8 – Daemon-Konfiguration
Sie haben Ihre Pakete bereinigt, aber es ist auch wichtig, die richtigen Programme so einzustellen, dass sie beim Neustart automatisch starten. Schließen Sie alle nicht benötigten Daemons. Ein Schlüsselfaktor für einen sicheren Server ist die Minimierung des Ressourcenverbrauchs, sodass nur die von den Anwendungen benötigten Angriffsflächen zur Verfügung stehen. Anschließend sollten die verbleibenden Dienste bestmöglich abgesichert werden, um Ausfallsicherheit zu gewährleisten.
9 – SELinux und weitere Härtung
Wenn Sie schon einmal eine Red Hat-Distribution verwendet haben, kennen Sie vielleicht SELinux, ein Kernel-Härtungstool, das das System vor verschiedenen Angriffen schützt. SELinux schützt hervorragend vor unberechtigter Nutzung und unberechtigtem Zugriff auf Systemressourcen. Es kann aber auch Anwendungen beeinträchtigen. Testen Sie daher Ihre Konfiguration unbedingt mit aktiviertem SELinux und überprüfen Sie die Protokolle, um sicherzustellen, dass keine legitimen Anwendungen blockiert werden. Darüber hinaus sollten Sie sich über die Härtung von Anwendungen wie MySQL oder Apache informieren, da jede ihre eigenen Best Practices hat.
10 – Anmelden
Abschließend sollten Sie sicherstellen, dass die gewünschte Protokollierungsstufe aktiviert ist und ausreichend Ressourcen dafür vorhanden sind. Da Sie diesen Server ohnehin früher oder später debuggen müssen, empfiehlt es sich, jetzt schon die benötigte Protokollierungsstruktur einzurichten, um Probleme schnell beheben zu können. Die meisten Softwareprogramme bieten konfigurierbare Protokolle. Sie müssen jedoch etwas experimentieren, um das richtige Maß an Informationen zu finden. Es gibt zahlreiche Drittanbieter-Tools für die Protokollierung, die von der Aggregation bis zur Visualisierung alles abdecken. Zunächst sollten Sie jedoch die spezifischen Anforderungen jeder Umgebung analysieren. Anschließend können Sie die passenden Tools auswählen.
Ergebnis
Jeder dieser Schritte kann, insbesondere beim ersten Mal, einige Zeit in Anspruch nehmen. Durch die Einrichtung einer initialen Serverkonfigurationsroutine stellen Sie jedoch sicher, dass neue Maschinen in Ihrer Umgebung ausfallsicher sind. Das Versäumnis, einen dieser Schritte durchzuführen, kann schwerwiegende Folgen haben, falls Ihr Server jemals Ziel eines Angriffs wird. Die Einhaltung dieser Schritte bietet zwar keine absolute Sicherheit – Datenlecks kommen vor –, erschwert es Angreifern aber erheblich, die Sicherheitslücken zu überwinden, und erfordert ein gewisses Maß an Fachwissen.









