Skip to main content

Debian 9 Stretch – nginx Server konfigurieren und absichern

In dieser Anleitung geht es darum, wie ihr euren Nginx Server absichern könnt. Ich habe bereits über den Mozilla SSL Configuration Generator einen Beitrag geschrieben. In diesem Beitrag nehme ich die Mozilla SSL Konfiguration als Grundlage und erweitere diese noch um einige Sicherheitsfeatures.

Um Sicherheit herzustellen wollen wir eine HTTPS Verschlüsselung konfigurieren. Damit dies funktioniert, benötigt ihr ein SSL Zertifikat für eure Domain. Falls ihr dies noch nicht besitzt, dann könnt ihr hier nachlesen, wie es kostenlos und innerhalb weniger Minuten erstellt werden kann.

Diffie Hellman 2048 / 3096 Key erzeugen

Zum Austausch von Schlüsseln nutzt Nginx Standardmäßig nur einen 1024 Bit Key. Dies wollen wir auf 2048 / 3096 Bit erhöhen. Dazu wechseln wir in ein Verzeichnis unser Wahl (in meinem Fall den Ort, wo auch die SSL Zertifikate liegen).

In diesem Verzeichnis führen wir folgenden Befehl aus zum Generieren eines 2048 Keys.

Dies kann je nach Rechenleistung eurer Servers mehrer Minuten dauern (bei mir ca. 5 Minuten).

Alternativ könnt ihr auch einen 3096 Bit Schlüssel generieren. Die benötigte Rechenzeit steigt jedoch deutlich an, bis der Key generiert ist.

nginx Konfiguration anpassen

Nun gehen wir in die Nginx Konfigurationsordner mittels

Dort gibt es bereits eine Datei „default“, die wir nun umbenennen.

Nun erstellen wir eine neue Konfigurationsdatei.

Diese leere Datei öffnen ihr nun und kopiert nachfolgenden Inhalt in die Datei.

Achtung:
gelbe Zeilen müssen angepasst werden !

Wenn ihr noch viele ältere Geräte unterstützen wollt, dann könnt ihr folgende Einstellungen wählen:

Bemerkungen:

Gelbe Zeilen
MÜSSEN ANGEPASST WERDEN !!

HTTP2 Support
nginx unterstützt erst ab Version 1.9.5 HTTP2. Bei früheren Versionen muss die konfiguration folgendermaßen abgeändert werden:

PHP Version
Je nach installierter Version von PHP muss die Konfiguration für die nicht installierte PHP Version gelöscht werden.

Optional: nginx Version ausblenden
Ihr könnt noch die nginx Version ausblenden. Das bedeutet,dass euer Server diese nicht immer mitschickt und so einem Angreifer ermöglicht spezielle Sicherheitslücken für diese Version zu suchen. Hier habe ich erklärt, wie man die Option aktiviert.

nginx Server neu starten

Nun müsst ihr nginx lediglich noch neu starten, damit dieser die Einstellungen übernimmt.

Dies erledigt ihr mittels

Möglicher Fehler:

nginx: [emerg] could not build server_names_hash, you should increase server_names_hash_bucket_size: 32

Wenn ihr diesen Fehler bekommen solltet, dann müsst ihr einen Eintrag abändern. Dazu öffnet ihr folgende Datei:

Dort löscht ihr das „#“ Zeichen vor folgender Zeile:

Fazit

Durch die obige Konfiguration habt ihr jetzt folgendes aktiviert:

  • euer Server alle HTTP Anfragen auf HTTPS umleitet
  • nur die aktuellsten Protokolle TLSv1, TLSv1.1 und TLSv1.2 unterstützt
  • der Server nur sichere Ciphersuites erlaubt
  • Strict-Transport-Security aktiviert
  • X-Frame-Options aktiviert
  • X-XSS-Protection aktiviert
  • X-Content-Type-Options aktiviert
  • OSCP aktiviert
  • Diffie Hellman Key mit 2048 / 3096Bit

 

Die Webseite ssllabs.com biete einen Online-Scanner an, der eure Webseite auf Sicherheitslücken überprüft.

Diesen Test habe ich für den eben installierten Webserver durchgeführt mit folgendem (sehr guten) Ergebnis.

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.