HSTS ja turvapäised sinu veebilehele
Iga lehega saadab sinu veebiserver kaasa päised: lühikesed read juhistega brauserile. Osaliselt määravad need, kui turvaliselt brauser sinu saidiga ümber käib. Siit loed, mis on HSTS, millised muud turvapäised on olemas ning kuidas neid seadistada ja testida.
Kõigepealt peab sinu saidil olema töötav sertifikaat ja külastajad tuleb suunata https-ile. Sellest loed artiklitest SSL-sertifikaadi aktiveerimine, uuendamine ja probleemide lahendamine ning Külastajate kohustuslik suunamine https-ile.
Mida HSTS teeb?
Https-ile suunamisel on üks nõrk koht: esimene päring http kaudu liigub veel krüpteerimata. Keegi samas võrgus, näiteks avalikus wifis, võib selle päringu kinni püüda. HSTS (HTTP Strict Transport Security) lahendab selle. Sinu sait saadab https kaudu kaasa selle päise:
Strict-Transport-Security: max-age=31536000
Brauser jätab siis meelde, et sinu saiti tohib avada ainult https kaudu. Kui külastaja hiljem kirjutab http://, muudab brauser selle ise https-iks, enne kui midagi võrku läheb. Tavalise http kaudu saabunud HSTS-päist brauser eirab.
| Osa | Tähendus |
|---|---|
max-age | Kui kaua brauser seda meeles peab, sekundites. Internet.nl test loeb piisavaks vähemalt ühe aasta (31536000). |
includeSubDomains | Kehtib ka kõigile alamdomeenidele, näiteks shop.sinudomeen.nl ja mail.sinudomeen.nl. |
preload | Taotled lisamist brauseritesse sisseehitatud nimekirja (hstspreload.org). Siis on kaitstud isegi kõige esimene külastus. Selleks on muu hulgas vaja üht aastat, includeSubDomains ja https-i kõigil alamdomeenidel. Nimekirjast uuesti eemaldamine võtab kaua aega. |
max-age=0 | Kustutab meeldejäetud juhise järgmisel https-külastusel. |
includeSubDomains kehtib see ka igale alamdomeenile, näiteks vanale kaamera- või printerilehele ilma sertifikaadita. Seepärast tee seda järk-järgult: alusta lühikese max-age väärtusega, näiteks üks päev (86400), kontrolli, kas kõik töötab, ja suurenda seda sammhaaval üheks aastaks.HSTS WebOké juures
Enamikus meie serverites saadab veebiserver HSTS-i vaikimisi kaasa igale veebisaidile, mis avatakse https kaudu: Strict-Transport-Security: max-age=31536000. See on üks aasta, ilma includeSubDomains ja ilma preload valikuta. Selleks ei pea sa midagi tegema. Mõnes serveris pole see vaikimisi sees; seal lülitad selle ise sisse. Kas sinu sait juba saadab HSTS-i ja millise max-age väärtusega, näed oma brauseri arendajatööriistadest või internet.nl testist (vt allpool).
HSTS-lüliti DirectAdminis
Mine DirectAdminis jaotisse Domain Setup ja klõpsa oma domeeninimel. Kui Secure SSL on sees, näed HSTS juures lülitit Enable HTTP Strict Transport Security. Seejärel klõpsa salvestamiseks nupul Save. Kuidas seda samm-sammult teha, loed artiklist Suuna külastajad alati https-ile.
Kui sinu sait juba saadab HSTS-i, pole lülitit vaja. Lülita see sisse ainult siis, kui sinu sait veel HSTS-i ei saada. Seadista HSTS ühes kohas: kas DirectAdminis või failis .htaccess, mitte mõlemas. Kui brauser saab kaks HSTS-päist, kasutab ta ainult esimest.
Muud turvapäised
| Päis | Mille vastu | Väärtus alustamiseks |
|---|---|---|
X-Content-Type-Options | Brauser hakkab ise arvama, mis fail on, 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 sinu lehe nähtamatult raami, nii et külastajad klõpsavad märkamatult sinu 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 tellimuse numbriga. | strict-origin-when-cross-origin või rangemad same-origin või no-referrer. Internet.nl loeb heaks ainult ranged väärtused. |
Permissions-Policy | Määrab, milliseid brauseri funktsioone sinu leht ja manustatud raamid tohivad kasutada, näiteks kaamerat, mikrofoni ja asukohta. | camera=(), microphone=(), geolocation=() lülitab need kolm välja. Kui sinu sait kasutab mõnda neist funktsioonidest, jäta see välja. |
Content-Security-Policy (täielik) | Piirab, kust tohib laadida skripte, stiile ja pilte. See muudab sisestatud pahatahtlikud skriptid (XSS) palju raskemaks. | Iga saidi jaoks eraldi. Väldi valikuid unsafe-inline, unsafe-eval ja metamärke. |
Seadistamine failis .htaccess
Pane need read oma domeeni kaustas public_html asuva faili .htaccess algusesse. Tee failist enne 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 sinu sait veel HSTS-i ei saada (vt eespool): # 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 pluginaga. Vali tuntud plugin, mida veel uuendatakse, ja seadista iga päis ühes kohas: kas pluginas või failis .htaccess.
Content-Security-Policy-Report-Only. See ei blokeeri midagi, kuid näitab brauseri konsoolis, mis blokeeritaks. Kahtluse korral jäta see oma veebiarendajale või alusta ainult valikuga frame-ancestors.VPS-is nginxi või Caddyga
VPS-is ei kasuta sa DirectAdmini ja sageli ka mitte faili .htaccess. Siis paned päised oma veebiserveri seadetesse. Kumbki neist ei saada HSTS-i ega neid päiseid iseenesest kaasa.
nginx: pordi 443 server-plokis:
add_header Strict-Transport-Security "max-age=31536000" always; add_header X-Content-Type-Options "nosniff" always; add_header Content-Security-Policy "frame-ancestors 'self'" always; add_header Referrer-Policy "strict-origin-when-cross-origin" always;
Valikuga always saadetakse päised kaasa ka vealehtedel. Tähelepanu: kui location-plokis endas on add_header, ei kehti server-ploki read selle locationi jaoks enam. Korda neid siis seal või pane need eraldi faili, mille lisad direktiiviga include igale poole. Testi seadeid käsuga nginx -t ja laadi need käsuga systemctl reload nginx.
Caddy: oma saidi plokis failis Caddyfile:
header {
Strict-Transport-Security "max-age=31536000"
X-Content-Type-Options "nosniff"
Content-Security-Policy "frame-ancestors 'self'"
Referrer-Policy "strict-origin-when-cross-origin"
}
Laadi muudatus käsuga systemctl reload caddy. Saidi ülesehitamise kohta nginxi või Caddyga vaata VPS-i juhendist artikleid nginx Let's Encrypti sertifikaadiga ja Caddy: veebisait automaatse https-iga.
Testimine
- Internet.nl: sisesta oma domeen veebisaidi testi lehel internet.nl.
- Sinu brauser: ava oma sait, vajuta F12 (või vali Uuri), mine vahekaardile Võrk, laadi leht uuesti ja klõpsa esimesel päringul. Jaotises Vastuse päised (Response Headers) näed kõike, mida sinu server kaasa saadab.
- Käsurida:
curl -sI https://sinudomeen.nl/näitab päiseid.
Kontrolli pärast iga muudatust, kas sinu sait, vormid ja makseleht ikka töötavad. Hoia lisaks oma CMS, pluginad ja teemad ajakohased. Vaata artiklit WordPressi wp-login.php turvamine.
Loe lisaks
- MDN: Strict-Transport-Security (inglise keeles)
- MDN: Content-Security-Policy (inglise keeles)
- MDN: Permissions-Policy (inglise keeles)
- HSTS preload-nimekiri (inglise keeles)
Tahad rohkem õppida? Osale tasuta kursusel Turvaliselt veebis ettevõtjatele, õppetund 4.2 Sinu veebisait: https, HSTS ja turvapäised, või tasuta WordPressi kursusel, õppetund 7.4 Saidi karastamine: õigused, päised ja turvapluginad.
