Homepages können immer mehr, das vergrößert gleichzeitig die Angriffsfläche und gefährdet die Sicherheit.
Nur https reicht bei weitem nicht aus, eine Homepage sicherer zu machen, das Zertifikat verschlüsselt lediglich die Daten zwischen Server und Klient/Browser.
Es gibt zahlreiche Wege, in eine Homepage einzudringen, die es zu schließen gilt. Da diese Details im Internet immer recht kryptisch gehalten sind, halte ich es einfach; es gibt nachstehend 8 bis 11 Sicherheitsaspekte zu bedienen:
- Content-Security-Policy
- Strict-Transport-Security
- X-Frame-Options
- X-XSS-Protection
- X-Content-Type-Options
- Referrer-Policy
- Feature-Policy
- Expect-CT
- HTTP Public Key Pinning (HPKP)
- Cookies nur ueber SSL und kein Javascript Zugriff
- X-Powered-By, keine PHP und System-Version ausgeben
Plugin
Grundsätzlich kann man die Einrichtung per .htaccess machen, oder aber per Plugin. Für WordPress empfehle ich die Plugin Variante mit WP Content Security Policy (die Feature-Policie wird vom Plugin noch nicht unterstützt).
- Plugin
- installieren und aktivieren
- Konfiguration
- CSP Controll
- CSP Mode = Enforce policies
- Content Security Policies
- Mixed Content = Upgrade insecure requests
- Headers
- Expect CT (8ter, zusätzlicher Sicherheitaspekt, es wird ein Zertifikat erwartet)
- Mode = Enforce expect CT
- Maximum Age = One Year (31536000 seconds)
- Strict-Transport-Security
- Mode = Include sub domains
- Maximum Age = One Year (31536000 seconds)
- X-Frame-Options
- Mode = Sameorigin
- X-XSS-Protection
- Mode = 1; mode=block – Enable Filtering, block invalid requests
- X-Content-Type-Options
- Mode = nosniff
- Referrer-Policy
- Mode = same-origingin
- Feature-Policy noch nicht abschließend implementiert
- Expect CT (8ter, zusätzlicher Sicherheitaspekt, es wird ein Zertifikat erwartet)
- CSP Controll
ACHTUNG:
Wer das Plugin W3 TotalCache verwendet, muss noch eine Anpassung in der .htaccess machen wie nachstehend. Finden Sie den Source Header set Referrer-Policy „“ und ersetzen diesen mit #Header set Referrer-Policy „“. W3 TotalCache setzt diesen Header, wie auch das Plugin, jedoch fehlt in der .htaccess eine Detail Angabe, die aber bereits mit dem Plugin WP Content Security Policy gesetzt wurde.
Auch nicht zu vergessen, nach Plugin Konfigurationen Cache immer leeren!
Warum her das Plugin? Mit WordPress lassen sich hoch komplexe Umfelder erschaffen, die per Plugin einfacher zu verwalten sind.
Es geht aber auch mit der .htaccess wie nachstehend
# content security policy, settings for domainFactory Server
<IfModule mod_rewrite.c>#1 Content-Security-Policy (CSP)
Header set Content–Security–Policy „default-src ’self’“
#2 Strict-Transport-Security (HSTS)
Header set Strict-Transport-Security „max-age=31536000; includeSubDomains“
#6 X-Content-Type-Options
Header set X-Content-Type-Options nosniff</IfModule>
#3 X-Frame-Options
Header append X-Frame-Options „SAMEORIGIN“
#5 X-XSS-Protection
Header set X-XSS-Protection „1; mode=block“
#6 Referrer-Policy
Header set Referrer-Policy „same-origingin“
#7 Feature-Policy, not implemented yet in plugin, but for future mentioned to be added
#8 Expect-CT
Header set Expect-CT „max-age=0; report-uri=https://domainname.endung/reportOnly“
Auch nicht zu vergessen, nach Plugin Konfigurationen Cache immer leeren!
Testen
Die Umsetzung kann unter nachstehender URL getestet werden:
Der vorher/nachher Test sollte eindeutig mehr Sicherheit bringen. Mit der Einrichtung dieses Plugins oder .htaccess Source Ergänzung ist eine Webseite dennoch nicht zu 100% sicher. Es gilt die Sicherheit in regelmäßigen Abständen zu beurteilen und durch Fortbildung neue Sicherheitsaspekte kennen zu lernen, um die Sicherheit langfristig zu gewährleisten.
.htaccess
Zusätzliche Sicherheit über das Plugin hinaus ist mit nachstehendem .htaccess Source möglich:
#9 HTTP Public Key Pinning (HPKP), Optional: max-age=expireTime [; includeSubdomains][; report-uri=“reportURI“]
# siehe https://developer.mozilla.org/de/docs/Web/Security/Public_Key_Pinning
#Public-Key-Pins: pin-sha256=“base64==“
#10 Cookies nur ueber SSL and kein Javascript Zugriff, Optional: Expires, Max-Age, Path, Domain
Header always edit Set-Cookie (.*) „$1; HttpOnly; Secure“
#11 X-Powered-By, keine PHP und System-Version ausgeben
Header unset X-Powered-By
ACHTUNG
Punkt #10 auskommentieren mit „#“, wenn das Plugin W3 Total Cache verwendet wird, da dieses bereits den Cookie steuert.
Auch nicht zu vergessen, nach Plugin Konfigurationen Cache immer leeren!
Multisite
Die Einrichtung kann man auch für WordPress Multisite(s) einrichten. Hier kann es, je nach Verwendung von Multisites deutlich komplexer werden mit der Konfiguration, da denkbar ist, dass die Homepage Instanzen ggf. Daten miteinander austauschen sollen.
Beratung und Entwicklung
Sie suchen einen langfristigen Projekt Begleiter für Ihre Homepage, Webprojekte oder ähnliches? Mehr Sicherheit ist keine einmalige und kurzfristige Einrichtung, es ist regelmäßiges Sichern, Aktualisieren, Testen, Logs einsehen und die neuesten Sicherheitstechnologien fürs Web im Auge zu behalten und auf Webseiten zu implementieren.
Ich freue mich auf Ihre Anfrage
Ihr persönlicher IT Dienstleister:
A. Herbert