HSTS un drošības galvenes Jūsu tīmekļa vietnei
Katrai lapai Jūsu tīmekļa serveris pievieno galvenes: īsas rindas ar norādījumiem pārlūkprogrammai. Tās daļēji nosaka, cik droši pārlūkprogramma apietas ar Jūsu vietni. Šeit uzzināsiet, kas ir HSTS, kādas vēl ir drošības galvenes un kā tās iestatīt un pārbaudīt.
Vispirms Jūsu vietnei ir nepieciešams strādājošs sertifikāts, un apmeklētāji ir jāpārvirza uz https. Par to lasiet rakstos SSL sertifikāta aktivizēšana, atjaunošana un problēmu novēršana un Apmeklētāju obligāta pārvirzīšana uz https.
Ko dara HSTS?
Pārvirzīšanai uz https ir viens vājš brīdis: pirmais pieprasījums caur http joprojām tiek nosūtīts nešifrēts. Kāds tajā pašā tīklā, piemēram, publiskajā wifi, var šo pieprasījumu pārtvert. HSTS (HTTP Strict Transport Security) to atrisina. Jūsu vietne caur https nosūta šādu galveni:
Strict-Transport-Security: max-age=31536000
Pārlūkprogramma tad atceras, ka Jūsu vietni drīkst atvērt tikai caur https. Ja apmeklētājs vēlāk ieraksta http://, pārlūkprogramma pati to nomaina uz https, vēl pirms kaut kas tiek nosūtīts tīklā. HSTS galveni, kas saņemta caur parasto http, pārlūkprogramma ignorē.
| Daļa | Nozīme |
|---|---|
max-age | Cik ilgi pārlūkprogramma to atceras, sekundēs. Internet.nl pārbaude par pietiekamu uzskata vismaz vienu gadu (31536000). |
includeSubDomains | Attiecas arī uz visiem apakšdomēniem, piemēram, shop.jusudomens.lv un mail.jusudomens.lv. |
preload | Jūs lūdzat iekļaut sarakstā, kas ir iebūvēts pārlūkprogrammās (hstspreload.org). Tad aizsargāts ir pat pats pirmais apmeklējums. Tam cita starpā ir nepieciešams viens gads, includeSubDomains un https visos apakšdomēnos. Izņemšana no saraksta aizņem ilgu laiku. |
max-age=0 | Izdzēš atcerēto norādījumu nākamajā apmeklējumā caur https. |
includeSubDomains tas attiecas arī uz katru apakšdomēnu, piemēram, vecu kameras vai printera lapu bez sertifikāta. Tāpēc ieviesiet to pakāpeniski: sāciet ar īsu max-age, piemēram, vienu dienu (86400), pārbaudiet, vai viss darbojas, un pakāpeniski palieliniet līdz vienam gadam.HSTS pakalpojumā WebOké
Lielākajā daļā mūsu serveru tīmekļa serveris pēc noklusējuma nosūta HSTS katrai vietnei, kas tiek atvērta caur https: Strict-Transport-Security: max-age=31536000. Tas ir viens gads, bez includeSubDomains un bez preload. Jums tam nekas nav jādara. Dažos serveros tas pēc noklusējuma nav ieslēgts; tur Jūs to ieslēdzat paši. Vai Jūsu vietne jau nosūta HSTS un ar kādu max-age, varat redzēt pārlūkprogrammas izstrādātāja rīkos vai internet.nl pārbaudē (skatiet tālāk).
HSTS slēdzis DirectAdmin
DirectAdmin atveriet sadaļu Domain Setup un noklikšķiniet uz sava domēna nosaukuma. Ja ir ieslēgts Secure SSL, pie HSTS redzēsiet slēdzi Enable HTTP Strict Transport Security. Pēc tam noklikšķiniet uz Save, lai saglabātu. Kā to izdarīt soli pa solim, lasiet rakstā Apmeklētāju vienmēr pārvirzīšana uz https.
Ja Jūsu vietne jau nosūta HSTS, slēdzis Jums nav vajadzīgs. Ieslēdziet to tikai tad, ja Jūsu vietne vēl nenosūta HSTS. Iestatiet HSTS vienā vietā: DirectAdmin vai .htaccess, nevis abās. Ja pārlūkprogramma saņem divas HSTS galvenes, tā izmanto tikai pirmo.
Citas drošības galvenes
| Galvene | Pret ko aizsargā | Vērtība, ar ko sākt |
|---|---|---|
X-Content-Type-Options | Pārlūkprogramma pati sāk minēt, kas ir fails, tāpēc augšupielādēts "attēls" var tikt izpildīts kā skripts. | nosniff (vienīgā derīgā vērtība) |
Content-Security-Policy: frame-ancestors vai X-Frame-Options | Clickjacking: cita vietne neredzami ielādē Jūsu lapu rāmī, lai apmeklētāji nemanot noklikšķinātu uz Jūsu pogām. | frame-ancestors 'self' vai vecākā galvene X-Frame-Options: SAMEORIGIN |
Referrer-Policy | Noklikšķinot uz saites uz citu vietni, pārlūkprogramma nosūta iepriekšējās lapas adresi, dažreiz ar meklēšanas vārdu vai pasūtījuma numuru tajā. | strict-origin-when-cross-origin vai stingrāk same-origin vai no-referrer. Internet.nl par labām uzskata tikai stingrās vērtības. |
Permissions-Policy | Nosaka, kuras pārlūkprogrammas funkcijas drīkst izmantot Jūsu lapa un iegultie rāmji, piemēram, kameru, mikrofonu un atrašanās vietu. | camera=(), microphone=(), geolocation=() izslēdz šīs trīs funkcijas. Ja Jūsu vietne izmanto kādu no tām, izlaidiet to. |
Content-Security-Policy (pilnā) | Ierobežo, no kurienes drīkst ielādēt skriptus, stilus un attēlus. Tas ievērojami apgrūtina ievietotus ļaunprātīgus skriptus (XSS). | Pielāgojama katrai vietnei. Izvairieties no unsafe-inline, unsafe-eval un aizstājējzīmēm. |
Iestatīšana .htaccess
Ievietojiet šīs rindas faila .htaccess sākumā Jūsu domēna mapē public_html. Vispirms izveidojiet faila kopiju.
<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=()" # Tikai tad, ja Jūsu vietne vēl nenosūta HSTS (skatiet iepriekš): # Header always set Strict-Transport-Security "max-age=31536000" </IfModule>
Pievienojiet includeSubDomains tikai tad, kad esat pārliecināti, ka katram apakšdomēnam ir https. Ja izmantojat WordPress, galvenes varat iestatīt arī ar spraudni. Izvēlieties zināmu spraudni, kas joprojām tiek atjaunināts, un iestatiet katru galveni vienā vietā: spraudnī vai .htaccess.
Content-Security-Policy-Report-Only. Tā neko nebloķē, bet pārlūkprogrammas konsolē parāda, kas tiktu bloķēts. Šaubu gadījumā uzticiet to savam vietnes izstrādātājam vai sāciet tikai ar frame-ancestors.VPS ar nginx vai Caddy
VPS Jūs neizmantojat DirectAdmin un bieži arī .htaccess. Tad galvenes iestatāt sava tīmekļa servera iestatījumos. Neviens no tiem pats nenosūta HSTS vai šīs galvenes.
nginx: server blokā portam 443:
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;
Ar always galvenes tiek nosūtītas arī kļūdu lapās. Ievērojiet: ja location blokā pašā ir add_header, noteikumi no server bloka šai location vairs nav spēkā. Tad atkārtojiet tos tur vai ievietojiet atsevišķā failā, ko visur pievienojat ar include. Pārbaudiet iestatījumus ar nginx -t un ielādējiet tos ar systemctl reload nginx.
Caddy: Jūsu vietnes blokā failā 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"
}
Ielādējiet izmaiņas ar systemctl reload caddy. Par vietnes izveidi ar nginx vai Caddy skatiet VPS rokasgrāmatas rakstus nginx ar Let's Encrypt sertifikātu un Caddy: vietne ar automātisku https.
Pārbaude
- Internet.nl: ievadiet savu domēnu vietnes pārbaudē internet.nl.
- Jūsu pārlūkprogramma: atveriet savu vietni, nospiediet F12 (vai izvēlieties Pārbaudīt), atveriet cilni Tīkls, pārlādējiet lapu un noklikšķiniet uz pirmā pieprasījuma. Sadaļā Atbildes galvenes (Response Headers) redzēsiet visu, ko nosūta Jūsu serveris.
- Komandrinda:
curl -sI https://jusudomens.lv/parāda galvenes.
Pēc katras izmaiņas pārbaudiet, vai Jūsu vietne, veidlapas un maksājumu lapa joprojām darbojas. Turklāt regulāri atjauniniet savu CMS, spraudņus un tēmas. Skatiet WordPress wp-login.php aizsardzība.
Papildu informācija
- MDN: Strict-Transport-Security (angļu valodā)
- MDN: Content-Security-Policy (angļu valodā)
- MDN: Permissions-Policy (angļu valodā)
- HSTS preload saraksts (angļu valodā)
Vēlaties uzzināt vairāk? Apgūstiet bezmaksas kursu "Droši tiešsaistē uzņēmējiem", nodarbību 4.2 Jūsu vietne: https, HSTS un drošības galvenes, vai bezmaksas WordPress kursu, nodarbību 7.4 Vietnes nostiprināšana: tiesības, galvenes un drošības spraudņi.
