Pāriet uz saturu

Sīkdatņu iestatījumi

Izvēlieties, kāda veida sīkdatnes atļaujat. Savu izvēli varat jebkurā laikā mainīt sadaļā Sīkdatņu iestatījumi katras lapas apakšā. Privātuma politika

Nepieciešamās

Vienmēr ieslēgtas

Vajadzīgas, lai pieteiktos, saglabātu grozu un atcerētos Jūsu izvēles. Tās vienmēr ir ieslēgtas.

Kuras sīkdatnes?
  • weboke_sessie, weboke_klant, weboke_remember: Jūsu sesija un pieteikšanās saglabāšana
  • weboke_basket: Jūsu grozs
  • wkBtwIncl: cenu rādīšana ar PVN vai bez PVN
  • wok_cookies: Jūsu sīkdatņu izvēle, 12 mēneši

Mēra, kura reklāma noved pie apmeklējuma vai pasūtījuma, lai mēs nemaksātu par reklāmām, kas neko nedod.

Kuras sīkdatnes?
  • Google Ads ar Google Tag Manager (_gcl_au, _gcl_aw), līdz 90 dienām
  • OpenAI Ads, reklāmas ChatGPT
  • wok_aff: caur kuru partneri nonācāt pie mums (partneru programma), 60 dienas

4,6

Valsts un valoda

Katrai valstij ir sava vietne ar attiecīgās valsts cenām un PVN.

Skatīt

Caddy, HSTS un security.txt

7. modulis: Domēns, tīmekļa serveris un https · Lasīšanas laiks: 12 min.

Mācīšanās mērķis: Pēc šīs nodarbības Jūs varēsiet izmantot Caddy kā vienkāršu tīmekļa serveri ar automātisku https, iestatīt HSTS un svarīgākās drošības galvenes (Caddy un nginx), nepadarot vietni nepieejamu, un publicēt derīgu security.txt.

Pamatjēdzieni: Caddy, Caddyfile, automātisks https, reverse_proxy, file_server, header, HSTS (Strict-Transport-Security), max-age, includeSubDomains, preload, X-Content-Type-Options, frame-ancestors, Referrer-Policy, security.txt, Contact, Expires, /.well-known/

Caddy: https bez rūpēm

Nodarbībās 7.2 un 7.3 Jūs ar nginx un certbot izveidojāt vietni ar https. Tās ir divas programmas, daži faili un taimeris. Caddy to visu dara vienā: tas ir tīmekļa serveris ar iebūvētu ACME klientu. Ja konfigurācijā ir norādīts nosaukums, tas norāda uz serveri un porti 80 un 443 ir sasniedzami, Caddy pats iegūst sertifikātu, savlaicīgi to atjauno un pāradresē http uz https.

Caddy ir pieejams Debian un Ubuntu pakotņu avotā (nedaudz vecāka versija); izstrādātāji piedāvā arī savu apt avotu ar jaunāko versiju, ar savu atslēgu un Signed-By, kā nodarbībā 4.1. Modulī 9 Caddy darbojas kā konteiners Jūsu Docker pakalpojumiem (nodarbība 9.4). Šeit Jūs to izmantojat kā parastu pakalpojumu.

anna@web1:~$ sudo apt install caddy
anna@web1:~$ systemctl status caddy

Izmantojiet portos 80 un 443 vai nu nginx, vai Caddy, ne abus: portā var klausīties tikai viena programma.

Caddyfile

Konfigurācija atrodas failā /etc/caddy/Caddyfile. Statiska vietne un lietotne aiz reversā starpniekservera:

example.com, www.example.com {
	root * /var/www/example.com
	file_server
	encode zstd gzip
}

app.example.com {
	reverse_proxy 127.0.0.1:3000
}

Tas arī viss. Caddy pats klausās IPv4 un IPv6, pieprasa sertifikātus trim nosaukumiem, pāradresē http uz https un ar reverse_proxy pats nodod galvenes X-Forwarded-For un X-Forwarded-Proto (ko nginx Jūs darījāt ar roku, nodarbība 7.2).

Pārbaude un pārlādēšana notiek tāpat kā nginx:

anna@web1:~$ caddy validate --config /etc/caddy/Caddyfile
Valid configuration
anna@web1:~$ sudo systemctl reload caddy
anna@web1:~$ sudo journalctl -u caddy -f

Žurnālā (journal) redzama sertifikātu iegūšana. Ja kaut kas neizdodas, tur ir norādīts iemesls: parasti tas pats, kas ar certbot (ports 80 slēgts, nosaukums norāda citur, IPv6 nedarbojas; nodarbība 7.3).

HSTS: lai pārlūks atceras, ka tas ir https

Pāradresācijai no http uz https ir viens vājš brīdis: pats pirmais pieprasījums caur http vēl tiek sūtīts nešifrēts. Kāds tajā pašā tīklā to var pārtvert un paturēt apmeklētāju uz http. HSTS (HTTP Strict Transport Security, RFC 6797) to atrisina. Jūsu vietne caur https nosūta šo galveni:

Strict-Transport-Security: max-age=31536000

Tad pārlūks gadu (31.536.000 sekundes) atceras, ka šim nosaukumam drīkst piekļūt tikai caur https. Ja apmeklētājs vēlāk ieraksta http://, pārlūks pats to pārvērš par https, vēl pirms kaut kas tiek nosūtīts tīklā. HSTS galveni, kas saņemta caur http, pārlūks ignorē; tā ir spēkā tikai caur https.

Tam ir arī ēnas puse. Ja pārlūks ir atcerējies HSTS un redz sertifikāta kļūdu (beidzies derīgums, nepareizs nosaukums), apmeklētājs nesaņem pogu, lai tomēr turpinātu. Tad Jūsu vietne šiem apmeklētājiem ir nepieejama, līdz sertifikāts ir kārtībā. Tāpēc:

  1. Ieslēdziet HSTS tikai tad, kad https darbojas visur un atjaunošana notiek automātiski (nodarbība 7.3).
  2. Sāciet ar īsu max-age, piemēram, vienu dienu (86400), un pakāpeniski palieliniet līdz gadam.
  3. Esiet piesardzīgi ar includeSubDomains: tas attiecas uz katru apakšdomēnu, arī uz vecu apakšdomēnu ar ierīci vai pakalpojumu bez derīga sertifikāta.
  4. preload lūdz iekļaušanu sarakstā, kas ir iebūvēts pārlūkos (hstspreload.org). Tam cita starpā prasa max-age vismaz uz gadu, includeSubDomains un https visos apakšdomēnos. Izņemšana no saraksta aizņem mēnešus. Dariet to tikai tad, ja esat pārliecināti, ka viss domēns uz visiem laikiem ir https.

Citas drošības galvenes

Bez HSTS ir dažas galvenes, kas ar nelielu piepūli daudz palīdz:

GalvenePret koSākotnējā vērtība
X-Content-Type-Optionspārlūks sāk minēt, kas ir fails, tāpēc augšupielādēts "attēls" var izpildīties kā skriptsnosniff
Content-Security-Policy: frame-ancestors (vai vecākā X-Frame-Options)clickjacking: cita vietne neredzami ielādē Jūsu lapu rāmīframe-ancestors 'self' (vai X-Frame-Options: SAMEORIGIN)
Referrer-PolicyJūsu lapas adrese (ar meklēšanas vārdiem vai pasūtījumu numuriem) noplūst uz citām vietnēmstrict-origin-when-cross-origin

Pilnīga Content-Security-Policy (kādus skriptus un stilus drīkst ielādēt) ir katrai vietnei individuāls risinājums, un tā ir ārpus šī kursa; sāciet tikai ar frame-ancestors.

Caddy tās iestata ar header direktīvu vietnes blokā:

example.com, www.example.com {
	root * /var/www/example.com
	file_server
	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"
		-Server
	}
}

Caddy pats neiestata HSTS un šīs galvenes; tās Jums tiešām ir jāieraksta. -Server noņem galveni Server. Nodarbībā 9.4 Jūs tāda paša veida blokā uzdevumam iestatīsiet savu galveni X-Weboke-Cursus.

Nginx tās pašas rindas ievietojiet 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;

always nodrošina, ka tās tiek nosūtītas arī ar kļūdu lapām. Ievērojiet zināmu nginx slazdu: ja location blokā pašā ir kaut viena add_header, tad server bloka add_header rindas šai location vairs nav spēkā. Tāpēc vienmēr pārbaudiet rezultātu:

anna@laptop:~$ curl -sI https://example.com | grep -iE 'strict|nosniff|frame|referrer'
strict-transport-security: max-age=31536000
x-content-type-options: nosniff
content-security-policy: frame-ancestors 'self'
referrer-policy: strict-origin-when-cross-origin

security.txt: kā kāds var Jums ziņot par ievainojamību

Pieņemsim, ka kāds atrod ievainojamību Jūsu serverī, piemēram, atvērtu mapi vai novecojušu pakalpojumu. Kā šī persona zina, kuru brīdināt? Tam ir security.txt (RFC 9116): neliels teksta fails noteiktā vietā, https://<jouwdomein>/.well-known/security.txt.

Contact: mailto:security@example.com
Expires: 2027-10-31T23:00:00Z
Preferred-Languages: nl, en
Canonical: https://example.com/.well-known/security.txt

Noteikumi:

  • Contact ir obligāts: mailto:, https:// vai tel: adrese, uz kuru nonāk ziņojumi. Izmantojiet adresi, kuru kāds arī tiešām lasa.
  • Expires ir obligāts un drīkst parādīties tikai vienu reizi: datums, pēc kura fails uzskatāms par novecojušu. RFC iesaka datumu gada laikā. Tā nepaliek fails ar sen aizmirstu adresi. Ierakstiet savā kalendārā, kad tas jāpagarina.
  • Preferred-Languages, Canonical un Policy (saite uz Jūsu ziņošanas politiku) nav obligāti.
  • Failam jābūt pieejamam caur https, kā vienkāršam tekstam (text/plain, UTF-8). Vecā vieta /security.txt ir pieļaujama papildus, taču /.well-known/ ir prioritāra.

Ievietošana statiskai vietnei:

anna@web1:~$ sudo mkdir -p /var/www/example.com/.well-known
anna@web1:~$ sudoedit /var/www/example.com/.well-known/security.txt
anna@laptop:~$ curl -sI https://example.com/.well-known/security.txt | grep -i content-type
content-type: text/plain; charset=utf-8

Ja nginx izmantojat drošības tīklu location ~ /\. { deny all; } no nodarbības 7.2, ievietojiet pirms tā izņēmumu: location ^~ /.well-known/ { }. Lietotnei aiz reversā starpniekservera Caddy var novirzīt ceļu /.well-known/security.txt uz failu ar handle bloku un file_server.

Bieža kļūda: vietne vai lietotne, kas uz katru nezināmu ceļu atbild ar sākumlapu un statusu 200. Tad security.txt "eksistē", taču tas ir HTML. Tāpēc pārbaudiet arī saturu.

AlmaLinux un Rocky Linux

Tur Caddy iegūst no izstrādātāju avota vai no EPEL/COPR. Tāpat kā ar nginx, SELinux ir jāatļauj reversais starpniekserveris (setsebool -P httpd_can_network_connect 1). Caddyfile un galvenes ir tādas pašas.

Kopsavilkums

  • Caddy pats pārvalda sertifikātus, atjaunošanu un pāradresāciju uz https; reverse_proxy pats nodod pareizās galvenes.
  • HSTS liek pārlūkiem atcerēties, ka Jūsu vietne ir tikai https; palieliniet max-age pakāpeniski, esiet piesardzīgi ar includeSubDomains un ļoti piesardzīgi ar preload.
  • Papildus iestatiet X-Content-Type-Options: nosniff, frame-ancestors 'self' un Referrer-Policy; Caddy ar header, nginx ar add_header ... always, un pārbaudiet ar curl -I.
  • security.txt atrodas /.well-known/security.txt, caur https, kā vienkāršs teksts, ar obligātu Contact un vienu Expires gada laikā.

Tests (quiz)

1. Kāpēc HSTS palīdz, ja Jūs jau pāradresējat http uz https?



2. Jūs iestatāt HSTS ar max-age=31536000; includeSubDomains. Pēc nedēļas izrādās, ka camera.example.com nav derīga sertifikāta. Ko pamana apmeklētāji, kuri Jūsu vietni ir apmeklējuši iepriekš?



3. Kuri lauki security.txt ir obligāti?



4. Nginx Jūs esat ievietojuši drošības galvenes server blokā, taču /api/ tās netiek nosūtītas. Blokā location /api/ ir viena sava add_header. Kas notiek?



5. Kas Jums jādara, pirms pievienojat preload savai HSTS galvenei?



Uzdevums

Uzdevums Z7.4: HSTS, galvenes un security.txt. Iestatiet savai vietnei HSTS (vismaz 180 dienas, kad https kādu laiku ir labi darbojies), X-Content-Type-Options: nosniff un frame-ancestors 'self' (vai X-Frame-Options) un publicējiet security.txt ar Contact un Expires gada laikā. Ievadiet savu resursdatora nosaukumu. Programma ielādē https://<hostnaam>/ un pārbauda galvenes, kā arī ielādē https://<hostnaam>/.well-known/security.txt un pārbauda laukus. Tā nesaglabā neko, izņemot rezultātu un Expires datumu.

Uzdevums Z7.4: HSTS, galvenes un security.txt

Tikai pieteiktiem kursa dalībniekiem. Mēs ielādējam https://<naam>/ un /.well-known/security.txt (tikai GET).




To, ko ievadāt, un to, ko atrodam, mēs nesaglabājam. Jūsu pārlūkprogramma atceras Jūsu atbildes un to, vai esat izpildījuši uzdevumu. Ja esat pieteikušies, sadaļā Mani kursi saglabājam tikai to, ka uzdevums bija (gandrīz) pareizs; tur to varat arī dzēst.

Vairāk lasīt

Lūdzu, uzgaidiet…

Iestatiet savus domēnus

Katram domēnam norādiet vārdu serverus, piesaisti hostingam un to, kurš būs turētājs.

Ielādē Jūsu domēnus…