Transport
HTTPS actief
HTTP correct omgeleid
Certificaatketen volledig
Vernieuwing getest
OCSP Stapling gecontroleerd
TLS, headers, CSP, Trusted Types, rate limiting – A+ als resultaat van degelijk werk, niet als doel op zich.
Server-hardening begint niet met een toolscore en eindigt daar ook niet. Het begint met het begrip welk aanvalsoppervlak een website überhaupt heeft, en het leeft ervan dat elke ingestelde directive een bekend doel vervult.
Deze pagina beschrijft geen veiligheidsbijgeloof en geen copy-paste uit generatoren. Ze beschrijft de nuchtere praktijk: HTTPS zonder oude ballast, zinvolle security-headers, een passende CSP, duidelijke grenzen voor browserfuncties en een beheer dat logs daadwerkelijk leest.
De meest voorkomende misontwikkeling bij server-hardening is niet te weinig techniek, maar te weinig begrip. Men neemt configuratieblokken over uit forums, generatoren of blogposts, krijgt misschien een groen testrapport en merkt pas later dat de helft daarvan niet bij de eigen website past.
Een schone configuratie beantwoordt drie vragen: wat beschermt deze directive? Welk neveneffect heeft ze? Hoe controleer ik na een wijziging of ze nog correct werkt? Als één van die drie antwoorden ontbreekt, is de regel in de configuratie al verdacht.
„Een goede security-score is geen doel. Hij is alleen een nevenproduct van schone beslissingen.“
TLS is de basis. Zonder schone transportversleuteling zijn alle latere headers slechts cosmetica. De eerste stap is daarom eenvoudig: HTTP consequent naar HTTPS omleiden en verouderde protocolgeneraties niet meer meeslepen.
Als HSTS met preload wordt gebruikt, moeten includeSubDomains en een max-age van minstens één jaar aanwezig zijn. Dat vereist een werkelijk volledige HTTPS-discipline voor de hele domeinfamilie.
Security-headers zijn geen verzamelalbum. Sommige zijn vandaag centraal, andere vooral oude compatibiliteit. Ik zet alleen wat een duidelijk nut heeft en in de browser nog correct wordt begrepen.
frame-ancestors in CSP de modernere regeling is.X-XSS-Protection is een overblijfsel uit oudere browsergeneraties. Voor nieuwe configuraties is de werkelijke XSS-bescherming de combinatie van schoon markup, het vermijden van riskante DOM-sinks en een passende CSP.
Een Content-Security-Policy is alleen goed als ze bij de website past. Voor een puur statische pagina zonder externe scripts is de CSP prettig streng. Voor complexere pagina's moet ze bewust worden uitgebreid. Wat ik niet doe: een universele “op de een of andere manier groene” policy uit het internet overnemen.
Voor klassieke informatiepagina's is deze opbouw een schoon uitgangspunt:
Het verschil tussen een goede en een slechte CSP zit vaak in twee dingen: ten eerste het vermijden van gemakkelijke weekmakers zoals 'unsafe-inline', ten tweede eerlijke controle met Report-Only voordat er echt geblokkeerd wordt.
Voor sterk statische pagina's kan in plaats van een nonce ook een hash voor kleine inline-scripts zinvol zijn. Voor dynamische toepassingen is een nonce vaak praktischer. Beide zijn schoner dan globale inline-vrijgaven.
Trusted Types is geen algemene versiering voor elke website. Het is daar interessant waar JavaScript met riskante DOM-sinks zoals innerHTML werkt en waar men de stroom naar die sinks bewust wil controleren. Voor een puur statische website zonder zulke patronen is het niet de eerste hefboom.
Als het wordt ingezet, dan niet als simpele string-doorvoer, maar via een duidelijk gedefinieerde policy die HTML bewust verwerkt of sanitiseert.
Trusted Types vervangt geen schone CSP en ook geen inhoudelijke sanitization. Het is een extra blokkadelaag tegen DOM-gebaseerde XSS, niet de hele oplossing.
Niet elke website heeft dezelfde hardheid nodig. Maar bijna elke publiek bereikbare website profiteert ervan wanneer individuele clients niet onbeperkt en zonder ritme mogen vuren. Voor login- of formulier-endpoints is dat verplicht. Voor statische websites is het op zijn minst een zinvolle filter tegen het alledaagse lawaai.
Rate limiting vervangt geen toegangscontrole en ook geen Fail2Ban, maar het haalt druk uit veel banale aanvalspatronen en maakt logbeelden leesbaarder.
Security zonder zicht op logs is blind. Een scanner die 's nachts tien keer naar /.env, /wp-login.php of oude PHPMyAdmin-paden vraagt, is geen wereldramp. Maar je moet weten dat hij er was, hoe vaak hij opduikt en of het patroon verandert.
Tegelijk geldt: access-logs bevatten persoonsgegevens. Korte bewaartermijn, duidelijk doel en geen verzamelwoede.
Ik houd security-headers en TLS-parameters graag in herbruikbare snippets. Niet omdat modularisering er mooi uitziet, maar omdat onderhoudsfouten anders snel op meerdere hosts tegelijk uit elkaar lopen.
Wie Apache met HTTP/2 correct wil draaien, zet dat niet alleen “gevoelsmatig”, maar expliciet via Protocols h2 http/1.1 en houdt de rest van de TLS-configuratie slank en begrijpelijk.
HTTPS actief
HTTP correct omgeleid
Certificaatketen volledig
Vernieuwing getest
OCSP Stapling gecontroleerd
HSTS bewust gezet
nosniff aanwezig
Referrer-Policy gezet
Permissions-Policy zinvol beperkt
X-Frame-Options of frame-ancestors gecontroleerd
geen onnodige wildcards
geen gedachteloos unsafe-inline
Report-Only vóór harde blokkade
Browserconsole zonder CSP-ruis
Rate limiting actief
Logs leesbaar en geroteerd
Back-ups aanwezig
Updates planbaar
Test met echte browsers en echte requests
„Een veilige configuratie is niet de langste. Het is de configuratie die ook na maanden nog begrepen en onderhouden wordt.“
Deze pagina maakt deel uit van de webpresentatie van het Hotel Goldener Ochsen in Göppingen-Hohenstaufen.
Verantwoordelijk voor de inhoud van dit domein is de exploitant van het hotel. De volledige verplichte informatie staat in het colofon en in de privacyverklaring van de hoofdpagina.
Contact voor technische vragen: mail@sslxy.de
Statische pagina. Slanke structuur. Technische inhoud zonder veiligheidsfolklore.