🛡️ WordPress-Website unter HestiaCP absichern – mit sicheren HTTP-Headers zum A+ Rating
Letztes Update: Juni 2025 – kompatibel mit HestiaCP + Nginx + PHP-FPM
🔍 Warum sind HTTP-Sicherheits-Header so wichtig?
Moderne Browser bieten viele Sicherheitsfunktionen – aber sie müssen vom Webserver explizit aktiviert werden. Fehlen diese sogenannten „Security Headers“, sind selbst gut gepflegte Webseiten anfällig für:
- Clickjacking
- MIME-Sniffing-Angriffe
- Referrer-Leaks (Datenschutzprobleme)
- Missbrauch von Browser-APIs
- Schwachstellen durch Inline-Skripte (XSS)
Besonders bei WordPress ist es sinnvoll, direkt auf Webserver-Ebene mit Nginx abzusichern – bevor überhaupt ein Plugin geladen wird.
🎯 Ziel dieser Anleitung
Du lernst, wie Du unter HestiaCP folgende HTTP-Header dauerhaft aktivierst:
add_header X-Frame-Options "SAMEORIGIN" always;
add_header X-Content-Type-Options "nosniff" always;
add_header Referrer-Policy "strict-origin-when-cross-origin" always;
add_header Permissions-Policy "geolocation=(), microphone=(), camera=()" always;
add_header Content-Security-Policy "default-src 'self'; script-src 'self' https:; style-src 'self' https:;" always;
add_header Strict-Transport-Security "max-age=31536000; includeSubDomains; preload" always;
add_header Cross-Origin-Embedder-Policy require-corp always;
add_header Cross-Origin-Opener-Policy same-origin always;
add_header Cross-Origin-Resource-Policy same-origin always;
Damit erreichst Du:
- ✅ A oder A+ Sicherheitsbewertungen
- ✅ Schutz vor den häufigsten Schwachstellen
🧰 Voraussetzungen
- HestiaCP mit Nginx + PHP-FPM aktiviert
- WordPress-Seite läuft über HTTPS
- Zugang per SSH (z. B. über Terminal oder PuTTY)
🛠️ Schritt-für-Schritt Anleitung
1. Mit dem Server verbinden
ssh deinbenutzer@deinserver
sudo su -l
2. Nginx-Template duplizieren
cd /usr/local/hestia/data/templates/web/nginx/php-fpm
cp wordpress.tpl wordpress-secure.tpl
cp wordpress.stpl wordpress-secure.stpl
Hinweis:
.tpl
ist für HTTP (Weiterleitung zu HTTPS).stpl
ist für HTTPS (gesicherte Verbindung)
3. Header in die Vorlagen einfügen
Öffne beide Dateien:
nano wordpress-secure.tpl
nano wordpress-secure.stpl
Füge innerhalb des server {}
Blocks, am besten direkt unter access_log
, diesen Header-Block ein:
add_header X-Frame-Options "SAMEORIGIN" always;
add_header X-Content-Type-Options "nosniff" always;
add_header Referrer-Policy "strict-origin-when-cross-origin" always;
add_header Permissions-Policy "geolocation=(), microphone=(), camera=()" always;
add_header Content-Security-Policy "default-src 'self'; script-src 'self' https:; style-src 'self' https:;" always;
add_header Strict-Transport-Security "max-age=31536000; includeSubDomains; preload" always;
add_header Cross-Origin-Embedder-Policy require-corp always;
add_header Cross-Origin-Opener-Policy same-origin always;
add_header Cross-Origin-Resource-Policy same-origin always;
🔒 Tipp: Bearbeite niemals die Standard-Templates wie wordpress.tpl
direkt – diese werden bei Updates überschrieben.
4. Sicherheitsheader für HTTP-Weiterleitung (optional)
In der wordpress-secure.tpl
kannst Du auf Wunsch auch nur minimale Header verwenden:
add_header X-Content-Type-Options "nosniff" always;
add_header Referrer-Policy "strict-origin-when-cross-origin" always;
add_header Permissions-Policy "geolocation=(), microphone=(), camera=()" always;
Diese werden bei der Weiterleitung von HTTP zu HTTPS mitgesendet – das verbessert manche Security-Scans, hat aber keinen funktionalen Einfluss.
5. Eigene Template aktivieren
Du kannst das Template über das HestiaCP-Webinterface zuweisen:
- Gehe zu Web > Bearbeiten bei deiner Domain
- Setze das Web Template auf
wordpress-secure
- Speicher die Änderung
Oder per Kommandozeile:
v-change-web-domain-tpl BENUTZERNAME DOMAIN wordpress-secure php-fpm
6. Server-Information verbergen (optional, empfohlen)
In /etc/nginx/nginx.conf
:
http {
...
server_tokens off;
...
}
Dann:
systemctl restart nginx
Damit wird verhindert, dass Dein Server öffentlich als „nginx“ mit Versionsnummer erkennbar ist.
7. Ergebnis prüfen
Teste Deine Seite mit diesen Tools:
Oder im Terminal:
curl -I https://deinedomain.de
Du solltest alle gesetzten Header im Output sehen.
📦 Ergebnis
Mit dieser Konfiguration erreichst Du:
✅ Ein dauerhaftes A oder A+ Rating bei Sicherheits-Scannern
✅ Eine robuste Webserver-Sicherheitsbasis – ganz ohne Plugins
✅ DSGVO-konforme Header-Strategie (z. B. durch Referrer-Policy, Permissions-Policy)
✅ Eine einfache, updatefeste Lösung dank HestiaCP-Template-System
💬 Fazit
Sichere Header gehören zur Grundausstattung jeder modernen Webpräsenz. Mit nur wenigen Anpassungen in HestiaCP lässt sich eine WordPress-Installation erheblich härten – ohne Performance-Verlust oder Kompatibilitätsprobleme.
Diese Lösung ist:
- leicht nachvollziehbar
- updatesicher
- vollständig dokumentiert
- praxisbewährt
Stand: Juni 2025