Skip to main content

Debian 8 Jessie – 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 Key erzeugen

Zum Austausch von Schlüsseln nutzt Nginx Standardmäßig nur einen 1024 Bit Key. Dies wollen wir auf 2048 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).

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.

Inhalt:
gelbe Zeilen müssen angepasst werden !

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 2048Bit

 

 

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.

2 Gedanken zu „Debian 8 Jessie – Nginx Server konfigurieren und absichern

  1. Bei der Darstellung deiner Config wurden die letzten Zeichen der Zeile mit

    ssl_ciphers abgeschnitten. Am Ende sieht es so aus:

    ssl_ciphers ‚ECDHE-ECDSA-A [….] SHA256:EC$

    Die vollständige Zeile müsste lauten:

    ssl_ciphers ‚ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-SHA384:ECDHE-RSA-AES256-SHA384:ECDHE-ECDSA-AES128-SHA256:ECDHE-RSA-AES128-SHA256‘;

    Der Fehler sorgt dafür das sich der Dienst nginx sich nicht restarten lässt.

Schreibe einen Kommentar

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