CSP auf Hetzner konfigurieren
Content Security Policy auf Ihrem Hetzner vServer oder Cloud Server einrichten — von Report-Only über Violation-Analyse bis Enforcement. Mit Nginx- und Apache-Konfigurationen.
Content Security Policy auf Hetzner
Content Security Policy (CSP) ist der wichtigste HTTP-Security-Header gegen Cross-Site Scripting (XSS). Er teilt dem Browser mit, welche Ressourcen geladen werden dürfen — und blockiert alles andere. CSP ist mit 35 von 166 Punkten der einflussreichste Header im Wolf-Agents Web Security Check.
Auf einem Hetzner vServer (CX, CPX, CCX) haben Sie vollen Root-Zugriff und konfigurieren CSP direkt in nginx.conf oder apache2.conf. Auch auf Hetzner Cloud Servern und Dedizierten Servern funktioniert die Konfiguration identisch. Nur bei Hetzner Managed Hosting haben Sie keinen direkten Zugriff auf die Webserver-Konfiguration — dort müssen Sie CSP über .htaccess oder die Applikation setzen.
CSP im Report-Only-Modus aktivieren
Beginnen Sie immer im Report-Only-Modus. Der Browser meldet CSP-Verstöße in der Konsole, blockiert aber keine Ressourcen. Auf einem Hetzner vServer erstellen Sie eine separate Konfigurationsdatei, die über die Hauptkonfiguration eingebunden wird.
# /etc/nginx/conf.d/csp.conf — Report-Only
add_header Content-Security-Policy-Report-Only
"default-src 'self'; script-src 'self'; style-src 'self' 'unsafe-inline'; img-src 'self' data: https:; font-src 'self'; object-src 'none'; base-uri 'self'; form-action 'self'; frame-ancestors 'none'"
always; # /etc/apache2/conf-available/csp.conf — Report-Only
<IfModule mod_headers.c>
Header always set Content-Security-Policy-Report-Only "default-src 'self'; script-src 'self'; style-src 'self' 'unsafe-inline'; img-src 'self' data: https:; font-src 'self'; object-src 'none'; base-uri 'self'; form-action 'self'; frame-ancestors 'none'"
</IfModule> Auf vServern und Cloud Servern haben Sie vollen Root-Zugriff — die Konfiguration erfolgt direkt in /etc/nginx/ oder /etc/apache2/. Bei Apache auf Hetzner aktivieren Sie die Config mit sudo a2enconf csp && sudo systemctl reload apache2.
sudo nginx -t && sudo systemctl reload nginx Violations analysieren und Policy anpassen
Öffnen Sie die Browser DevTools (F12) und die Console. CSP-Violations erscheinen als Warnungen mit der blockierten Ressource und der verletzten Direktive. Passen Sie die Policy an, bis keine unerwarteten Violations mehr auftreten.
| Violation | Lösung |
|---|---|
| Google Analytics blockiert | *.google-analytics.com *.googletagmanager.com in script-src |
| Google Fonts blockiert | fonts.googleapis.com in style-src, fonts.gstatic.com in font-src |
| YouTube/Vimeo Embeds | *.youtube.com *.vimeo.com in frame-src |
| Inline-Scripts blockiert | Nonces oder Hashes verwenden — niemals 'unsafe-inline' in script-src |
| CDN-Assets blockiert | CDN-Domain zur entsprechenden Direktive hinzufügen |
Enforcement aktivieren
Wenn keine unerwarteten Violations mehr auftreten, wechseln Sie von Content-Security-Policy-Report-Only zu Content-Security-Policy. Der Browser blockiert ab sofort nicht autorisierte Ressourcen.
# /etc/nginx/conf.d/csp.conf — Enforcement
add_header Content-Security-Policy
"default-src 'self'; script-src 'self'; style-src 'self' 'unsafe-inline'; img-src 'self' data: https:; font-src 'self'; object-src 'none'; base-uri 'self'; form-action 'self'; frame-ancestors 'none'"
always; # /etc/apache2/conf-available/csp.conf — Enforcement
<IfModule mod_headers.c>
Header always set Content-Security-Policy "default-src 'self'; script-src 'self'; style-src 'self' 'unsafe-inline'; img-src 'self' data: https:; font-src 'self'; object-src 'none'; base-uri 'self'; form-action 'self'; frame-ancestors 'none'"
</IfModule> Verifizierung und Monitoring
Prüfen Sie den aktiven CSP-Header per curl. Für dauerhaftes Monitoring empfiehlt sich ein Reporting-Endpoint, der CSP-Violations protokolliert und Sie bei neuen Verstößen benachrichtigt.
# Konfiguration testen und Webserver neu laden
sudo nginx -t && sudo systemctl reload nginx
# oder für Apache
sudo apachectl configtest && sudo systemctl reload apache2
# CSP-Header prüfen
curl -sI https://ihre-domain.de | grep -i content-security-policy Der Wolf-Agents Web Security Check prüft Ihren CSP-Header automatisch und bewertet ihn mit bis zu 35 Punkten. Mit aktivem Monitoring werden Sie bei Änderungen oder fehlenden Headern sofort benachrichtigt.
Häufige Fehler bei CSP auf Hetzner
Certbot überschreibt nginx.conf
Bei certbot --nginx Renewal-Hooks kann die Nginx-Konfiguration überschrieben werden. Setzen Sie CSP in einer separaten Datei unter /etc/nginx/conf.d/, nicht direkt im Server-Block der Domain-Config. Alternativ: Certbot Renewal-Hook mit --deploy-hook konfigurieren.
CSP blockiert CMS Admin-Panels
WordPress, TYPO3 und andere CMS nutzen Inline-Scripts im Admin-Bereich. Lösung: Separate CSP für den Admin-Pfad mit location /wp-admin/ in Nginx oder <Location /admin> in Apache — dort eine lockere Policy setzen.
Hetzner Load Balancer Header-Passthrough
Der Hetzner Load Balancer leitet HTTP-Header vom Backend durch, setzt aber keine eigenen Security-Header. CSP muss auf jedem Backend-Server konfiguriert werden — nicht am Load Balancer selbst.
Nginx add_header Vererbung
Nginx vererbt add_header-Direktiven nur, wenn im aktuellen Block keine eigenen add_header-Direktiven existieren. Ein einzelnes add_header in einem location-Block überschreibt alle geerbten Header — auch den CSP-Header.
Compliance-Relevanz
Eine korrekte Content Security Policy erfüllt zentrale Anforderungen mehrerer Compliance-Frameworks. Gerade auf selbstverwalteten Hetzner Servern liegt die Verantwortung für die Header-Konfiguration vollständig beim Betreiber.
Wie steht Ihre Domain bei Content Security Policy?
Prüfen Sie es jetzt — kostenlos, ohne Registrierung, mit 166 Prüfpunkte.