HSTS ja turvapäised sinu veebisaidile
Iga lehe juures saadab su veebiserver kaasa päised (headers): lühikesed read juhistega brauserile. Need määravad osaliselt, kui turvaliselt brauser su saidiga ümber käib. Siit loed, mis on HSTS, millised teised turvapäised on olemas ning kuidas neid seadistada ja testida.
Kõigepealt peab su saidil olema toimiv sertifikaat ja külastajad tuleb suunata https-ile. Selle kohta loe artikleid SSL-sertifikaadi aktiveerimine, uuendamine ja probleemide lahendamine ja Külastajate kohustuslik suunamine https-ile.
Mida teeb HSTS?
Https-ile suunamisel on üks nõrk hetk: esimene päring http kaudu käib veel krüpteerimata. Keegi samas võrgus, näiteks avalikus WiFi-s, saab selle päringu pealt kuulata. HSTS (HTTP Strict Transport Security) lahendab selle. Su sait saadab https kaudu kaasa selle päise:
Strict-Transport-Security: max-age=31536000
Brauser jätab siis meelde, et su saiti tohib avada ainult https kaudu. Kui külastaja sisestab hiljem http://, teeb brauser sellest ise https, juba enne kui midagi võrku läheb. Tavalise http kaudu saabuvat HSTS-päist brauser eirab.
| Osa | Tähendus |
|---|---|
max-age | Kui kaua brauser seda meeles peab, sekundites. Internet.nl test loeb piisavaks vähemalt aasta (31536000). |
includeSubDomains | Kehtib ka kõigi alamdomeenide kohta, näiteks shop.sinudomeen.nl ja mail.sinudomeen.nl. |
preload | Taotled lisamist loendisse, mis on brauseritesse sisse ehitatud (hstspreload.org). Siis on kaitstud isegi kõige esimene külastus. Selleks on vaja muuhulgas aastast kestust, includeSubDomains-i ja https-i kõigil alamdomeenidel. Sealt eemaldumine võtab kaua aega. |
max-age=0 | Kustutab meelde jäetud juhise järgmisel külastusel https kaudu. |
includeSubDomains-iga kehtib see ka iga alamdomeeni kohta, näiteks vana kaamera- või printerilehe kohta, millel pole sertifikaati. Ehita seda seetõttu samm-sammult üles: alusta lühikese max-age-väärtusega, näiteks ühe päevaga (86400), kontrolli, kas kõik töötab, ja suurenda järk-järgult aastani.HSTS-lüliti DirectAdminis
DirectAdminis mine Domeenid juurde ja klõpsa oma domeeninimel. Kui Turvaline SSL-ühendus on sees, näed HSTS juures lülitit HTTP Strict Transport Security sisselülitamine. Seejärel klõpsa salvestamiseks Muuda. Samm-sammult juhiseid loe artiklist Külastajate alati suunamine https-ile.
Kui soovid teada, millist max-age-väärtust su sait kaasa saadab, vaata oma brauseri arendajatööriistadest või internet.nl testist (vaata allpool). Seadista HSTS ainult ühes kohas: kas DirectAdminis või failis .htaccess, mitte mõlemas. Kui brauser saab kaks HSTS-päist, kasutab ta ainult esimest.
Teised turvapäised
| Päis | Mille vastu | Alustamiseks sobiv väärtus |
|---|---|---|
X-Content-Type-Options | Brauser hakkab ise oletama, mis failiga on tegu, mistõttu üleslaaditud "pilti" võidakse käivitada skriptina. | nosniff (ainus kehtiv väärtus) |
Content-Security-Policy: frame-ancestors või X-Frame-Options | Clickjacking: teine sait laadib su lehe nähtamatult raami, nii et külastajad klõpsavad märkamatult su nuppudel. | frame-ancestors 'self', või vanem päis X-Frame-Options: SAMEORIGIN |
Referrer-Policy | Teisele saidile klõpsates saadab brauser kaasa eelmise lehe aadressi, mõnikord koos otsingusõna või tellimusnumbriga. | strict-origin-when-cross-origin, või rangemalt same-origin või no-referrer. Internet.nl loeb heaks ainult ranged väärtused. |
Permissions-Policy | Määrab, milliseid brauserifunktsioone su leht ja sisseehitatud raamid tohivad kasutada, näiteks kaamerat, mikrofoni ja asukohta. | camera=(), microphone=(), geolocation=() lülitab need kolm välja. Kui su sait kasutab mõnda neist funktsioonidest, jäta see välja. |
Content-Security-Policy (täielik) | Piirab, millistest kohtadest skriptid, stiilid ja pildid tohivad laadida. See muudab sisestatud pahatahtlikud skriptid (XSS) palju raskemaks. | Igale saidile eraldi kohandatud. Väldi väärtusi unsafe-inline, unsafe-eval ja metamärke (wildcards). |
Seadistamine failis .htaccess
Lisa need read oma domeeni kausta public_html faili .htaccess algusesse. Tee failist kõigepealt koopia.
<IfModule mod_headers.c> Header always set X-Content-Type-Options "nosniff" Header always set Content-Security-Policy "frame-ancestors 'self'" Header always set Referrer-Policy "strict-origin-when-cross-origin" Header always set Permissions-Policy "camera=(), microphone=(), geolocation=()" # Ainult siis, kui HSTS-lüliti on DirectAdminis väljas: # Header always set Strict-Transport-Security "max-age=31536000" </IfModule>
Lisa includeSubDomains alles siis, kui oled kindel, et igal alamdomeenil on https. Kui kasutad WordPressi, saad päised seadistada ka pistikprogrammiga. Vali tuntud pistikprogramm, mida veel uuendatakse, ja seadista iga päis ainult ühes kohas: kas pistikprogrammis või failis .htaccess.
Content-Security-Policy-Report-Only. See ei blokeeri midagi, aga näitab brauseri konsoolis, mis blokeeritaks. Kui kahtled, jäta see oma veebiarendaja hooleks, või alusta ainult frame-ancestors-iga.Testimine
- Internet.nl: sisesta oma domeen saidi testi juures aadressil internet.nl.
- Su brauser: ava oma sait, vajuta F12 (või vali Uuri/Inspekteeri), mine vahekaardile Võrk (Network), lae leht uuesti ja klõpsa esimesel päringul. Jaotises Vastuse päised (Response Headers) näed kõike, mida su server kaasa saadab.
- Käsurida:
curl -sI https://sinudomeen.nl/näitab päiseid.
Pärast iga muudatust kontrolli, kas su sait, vormid ja maksuleht veel toimivad. Hoia lisaks oma CMS, pistikprogrammid ja teemad uuendatuna. Vaata WordPressi wp-login.php kaitsmine.
Loe edasi
- MDN: Strict-Transport-Security (inglise keeles)
- MDN: Content-Security-Policy (inglise keeles)
- MDN: Permissions-Policy (inglise keeles)
- HSTS eellaadimisloend (inglise keeles)
