WordPress Installation auf Synology NAS

Umleitungen konfigurieren

Unsere Installation ist jetzt schon einsetzbar. Für einen sicheren Betrieb sollte man grundsätzlich HSTS aktivieren. HSTS signalisiert den Browser, dass die Website ausschließlich über eine sichere Verbindung besucht werden darf. Der entsprechende STS Header darf aber nur bei sicheren Verbindungen (HSTS) gesetzt werden. Synology setzt zumindest in der DSM Version 6.2 auch bei HTTP Verbindungen den Header. Eine konforme Lösung ist einfach umzusetzen. Außerdem möchte ich meine www Subdomain und Zugriffe auf meine festen IP-Adressen umleiten.

Im etc/nginx Verzeichnis legen wir dazu eine  Datei ‚www.allius.conf‘ mittels vi mit folgenden Inhalt an:

map $scheme $hsts_header { https max-age=15768000; includeSubDomains; }

server {
        listen      80;
        listen      [::]:80;
        listen      443 http2;
        listen      [::]:443 http2;

        server_name www.demo.allius.de 80.151.239.19 [2003:a:172f:1320:211:32ff:fe70:d4a2];

        error_page 497 =301  https://demo.allius.de$request_uri;
        add_header Strict-Transport-Security $hsts_header always;

        return 301 https://demo.allius.de$request_uri;
}

In der ersten Zeile ist ein map Kommando, welche die Variable $hsts_header setzt, wenn die Website über eine sichere https Verbindung aufgerufen wurde. Andenfalls bleibt die Variable leer. Der Trick ist nun, das add_header Kommando mit einer leeren Variable ignoriert wird.

Wird versucht eine unsichere HTTP Verbindung über den TLS Port 443 aufzubauen, dann löst nginx einen internen Fehler 497 aus. Auch hierfür ist eine Umleitung in dem obigen Beispiel implementiert.

Damit die Datei von nginx gefunden wird legen wir noch einen symbloischen Link an und editeren nochmal die Datei ‚user.conf.d‘:

$ cd /usr/local/etc/nginx/sites-enabled
$ ln -s /volume1/vhosts/allius_de/etc/nginx/www.allius.conf www.allius.conf
$ vi user.conf.d

Damit HSTS auch beim Aufruf der Webiste ‚demo.allius.de‘ normkonform funktioniert, ersetzen wir die Zeile

add_header Strict-Transport-Security max-age=15768000 always;

durch

add_header Strict-Transport-Security $hsts_header always;

Zum Abschluß testen wir nocheinmal die nginx  Konfiguration und aktivieren diese dann:

$ nginx -T
$ nginx -s reload
$

Fazit

Mit einem überschaubaren Aufwand haben wir eine Installation von WordPress auf einer Synology NAS durchgeführt, die sehr performant ist. Wir haben möglichst viel von den Synology Diensten und Applikationen genutzt, um die Wartung einfach zu halten. Erste Security Aspekte sind bereits umgesetzt.

Es gibt aber noch ein paar Verbesserungsmöglichkeiten. Ich arbeite derzeit an einer Absicherung der Login-Seite und des Admin Bereichs von WordPress. Außerdem sollten die Installation noch durch eine Content-Security-Header (CSP) abgesichert werden. Um die Performance nochmals zu steigern, möchte ich noch OCSP Stapling einsetzen. Diese Themen werde ich in kürze ebenfalls in meinem Blog beschreiben.

Verbesserungen, Anmerkungen etc sind herzlich willkommen. Ich freue mich auf entsprechende Kommentare.