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.

Christian

Christian

Ich studiere derzeit Informatik und betreibe in meiner Freizeit diesen Blog.
Auf die Idee kam ich, als ich Anleitungen zum Thema Debian gesucht habe. Leider waren viele Anleitungen veraltet und daher nutzlos.

Da kam ich auf die Idee selbst Anleitungen zu schreiben.
Wenn meine Anleitungen auch veraltet sein sollten, dann schreibt mir das bitte und ich versuche sie zu aktualisieren.

Wer mich (finanziell) unterstützen möchte, der kann mir hier gerne etwas spenden 🙂
PayPal
https://paypal.me/goNeuland
BTC
1GHRnh6DvdPE4FFpxGbEQu6m4sgnrjpoxM
ETH
0x53d3005663026F96e7cCCa39D14fA487e1072318

Danke 🙂
Christian

Christian

Ich studiere derzeit Informatik und betreibe in meiner Freizeit diesen Blog. Auf die Idee kam ich, als ich Anleitungen zum Thema Debian gesucht habe. Leider waren viele Anleitungen veraltet und daher nutzlos. Da kam ich auf die Idee selbst Anleitungen zu schreiben. Wenn meine Anleitungen auch veraltet sein sollten, dann schreibt mir das bitte und ich versuche sie zu aktualisieren. Wer mich (finanziell) unterstützen möchte, der kann mir hier gerne etwas spenden :) PayPal https://paypal.me/goNeuland BTC 1GHRnh6DvdPE4FFpxGbEQu6m4sgnrjpoxM ETH 0x53d3005663026F96e7cCCa39D14fA487e1072318 Danke :)

6 thoughts to “Debian 9 Stretch – nginx Server konfigurieren und absichern”

  1. Hallo!

    Danke für den hilfreichen Artikel! Ist es möglich bzw. überhaupt sinnvoll, nur einen DH-Schlüssel für alle Domains auf dem Server zu nutzen oder sollte für jede ein eigener erstellt werden?

    Viele Grüße

    Robin

    1. Ich habe für jeden Server einen eigenen DH-Schlüssel erstellt. Ob es unbedingt notwendig ist kann ich Ihnen so nicht sagen. Aber schaden tut es nichts 😉

  2. Hallo Christian,

    erst einmal Hut ab und Daumen hoch fuer die Dokus. Ich habe nur ’ne kleine Info. Nachdemich die Schritte wie oben nachvollzogen habe bekam ich nach Neustart von nginx eine 403-Fehlermeldung. Das ist passiert, weil in meiner nginx version das index-file in /var/www/html anders heisst, naemlich ‚index.nginx-debian.html;‚ Das betrifft eine Zeile in der ersetzten default-Datei

    index index.html index.htm index.php index.nginx-debian.html;

    nginx-Dienst noch neu starten und dann geht’s.

    Beste Gruesse,
    Konrad

  3. Hi

    geht das alles auch unter Debian 8? Strato bietet leider kein Debian 9 an. Gerade nutze ich Ubuntu aber dort kann ich Certbot nicht installieren, um die Zertifikate herzustellen.

    Danke 🙂

    VG Alex

Schreibe einen Kommentar

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