Da der Webserver eine große Angriffsfläche bietet, sollte dieser immer auf dem aktuellen Stand sein und auch keine “unsicheren” Protokolle mehr unterstützen. Im Internet gibt es sehr viele Anleitungen, was man alles Konfigurieren sollte und was nicht. Diese sind jedoch mit der Zeit immer veraltet und manche Anleitungen sind einfach fehlerhaft bzw falsch.
Eine einfache Möglichkeit sich aktuelle Konfigurationen zu generieren ist der Mozilla SSL Configuration Generator. Leider habe ich beim Testen gemerkt, dass Features wie X-Frame-Options, X-XSS-Protection, X-Content-Type-Options und weitere Sachen nicht genutzt werden. Daher ist diese Konfiguration zwar nicht direkt schlecht, aber es gibt bessere. Aber als Grundlage für spätere Optimierungen ist die sehr gut geeignet.
Mozilla SSL Configuration Generator erstellt einfach per Klick Konfigurationen für
- Apache
- Nginx
- Lighttpd
- HAProxy
- AWS Elb
Daneben kann noch aufgewählt werden, die “sicher” die Konfigurationen sein sollen.
Eine verbesserte Sicherheit schließt jedoch oft ältere Geräte aus, da diese keine neuen Protokolle unterstützen. Hier sollte man also einen guten Mittelweg finden.
Um eure Einstellungen zu überprüfen, könnt ihr auf diesen Webseiten eure Webseite testen.
https://observatory.mozilla.org/
Beispiel Konfiguration von nginx
Ihr müsst euch die von Mozilla erstellte Konfiguration in folgende Datei kopieren.
nano /etc/nginx/sites-available/default
Bei der Mozilla Konfiguration wird noch ein Diffie-Hellman Key verwendet. Diesen generiert ihr so:
openssl dhparam -outform PEM -out dh2048.pem 2048
In der Konfiguration müsst ihr ebenfalls noch hinzufügen:
- servername
- Webroot
- index
- PHP Konfiguration
Dies sieht bei mir so aus:
server { listen 443 ssl http2; listen [::]:443 ssl http2; . . . server_name goneuland.de www.goneuland.de; root /var/www/html/; index index.html index.htm index.php; #für PHP5 location ~ \.php$ { include snippets/fastcgi-php.conf; fastcgi_pass unix:/var/run/php5-fpm.sock; } #für PHP7 location ~ \.php$ { include snippets/fastcgi-php.conf; fastcgi_pass unix:/run/php/php7.0-fpm.sock; } }
Bei der PHP Konfiguration nur den Teil für eure Version kopieren.
Zum Schluss den Server neustarten.
service nginx restart
Hallo Christian, vielen Dank und die Mühen für dieses tolle Tutorial.
Fragen:
wird das Diffie-Hellman Key Zertifikat noch benötigt ? Es wird ja später ein Let´s Encrypt Zertifikat erstellt. Oder benötiget wir beide Zertis ?
Ich musste vor allen Befehlen den sudo setzten, sonst hatte ich keine Rechte auf die Conf bzw Dateien. Mein User ist in der sudoers und www-data Gruppe enthalten
Danke und Gruß
Michael