7 Sicherheitsmaßnahmen zum Schutz Ihrer Server

Einführung

Beim Einrichten der Infrastruktur ist es häufig Ihr Hauptanliegen, Ihre Anwendungen zum Laufen zu bringen. Wenn Sie jedoch sicherstellen, dass Ihre Anwendungen ordnungsgemäß funktionieren, ohne die Sicherheitsanforderungen Ihrer Infrastruktur zu erfüllen, kann dies verheerende Folgen haben.

In diesem Handbuch werden einige grundlegende Sicherheitsmaßnahmen erläutert, die am besten vor oder während der Einrichtung Ihrer Anwendungen konfiguriert werden sollten.

SSH-Schlüssel

SSH-Schlüssel sind zwei kryptografische Schlüssel, die zur Authentifizierung bei einem SSH-Server als Alternative zu kennwortbasierten Anmeldungen verwendet werden können. Ein privates und ein öffentliches Schlüsselpaar werden vor der Authentifizierung erstellt. Der private Schlüssel wird vom Benutzer geheim und sicher gehalten, während der öffentliche Schlüssel für jedermann freigegeben werden kann.

SSH Keys diagram

Um die SSH-Schlüsselauthentifizierung zu konfigurieren, müssen Sie den öffentlichen Schlüssel des Benutzers in einem speziellen Verzeichnis auf dem Server ablegen. Wenn der Benutzer eine Verbindung zum Server herstellt, fordert der Server den Nachweis an, dass der Client über den zugeordneten privaten Schlüssel verfügt. Der SSH-Client verwendet den privaten Schlüssel, um auf eine Weise zu antworten, die den Besitz des privaten Schlüssels nachweist. Der Server lässt den Client dann ohne Kennwort eine Verbindung herstellen. Weitere Informationen zur Funktionsweise von SSH-Schlüsseln finden Sie in unserem Artikelhere.

Wie erhöhen sie die Sicherheit?

Mit SSH wird jede Art der Authentifizierung, einschließlich der Kennwortauthentifizierung, vollständig verschlüsselt. Wenn kennwortbasierte Anmeldungen zulässig sind, können böswillige Benutzer wiederholt versuchen, auf den Server zuzugreifen. Mit moderner Rechenleistung ist es möglich, Zugang zu einem Server zu erhalten, indem diese Versuche automatisiert werden und eine Kombination nach der anderen versucht wird, bis das richtige Kennwort gefunden ist.

Durch das Einrichten der SSH-Schlüsselauthentifizierung können Sie die kennwortbasierte Authentifizierung deaktivieren. SSH-Schlüssel haben im Allgemeinen viel mehr Datenbits als ein Kennwort, was bedeutet, dass ein Angreifer erheblich mehr mögliche Kombinationen durchlaufen müsste. Viele SSH-Schlüsselalgorithmen werden von moderner Computerhardware einfach deshalb als nicht knackbar angesehen, weil sie zu viel Zeit benötigen, um mögliche Übereinstimmungen zu durchlaufen.

Wie schwierig ist die Implementierung?

SSH-Schlüssel sind sehr einfach einzurichten und die empfohlene Möglichkeit, sich in einer Linux- oder Unix-Serverumgebung remote anzumelden. Auf Ihrem Computer können zwei SSH-Schlüssel generiert werden, und Sie können den öffentlichen Schlüssel innerhalb weniger Minuten auf Ihre Server übertragen.

Befolgen Siethis guide, um zu erfahren, wie Sie Schlüssel einrichten. Wenn Sie immer noch der Meinung sind, dass Sie eine Kennwortauthentifizierung benötigen, sollten Sie eine Lösung wiefail2ban auf Ihren Servern implementieren, um das Erraten von Kennwörtern einzuschränken.

Firewalls

Eine Firewall ist eine Software (oder Hardware), die steuert, welche Dienste dem Netzwerk ausgesetzt sind. Dies bedeutet, dass der Zugriff auf alle Ports mit Ausnahme der öffentlich zugänglichen Ports gesperrt oder eingeschränkt wird.

Firewall diagram

Auf einem typischen Server werden möglicherweise standardmäßig eine Reihe von Diensten ausgeführt. Diese können in folgende Gruppen eingeteilt werden:

  • Öffentliche Dienste, auf die jeder im Internet zugreifen kann, häufig anonym. Ein gutes Beispiel hierfür ist ein Webserver, der möglicherweise den Zugriff auf Ihre Website ermöglicht.

  • Private Dienste, auf die nur eine ausgewählte Gruppe autorisierter Konten oder von bestimmten Standorten aus zugreifen darf. Ein Beispiel hierfür kann ein Datenbank-Control-Panel sein.

  • Interne Dienste, auf die nur vom Server aus zugegriffen werden darf, ohne den Dienst der Außenwelt auszusetzen. Dies kann beispielsweise eine Datenbank sein, die nur lokale Verbindungen akzeptiert.

Firewalls können sicherstellen, dass der Zugriff auf Ihre Software gemäß den oben genannten Kategorien eingeschränkt ist. Öffentliche Dienste können offen gelassen und für jedermann zugänglich sein, und private Dienste können auf der Grundlage verschiedener Kriterien eingeschränkt werden. Interne Dienste können für die Außenwelt völlig unzugänglich gemacht werden. Für Ports, die nicht verwendet werden, ist der Zugriff in den meisten Konfigurationen vollständig blockiert.

Wie erhöhen sie die Sicherheit?

Firewalls sind ein wesentlicher Bestandteil jeder Serverkonfiguration. Auch wenn Ihre Dienste selbst Sicherheitsfunktionen implementieren oder auf die Schnittstellen beschränkt sind, auf denen sie ausgeführt werden sollen, dient eine Firewall als zusätzliche Schutzschicht.

Eine richtig konfigurierte Firewall schränkt den Zugriff auf alles außer auf die spezifischen Dienste ein, die Sie benötigen, um geöffnet zu bleiben. Das Offenlegen von nur wenigen Softwareteilen verringert die Angriffsfläche Ihres Servers und schränkt die Komponenten ein, die für die Ausnutzung anfällig sind.

Wie schwierig ist die Implementierung?

Es gibt viele Firewalls für Linux-Systeme, von denen einige eine steilere Lernkurve aufweisen als andere. Im Allgemeinen sollte das Einrichten der Firewall jedoch nur einige Minuten dauern und nur während der Ersteinrichtung Ihres Servers oder wenn Sie Änderungen an den Diensten vornehmen, die auf Ihrem Computer angeboten werden.

Eine einfache Wahl istUFW firewall. Andere Optionen sind die Verwendung voniptables oderCSF firewall.

VPNs und private Netzwerke

Private Netzwerke sind Netzwerke, die nur bestimmten Servern oder Benutzern zur Verfügung stehen. Beispielsweise ermöglichen private DigitalOcean-Netzwerkeisolated communication between servers in the same account or team within the same region.
Ein VPN oder ein virtuelles privates Netzwerk ist eine Möglichkeit, sichere Verbindungen zwischen Remotecomputern herzustellen und die Verbindung so darzustellen, als wäre es ein lokales privates Netzwerk. Auf diese Weise können Sie Ihre Dienste wie in einem privaten Netzwerk konfigurieren und Remoteserver über sichere Verbindungen verbinden.

VPN diagram

Wie erhöhen sie die Sicherheit?

In Anbetracht der Wahl zwischen beidem ist es fast immer vorzuziehen, private statt öffentlicher Netzwerke für die interne Kommunikation zu verwenden. Da andere Benutzer im Rechenzentrum auf dasselbe Netzwerk zugreifen können, müssen Sie dennoch zusätzliche Maßnahmen ergreifen, um die Kommunikation zwischen Ihren Servern zu sichern.

Die Verwendung eines VPN ist effektiv eine Möglichkeit, ein privates Netzwerk zuzuordnen, das nur Ihre Server sehen können. Die Kommunikation wird vollständig privat und sicher sein. Andere Anwendungen können so konfiguriert werden, dass der Datenverkehr über die von der VPN-Software bereitgestellte virtuelle Schnittstelle geleitet wird. Auf diese Weise müssen nur Dienste im öffentlichen Netzwerk verfügbar gemacht werden, die von Kunden im öffentlichen Internet genutzt werden können.

Wie schwierig ist die Implementierung?

Die Verwendung privater Netzwerke in einem Datencenter mit dieser Funktion ist so einfach wie das Aktivieren der Schnittstelle während der Erstellung Ihres Servers und das Konfigurieren Ihrer Anwendungen und der Firewall für die Verwendung des privaten Netzwerks. Beachten Sie, dass private Netzwerke im gesamten Rechenzentrum Speicherplatz für andere Server freigeben, die dasselbe Netzwerk verwenden.

Bei VPN ist die Ersteinrichtung etwas aufwändiger, aber die erhöhte Sicherheit lohnt sich für die meisten Anwendungsfälle. Auf jedem Server in einem VPN müssen die gemeinsamen Sicherheits- und Konfigurationsdaten installiert und konfiguriert sein, die zum Herstellen der sicheren Verbindung erforderlich sind. Nachdem das VPN eingerichtet und ausgeführt wurde, müssen die Anwendungen für die Verwendung des VPN-Tunnels konfiguriert werden. Weitere Informationen zum Einrichten eines VPN zur sicheren Verbindung Ihrer Infrastruktur finden Sie in unserenOpenVPN tutorial.

Infrastruktur öffentlicher Schlüssel und SSL / TLS-Verschlüsselung

Public-Key-Infrastruktur (PKI) bezeichnet ein System, das zum Erstellen, Verwalten und Validieren von Zertifikaten zur Identifizierung von Personen und zum Verschlüsseln der Kommunikation entwickelt wurde. SSL- oder TLS-Zertifikate können zur gegenseitigen Authentifizierung verschiedener Entitäten verwendet werden. Nach der Authentifizierung können sie auch zum Aufbau einer verschlüsselten Kommunikation verwendet werden.

SSL diagram

Wie erhöhen sie die Sicherheit?

Durch das Einrichten einer Zertifizierungsstelle und das Verwalten von Zertifikaten für Ihre Server kann jede Entität in Ihrer Infrastruktur die Identität der anderen Mitglieder überprüfen und deren Datenverkehr verschlüsseln. Dies kann Man-in-the-Middle-Angriffe verhindern, bei denen ein Angreifer einen Server in Ihrer Infrastruktur imitiert, um den Datenverkehr abzufangen.

Jeder Server kann so konfiguriert werden, dass er einer zentralen Zertifizierungsstelle vertraut. Danach kann jedem Zertifikat, das die Behörde signiert, implizit vertraut werden. Wenn die Anwendungen und Protokolle, mit denen Sie kommunizieren, die TLS / SSL-Verschlüsselung unterstützen, können Sie Ihr System auf diese Weise verschlüsseln, ohne den Overhead eines VPN-Tunnels (der häufig auch intern SSL verwendet).

Wie schwierig ist die Implementierung?

Das Konfigurieren einer Zertifizierungsstelle und das Einrichten der übrigen Infrastruktur für öffentliche Schlüssel kann einige anfängliche Anstrengungen erfordern. Darüber hinaus kann das Verwalten von Zertifikaten einen zusätzlichen Verwaltungsaufwand verursachen, wenn neue Zertifikate erstellt, signiert oder widerrufen werden müssen.

Für viele Benutzer ist die Implementierung einer umfassenden Infrastruktur mit öffentlichen Schlüsseln sinnvoller, wenn ihre Infrastrukturanforderungen steigen. Das Sichern der Kommunikation zwischen Komponenten mithilfe von VPN ist möglicherweise eine gute Maßnahme, um die Lücke zu schließen, bis Sie einen Punkt erreicht haben, an dem sich die zusätzlichen Verwaltungskosten für die PKI rechnen.

Service-Prüfung

Bisher haben wir einige Technologien besprochen, die Sie implementieren können, um Ihre Sicherheit zu verbessern. Ein großer Teil der Sicherheit besteht jedoch darin, Ihre Systeme zu analysieren, die verfügbaren Angriffsflächen zu verstehen und die Komponenten so gut wie möglich zu sperren.

Bei der Dienstüberwachung wird ermittelt, welche Dienste auf den Servern in Ihrer Infrastruktur ausgeführt werden. Häufig ist das Standardbetriebssystem so konfiguriert, dass bestimmte Dienste beim Start ausgeführt werden. Das Installieren zusätzlicher Software kann manchmal Abhängigkeiten nach sich ziehen, die auch automatisch gestartet werden.

Service auditing diagram

Mithilfe der Dienstüberwachung können Sie feststellen, welche Dienste auf Ihrem System ausgeführt werden, welche Ports für die Kommunikation verwendet werden und welche Protokolle akzeptiert werden. Mithilfe dieser Informationen können Sie Ihre Firewall-Einstellungen konfigurieren.

Wie erhöht es die Sicherheit?

Server starten viele Prozesse für interne Zwecke und zur Behandlung externer Clients. Jede davon stellt eine erweiterte Angriffsfläche für böswillige Benutzer dar. Je mehr Dienste ausgeführt werden, desto größer ist die Wahrscheinlichkeit, dass in Ihrer barrierefreien Software eine Sicherheitsanfälligkeit besteht.

Sobald Sie eine gute Vorstellung davon haben, welche Netzwerkdienste auf Ihrem Computer ausgeführt werden, können Sie mit der Analyse dieser Dienste beginnen. Einige Fragen, die Sie sich für jedes stellen möchten, sind:

  • Sollte dieser Dienst ausgeführt werden?

  • Läuft der Dienst auf Schnittstellen, die nicht benötigt werden? Sollte es an eine einzelne IP gebunden sein?

  • Sind Ihre Firewall-Regeln so strukturiert, dass legitimer Datenverkehr an diesen Dienst weitergeleitet wird?

  • Blockieren Ihre Firewall-Regeln nicht legitimen Datenverkehr?

  • Verfügen Sie über eine Methode zum Empfangen von Sicherheitswarnungen zu Sicherheitslücken für jeden dieser Dienste?

Diese Art der Dienstprüfung sollte bei der Konfiguration eines neuen Servers in Ihrer Infrastruktur Standard sein.

Wie schwierig ist die Implementierung?

Die Durchführung eines Basis-Service-Audits ist unglaublich einfach. Mit dem Befehlnetstatkönnen Sie herausfinden, welche Dienste Ports auf jeder Schnittstelle abhören. Ein einfaches Beispiel, das den Programmnamen, die PID und die Adressen anzeigt, die zum Abhören des TCP- und UDP-Verkehrs verwendet werden, ist:

sudo netstat -plunt

Sie werden eine Ausgabe sehen, die so aussieht:

Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address           Foreign Address         State       PID/Program name
tcp        0      0 0.0.0.0:22              0.0.0.0:*               LISTEN      887/sshd
tcp        0      0 0.0.0.0:80              0.0.0.0:*               LISTEN      919/nginx
tcp6       0      0 :::22                   :::*                    LISTEN      887/sshd
tcp6       0      0 :::80                   :::*                    LISTEN      919/nginx

Die Hauptspalten, auf die Sie achten müssen, sindProto,Local Address undPID/Program name. Wenn die Adresse0.0.0.0 lautet, akzeptiert der Dienst Verbindungen auf allen Schnittstellen.

Dateiprüfungs- und Einbruchsicherungssysteme

Bei der Dateiüberwachung wird das aktuelle System mit einer Aufzeichnung der Dateien und Dateieigenschaften Ihres Systems verglichen, wenn es sich um einen bekanntermaßen fehlerfreien Zustand handelt. Dies wird verwendet, um Änderungen am System zu erkennen, die möglicherweise autorisiert wurden.

File audit diagram

Ein Intrusion Detection System (IDS) ist eine Software, die ein System oder ein Netzwerk auf nicht autorisierte Aktivitäten überwacht. Viele hostbasierte IDS-Implementierungen verwenden die Dateiüberwachung, um zu überprüfen, ob sich das System geändert hat.

Wie erhöhen sie die Sicherheit?

Ähnlich wie bei der obigen Prüfung auf Service-Ebene ist es für Sie sehr hilfreich, Prüfungen auf Dateiebene Ihres Systems durchzuführen, wenn Sie ein sicheres System sicherstellen möchten. Dies kann regelmäßig vom Administrator oder als Teil eines automatisierten Prozesses in einem IDS erfolgen.

Diese Strategien sind nur einige der Möglichkeiten, um absolut sicher zu sein, dass Ihr Dateisystem von keinem Benutzer oder Prozess geändert wurde. Aus vielen Gründen möchten Eindringlinge häufig verborgen bleiben, damit sie den Server über einen längeren Zeitraum hinweg weiter ausnutzen können. Sie können Binärdateien durch kompromittierte Versionen ersetzen. Wenn Sie eine Prüfung des Dateisystems durchführen, werden Sie darüber informiert, ob eine der Dateien geändert wurde, sodass Sie sich auf die Integrität Ihrer Serverumgebung verlassen können.

Wie schwierig ist die Implementierung?

Das Implementieren eines IDS oder das Durchführen von Dateiprüfungen kann ein ziemlich intensiver Prozess sein. Bei der Erstkonfiguration wird das Prüfsystem über nicht standardmäßige Änderungen informiert, die Sie am Server vorgenommen haben, und es werden Pfade definiert, die ausgeschlossen werden sollen, um eine Basislesung zu erstellen.

Es macht auch den täglichen Betrieb komplizierter. Dies verkompliziert die Aktualisierungsvorgänge, da Sie das System vor dem Ausführen von Aktualisierungen erneut überprüfen und dann nach dem Ausführen der Aktualisierung die Baseline neu erstellen müssen, um Änderungen an den Softwareversionen zu erfassen. Sie müssen die Berichte auch an einen anderen Speicherort verschieben, damit ein Angreifer die Überwachung nicht ändern kann, um deren Spuren zu erfassen.

Dies kann zwar die Verwaltungslast erhöhen, aber die Möglichkeit, Ihr System auf eine als funktionierend bekannte Kopie zu überprüfen, ist eine der einzigen Möglichkeiten, um sicherzustellen, dass Dateien nicht ohne Ihr Wissen geändert wurden. Einige gängige Dateiprüfungs- / Intrusion Detection-Systeme sindTripwire undAide.

Isolierte Ausführungsumgebungen

Das Isolieren von Ausführungsumgebungen bezieht sich auf alle Methoden, bei denen einzelne Komponenten in einem eigenen dedizierten Bereich ausgeführt werden.

Isolated environments diagram

Dies kann bedeuten, dass Sie Ihre diskreten Anwendungskomponenten auf ihre eigenen Server verteilen oder sich auf die Konfiguration Ihrer Dienste für den Betrieb inchroot-Umgebungen oder -Containern beziehen. Der Grad der Isolation hängt stark von den Anforderungen Ihrer Anwendung und den Realitäten Ihrer Infrastruktur ab.

Wie erhöhen sie die Sicherheit?

Durch die Isolation Ihrer Prozesse in einzelne Ausführungsumgebungen können Sie eventuell auftretende Sicherheitsprobleme besser eingrenzen. Ähnlich wiebulkheads und Kompartimente dazu beitragen können, Rumpfbrüche in Schiffen einzudämmen, kann die Trennung Ihrer einzelnen Komponenten den Zugriff eines Eindringlings auf andere Teile Ihrer Infrastruktur einschränken.

Wie schwierig ist die Implementierung?

Abhängig von der Art des von Ihnen ausgewählten Containments kann das Isolieren Ihrer Anwendungen relativ einfach sein. Indem Sie Ihre einzelnen Komponenten in Containern verpacken, können Sie schnell ein gewisses Maß an Isolation erzielen. Beachten Sie jedoch, dass Docker die Containerisierung nicht als Sicherheitsmerkmal betrachtet.

Das Einrichten einerchroot-Umgebung für jedes Teil kann ebenfalls ein gewisses Maß an Isolation bieten, dies ist jedoch auch keine narrensichere Isolationsmethode, da es häufig Möglichkeiten gibt, aus einerchroot-Umgebung auszubrechen. Das Verschieben von Komponenten auf dedizierte Maschinen stellt die beste Isolationsstufe dar und ist in vielen Fällen die einfachste, kostet jedoch möglicherweise mehr für die zusätzlichen Maschinen.

Fazit

Die oben beschriebenen Strategien sind nur einige der Verbesserungen, die Sie vornehmen können, um die Sicherheit Ihrer Systeme zu verbessern. Es ist wichtig zu wissen, dass die Wirksamkeit von Sicherheitsmaßnahmen, obwohl es besser spät als nie ist, abnimmt, je länger Sie auf die Implementierung warten. Sicherheit kann kein nachträglicher Gedanke sein und muss von Anfang an zusammen mit den von Ihnen bereitgestellten Diensten und Anwendungen implementiert werden.