HSTS (HTTP Strict Transport Security)

botond küldte be 2023. 01. 09., h – 06:35 időpontban

Tartalom

 

Ismertető

A HSTS (HTTP Strict Transport Security) egy olyan irányelv-mechanizmus, amely segít megvédeni a webhelyeket a közbeékelődő (man-in-the-middle) támadásoktól, mint például a protokoll visszaminősítésétől (protocol downgrade) vagy a cookie-k eltérítésétől. Lehetővé teszi a webhelyek számára, hogy megköveteljék a webböngészőktől (és az egyéb webes kliens alkalmazásoktól), hogy automatikusan csak a HTTPS kapcsolatokat használják, amik az SSL/TLS segítségével erős titkosítást valósítanak meg. A HSTS egy 2012-es IETF szabvány, amit az RFC 6797 határoz meg.

A HSTS-házirendet a szerver a "Strict-Transport-Security" nevű HTTP-válasz fejlécmezőn keresztül közli a kliens programmal. A HSTS meghatároz egy időtartamot is, amely alatt a kliensprogramok csak biztonságos módon kapcsolódhatnak a kiszolgálóhoz. A HSTS-t használó webhelyek gyakran nem fogadják el az egyszerű szöveges módú HTTP csatlakozásokat, ezért vagy elutasítják azokat, vagy a felhasználókat szisztematikusan HTTPS-re irányítják át (bár ezt a specifikáció nem írja elő). Ennek az a hátránya, hogy a HTTPS-t nem támogató kliensek nem tudnak csatlakozni a webhelyhez. Persze az idő előrehaladtával ezeknek az eszközöknek a száma csökken.

A védelem csak akkor érvényes, ha a felhasználó az első használatkor a bizalom elvére támaszkodva legalább egyszer már felkereste az oldalt. Ez a védelem úgy működik, hogy ha egy felhasználó egy olyan URL-t tölt be, amely sima HTTP-vel van megadva, de a kiszolgálón eközben HSTS van beállítva, akkor a kliens automatikusan HTTPS-re frissít, anélkül, hogy egyetlen HTTP-kérést is elküldene. Ez megakadályozza a HTTP-köztes támadás előfordulását. Feltéve, ha a látogató már egyszer járt azon a webhelyen, és a böngészője már megjegyezte a HSTS meglétét, és annak időtartamát az adott webhelyre vonatkozóan. Ezeket a webhelyeket a böngésző beállításaiban lehet kezelni. Chrome esetén például a chrome://net-internals/#hsts belső url címet betöltve lehet kezelni ezeket az eltárolt webcímeket.

A HSTS további védelmet nyújt a webhelyek tanúsítványának érvényességével kapcsolatban is. Például amennyiben egy böngésző egy már ismert HSTS-t alkalmazó webhelyre látogat el, aminek éppen nem érvényes a tanúsítványa, akkor a böngésző megszakítja a kapcsolatot, és nem engedi a felhasználót a webhely meglátogatására.

 

 

Fejléc definíciók

A HSTS fejléc az alábbi módokon definiálható a webkiszolgálók beállításaiban:

Alap

A HSTS legegyszerűbb fejlécbeállítása:

Strict-Transport-Security: max-age=31536000

A webkiszolgáló beállítás jelzi a klienseknek, hogy a látogatástól számított 31536000 másodpercen keresztül, azaz - jelen esetben - egy éven keresztül alapértelmezetten HTTPS kapcsolaton csatlakozzon az adott webhelyhez, amennyiben ezen az időtartamon belül ismét látogatásra kerül sor.

Aldomain

A beállítás ugyanazt csinálja, mint az első, csak ezen felül még belefoglalja a webhelyen elérhető aldomaineket is:

Strict-Transport-Security: max-age=31536000; includesubdomains

Így például ha mondjuk egy webhelynek több nyelvi aldomainje van, akkor azok is automatikusan belefoglalásra kerülnek ebbe a definícióba.

Preload

A preload (előtöltés) opció megadása:

Strict-Transport-Security: max-age=31536000; includesubdomains; preload

Van HSTS előtöltés is, ami azt jelenti, hogy webhely és/vagy domain egy jóváhagyott HSTS-listára kerül, amely ténylegesen be van építve a böngészőbe. A Google hivatalosan összeállítja ezt a listát, és a Chrome, a Firefox, az Opera, a Safari, az IE11 és az Edge használja. Ez a lista itt tekinthető meg webhely keresési funkcióval:

A listára természetesen csak azok a webhelyek kerülnek fel, amelyek megfelelnek minden HSTS követelménynek. Ilyenek például az alábbiak lehetnek:

  • A fenti HSTS beállításnak jelen kell lennie a HTTP fejlécek között, és tartalmaznia kell az "includesubdomains" és a "preload" beállításokat is
  • A domain névre kiállított érvényes tanúsítvány láncnak kell lennie
  • A webhely minden forgalmának HTTPS-re kell lennie átirányítva, azaz:
  • A weboldal nem tartalmazhat nem biztonságos (sima HTTP) átirányításokat önmagára
  • Minden aldomainnek HTTPS kapcsolaton kell kommunikálnia
  • A max-age értéknek minimum 31536000-nak kell lennie, azaz legalább 1 évnek.

Ha egy webhely felkerül erre a preload listára, akkor annak SEO szempontból is lehet némi pozitív hatása.

 

Korlátok

A legelső lekérés védtelen marad az aktív támadásokkal szemben, ha sima HTTP kapcsolattal történik a csatlakozás, vagy ha a kezdeti kérelem URL címét egy nem biztonságos csatornán szerezték be. Ugyanez vonatkozik a meghirdetett HSTS Policy max-age-ban meghatározott tevékenységi időszak utáni első kérésre (a webhelyeknek legalább 1 éves időszakot kell beállítaniuk).

A HSTS nem hatékony a DNS-alapú támadásokkal szemben, mert ilyenkor lehetőség nyílik arra, hogy egy Man-in-the-Middle adatcsomag elfogó olyan mesterséges tartományból származó forgalmat szolgáltasson ki, amely nem szerepel a HSTS Preload listán, amit DNS-hamisítási támadások tehetnek lehetővé. Vagy egyszerűen egy olyan domain név is lehet veszélyforrás, amely félrevezető módon hasonlít a valódi domain névre, például www.example.org a www.example.com helyett.

 

 

Címkék