Transport
HTTPS aktiv
HTTP sauber umgeleitet
Zertifikatskette vollständig
Erneuerung getestet
OCSP Stapling geprüft
TLS, Header, CSP, Trusted Types, Rate Limiting – A+ als Ergebnis sauberer Arbeit, nicht als Selbstzweck.
Server-Härtung beginnt nicht mit einem Tool-Score und endet auch nicht dort. Sie beginnt mit dem Verständnis, welche Angriffsfläche eine Website überhaupt hat, und sie lebt davon, dass jede gesetzte Direktive einen bekannten Zweck erfüllt.
Diese Seite beschreibt keinen Sicherheitsaberglauben und kein Copy-Paste aus Generatoren. Sie beschreibt die nüchterne Praxis: HTTPS ohne Altlasten, sinnvolle Security-Header, eine passende CSP, klare Grenzen für Browser-Funktionen und ein Betrieb, der Logs tatsächlich liest.
Die häufigste Fehlentwicklung bei Server-Härtung ist nicht zu wenig Technik, sondern zu wenig Verständnis. Man übernimmt Konfigurationsblöcke aus Foren, Generatoren oder Blogposts, bekommt vielleicht einen grünen Testbericht und merkt erst später, dass die Hälfte davon nicht zur eigenen Seite passt.
Eine saubere Konfiguration beantwortet drei Fragen: Was schützt diese Direktive? Welchen Nebeneffekt hat sie? Wie prüfe ich nach einer Änderung, ob sie noch korrekt greift? Wenn eine dieser drei Antworten fehlt, ist die Zeile in der Konfiguration bereits verdächtig.
„Ein guter Security-Score ist kein Ziel. Er ist nur ein Nebenprodukt sauberer Entscheidungen.“
TLS ist die Grundlage. Ohne saubere Transportverschlüsselung sind alle späteren Header nur Kosmetik. Der erste Schritt ist deshalb schlicht: HTTP konsequent nach HTTPS umleiten und auf veraltete Protokollgenerationen verzichten.
Wenn HSTS mit preload verwendet wird, müssen includeSubDomains und ein max-age von mindestens einem Jahr vorhanden sein. Das setzt eine wirklich vollständige HTTPS-Disziplin für die gesamte Domainfamilie voraus.
Security-Header sind kein Sammelalbum. Einige sind heute zentral, andere eher Altkompatibilität. Ich setze nur, was klaren Nutzen hat und im Browser auch noch sauber verstanden wird.
frame-ancestors in CSP die modernere Steuerung ist.X-XSS-Protection ist eine Altlast aus älteren Browsergenerationen. Für neue Konfigurationen ist der eigentliche XSS-Schutz die Kombination aus sauberem Markup, Verzicht auf riskante DOM-Sinks und einer passenden CSP.
Eine Content-Security-Policy ist nur dann gut, wenn sie zur Seite passt. Für eine rein statische Seite ohne fremde Skripte ist die CSP erfreulich streng. Für komplexere Seiten muss sie bewusst erweitert werden. Was ich nicht tue: eine universelle „irgendwie grüne“ Policy aus dem Netz übernehmen.
Für klassische Informationsseiten ist dieser Aufbau ein sauberer Ausgangspunkt:
Der Unterschied zwischen einer guten und einer schlechten CSP liegt oft in zwei Dingen: erstens dem Verzicht auf bequeme Weichmacher wie 'unsafe-inline', zweitens in ehrlicher Prüfung mit Report-Only, bevor blockiert wird.
Für stark statische Seiten kann statt Nonce auch ein Hash für kleine Inline-Skripte sinnvoll sein. Für dynamische Anwendungen ist Nonce oft praktischer. Beides ist sauberer als globale Inline-Freigaben.
Trusted Types ist kein allgemeiner Schmuck für jede Website. Es ist dort interessant, wo JavaScript mit riskanten DOM-Sinks wie innerHTML arbeitet und wo man den Fluss zu diesen Sinks bewusst kontrollieren will. Für eine rein statische Seite ohne solche Muster ist es nicht der erste Hebel.
Wenn es eingesetzt wird, dann nicht als bloßer String-Durchreicher, sondern über eine klar definierte Policy, die HTML bewusst aufbereitet oder sanitisiert.
Trusted Types ersetzt keine saubere CSP und auch keine inhaltliche Sanitization. Es ist eine zusätzliche Sperrschicht gegen DOM-basiertes XSS, nicht die ganze Lösung.
Nicht jede Seite braucht dieselbe Härte. Aber fast jede öffentlich erreichbare Seite profitiert davon, wenn einzelne Clients nicht unbegrenzt und ohne Taktung feuern können. Für Login- oder Formular-Endpunkte ist das Pflicht. Für statische Seiten ist es zumindest ein vernünftiger Filter gegen den alltäglichen Lärm.
Rate Limiting ersetzt keine Zugangskontrolle und auch kein Fail2Ban, aber es nimmt Druck aus vielen banalen Angriffsmustern und macht Logbilder lesbarer.
Security ohne Log-Sicht ist blind. Ein Scanner, der nachts zehnmal nach /.env, /wp-login.php oder alten PHPMyAdmin-Pfaden fragt, ist kein Weltuntergang. Aber man sollte wissen, dass er da war, wie häufig er auftaucht und ob das Muster kippt.
Gleichzeitig gilt: Access-Logs enthalten personenbezogene Daten. Kurze Aufbewahrung, klarer Zweck und kein Sammeltrieb.
Ich halte Security-Header und TLS-Parameter gern in wiederverwendbaren Snippets. Nicht, weil Modularisierung schön aussieht, sondern weil Pflegefehler sonst schnell auf mehreren Hosts gleichzeitig auseinanderlaufen.
Wer Apache mit HTTP/2 sauber fahren will, setzt das nicht nur „gefühlt“, sondern ausdrücklich über Protocols h2 http/1.1 und hält den Rest der TLS-Konfiguration schlank und nachvollziehbar.
HTTPS aktiv
HTTP sauber umgeleitet
Zertifikatskette vollständig
Erneuerung getestet
OCSP Stapling geprüft
HSTS bewusst gesetzt
nosniff vorhanden
Referrer-Policy gesetzt
Permissions-Policy sinnvoll beschränkt
X-Frame-Options oder frame-ancestors geprüft
keine unnötigen Wildcards
kein gedankenloses unsafe-inline
Report-Only vor scharfem Block
Browser-Konsole ohne CSP-Rauschen
Rate Limiting aktiv
Logs lesbar und rotierend
Backups vorhanden
Updates planbar
Test mit echten Browsern und echten Requests
„Eine sichere Konfiguration ist nicht die längste. Sie ist die, die auch nach Monaten noch verstanden und gepflegt wird.“
Diese Seite gehört zum SSLXY-Bereich dieser Domain. Sie behandelt Server-Härtung, TLS, HTTP-Security-Header, CSP, Trusted Types, Rate Limiting und Log-Analyse und dient ausschließlich informatorischen und dokumentarischen Zwecken.
Verantwortlich für den Inhalt dieser Domain ist der Domainbetreiber. Detaillierte Angaben zum Verantwortlichen sowie Informationen zum Datenschutz finden sich auf den offiziellen Hauptseiten der Domain.
Kontakt für technische Rückfragen: mail@sslxy.de
Statische Seite. Schlanke Struktur. Technischer Inhalt ohne Sicherheitsfolklore.