Modul 4 · 4.2
Az Ön weboldala: https, HSTS és biztonsági fejlécek
Modul 4: E-mail, weboldal és domain · Olvasási idő: 11 perc
Tanulási cél: E lecke után képes lesz ellenőrizni weboldala alapvető védelmét: érvényes tanúsítvány, https-re irányítás, HSTS megfelelő max-age értékkel, a legfontosabb biztonsági fejlécek, valamint a CMS frissítése.
Kulcsfogalmak: TLS-tanúsítvány, https, https-re irányítás, HSTS, max-age, includeSubDomains, preload, HTTP-fejléc, Content-Security-Policy, X-Content-Type-Options, frame-ancestors, X-Frame-Options, Referrer-Policy
Mi történik, amikor valaki megnyitja az Ön weboldalát
Ha egy ügyfél beírja a example.com címet a címsorba, a böngésző lekéri az oldalt az Ön webszerveréről. Ez a kommunikáció HTTP-n keresztül zajlik. A https esetén ezt egy titkosított kapcsolat veszi körül: a TLS. Ehhez a weboldalnak TLS-tanúsítványra van szüksége (gyakran még mindig SSL-tanúsítványnak nevezik). A tanúsítvány igazolja, hogy a szerver valóban a example.com domainhez tartozik, a titkosítás pedig biztosítja, hogy útközben senki ne olvashassa el vagy módosíthassa az adatokat. Ez különösen fontos nyilvános wifi esetén, ahol nem tudni, ki kezeli a hálózatot (5.3. lecke).
Minden válasszal együtt a szerver az oldal tartalma mellett egy sor fejlécet is küld: rövid sorokat, amelyek információt és utasításokat tartalmaznak a böngésző számára. Ezek nem jelennek meg a képernyőn, de nagyban meghatározzák, hogy a böngésző mennyire biztonságosan kezeli az Ön oldalát. Ezeknek egy része biztonsági fejléc. Ebben a leckében végignézzük a négy réteget: tanúsítvány, átirányítás, HSTS és fejlécek. Ezután röviden kitérünk magának a weboldalnak a frissítésére is.
1. réteg: érvényes tanúsítvány
Egy tanúsítvány akkor rendben van, ha három feltételnek megfelel:
- nem járt le;
- egy megbízható kibocsátó adta ki (olyan hitelesítésszolgáltató, amelyet a böngészők ismernek, például a Let's Encrypt vagy egy kereskedelmi szolgáltató);
- pontosan arra a névre érvényes, amelyet a látogató megnyit:
example.coméswww.example.comis, ha mindkettőt használja.
Manapság szinte minden tárhelyszolgáltató automatikusan intézi az ingyenes, önmagát megújító tanúsítványt. Ha mégis probléma van, az rendszerint azért, mert a domain egy másik szerverre mutat, vagy mert egy CAA-rekord blokkolja a kibocsátót (4.3. lecke).
Fontos tudni: a lakat ikon semmit nem mond az oldal megbízhatóságáról. Csak azt jelenti, hogy a kapcsolat titkosított, és hogy a tanúsítvány a címsorban szereplő névhez tartozik. A mijnbank-veilig.example típusú adathalász oldalaknak is éppúgy lehet lakat ikonjuk. Ezért tanulja meg a 3.2. leckében a domain nevek elolvasását.
2. réteg: mindig irányítson https-re
Önmagában a tanúsítvány nem elég. Aki megnyitja a http://example.com címet, például egy régi link miatt vagy mert csak a nevet gépelte be, azt automatikusan a https változatra kell irányítani. Ezt nevezik átirányításnak (redirect, általában 301-es státuszkóddal).
A helyes sorrend a következő:
http://example.com -> https://example.com
https://example.com -> https://www.example.com (csak ha a www-t használja fő címként)
http://www.example.com -> https://www.example.comFigyeljen az első sorra: a http-ről először ugyanarra a névre irányítson https-re, és csak utána, ha szükséges, a www-re. Így a böngésző a csupasz név HSTS-utasítását is megkaphatja. Az internet.nl pontosan ezt ellenőrzi.
Gyakori hiba a dupla átirányítás: egyszerre a tárhelypanelben és egy pluginban vagy a .htaccess fájlban. Ez végtelen hurkot okozhat ("túl sok átirányítás"). Használjon egyetlen helyet erre.
3. réteg: HSTS
Az átirányításnak van egy gyenge pontja: a legelső kérés még titkosítatlanul, http-n keresztül megy. Egy ugyanazon a hálózaton lévő támadó elfoghatja ezt az egyetlen kérést, és a látogatót egy hamisított, titkosítatlan verzión tarthatja. Erre szolgál a HSTS (HTTP Strict Transport Security, RFC 6797).
A HSTS-sel az oldala https-en keresztül egy fejlécet küld:
Strict-Transport-Security: max-age=31536000; includeSubDomainsA böngésző ekkor megjegyzi: "ezt az oldalt kizárólag https-en keresztül nyissa meg, a következő 31 536 000 másodpercig (egy évig)". Ha a látogató később beírja a http://example.com címet, a böngésző maga alakítja át https-re, még mielőtt bármi elindulna a hálózaton. A gyenge pontot jelentő első kérés így kiesik.
| Elem | Jelentés |
|---|---|
max-age= | Meddig jegyzi meg a böngésző, másodpercben. Az internet.nl legalább egy évet (max-age=31536000) tekint megfelelőnek; egy rövid időszak nem védi azokat, akik csak ritkán látogatják az oldalát. |
includeSubDomains | Minden aldomainre is érvényes, például shop.example.com és mail.example.com. |
preload | Ezzel kérheti, hogy felkerüljön a böngészőkbe beépített listára (hstspreload.org). Így még a legelső látogatás is védett. Követelmények: többek között legalább egyéves max-age, includeSubDomains, és minden aldomain https-en fusson. A listáról való levétel sokáig tart. |
max-age=0 | Törli a megjegyzett utasítást. |
Három dolgot érdemes tudnia, mielőtt bekapcsolja a HSTS-t:
- Először mindenhol működnie kell a https-nek. Egy böngésző, amely megjegyezte a HSTS-t és tanúsítványhibát észlel, nem ad lehetőséget a látogatónak, hogy mégis folytassa (RFC 6797, 12.1. szakasz). Ha lejár a tanúsítványa, vagy nem megfelelő a
wwwalcímre, az oldala elérhetetlen lesz ezeknek a látogatóknak, amíg meg nem oldja a problémát. - Az
includeSubDomainsmindent érint a domain alatt. Egy régi, tanúsítvány nélküli aldomain, például egy nyomtató vagy kamera oldala acamera.example.comcímen, ezután nem lesz megnyitható. - Fokozatosan építse fel. Kezdje rövid
max-ageértékkel (például egy nap), ellenőrizze, hogy minden működik, majd lépésenként emelje egy évig. Minden lépésnél várja ki a teljes időszakot.
Egy sima http-n érkező HSTS-fejlécet a böngésző figyelmen kívül hagy. Ezt tehát csak a https-válaszban látja.
4. réteg: biztonsági fejlécek
A HSTS mellett van néhány fejléc, amely megmondja a böngészőnek, mit tehet és mit nem az Ön oldalaival. Nem szükséges mindegyiket tökéletesen beállítani, de az első három egyszerű és kockázatmentes.
| Fejléc | Mi ellen védekezik | Megfelelő érték |
|---|---|---|
X-Content-Type-Options | A böngésző maga próbálja kitalálni, milyen típusú fájlról van szó, így egy feltöltött "kép" szkriptként is futtatható lehet. | nosniff (az egyetlen érvényes érték) |
Content-Security-Policy: frame-ancestors ... vagy X-Frame-Options | Clickjacking: egy másik oldal láthatatlanul betölti az Ön oldalát egy frame-be, és a látogatókat anélkül kattintatja az Ön gombjaira, hogy észrevennék. | frame-ancestors 'self' vagy 'none'; a régebbi fejléc X-Frame-Options: SAMEORIGIN vagy DENY |
Referrer-Policy | Ha a látogató egy másik oldalra kattint, a böngésző elküldi az előző oldal címét is. Ebben érzékeny információ is lehet, például egy keresési kifejezés vagy egy rendelésszám. | no-referrer vagy same-origin (szigorú), strict-origin-when-cross-origin (bevett gyakorlat, az internet.nl ennél figyelmeztetést ad) |
Content-Security-Policy (teljes) | Korlátozza, honnan tölthetők be szkriptek, stílusok és képek. Jelentősen megnehezíti a beágyazott kártékony szkripteket (XSS). | Egyedi beállítás oldalanként. Kerülje az unsafe-inline, unsafe-eval és a helyettesítő karakterek (wildcard) használatát. |
A teljes Content-Security-Policy a leghatékonyabb, de egyben a legbonyolultabb is: egy túl szigorú szabály tönkreteheti a statisztikáit, a fizetési gombját vagy a chatablakát. A Content-Security-Policy-Report-Only változattal előre felmérheti, mi kerülne blokkolásra, anélkül, hogy bármit elrontana. Ezt bízza inkább a weboldalát készítő szakemberre, vagy kezdje csak a frame-ancestors-szal.
A fejlécek saját kezű ellenőrzése
Nyissa meg az oldalát egy böngészőben, nyomja meg az F12 billentyűt (vagy válassza a "Vizsgálat" lehetőséget), lépjen a Hálózat fülre, töltse be újra az oldalt, és kattintson az első kérésre. A "Válaszfejlécek" (Response Headers) alatt látja mindazt, amit a szerver elküld. Parancssorból is megteheti:
curl -sI https://example.com/Maga a weboldal: CMS, pluginok és sablonok
A legjobb fejlécek sem segítenek, ha az oldal mögötti szoftver sebezhető. A kisvállalkozások feltört oldalainak többsége nem a webszerveren keresztül esett áldozatul, hanem egy elavult plugin, egy évek óta nem frissített sablon, vagy egy gyenge rendszergazdai jelszó miatt.
- Kapcsolja be az automatikus frissítéseket a CMS-éhez (például WordPress, Joomla vagy egyéb rendszer), és a pluginoknál, ahol ez lehetséges.
- Távolítsa el azokat a pluginokat és sablonokat, amelyeket nem használ; a letiltás nem elég, a fájlok ettől még megmaradnak.
- A rendszergazdai bejelentkezéshez használjon erős, egyedi jelszót és kétlépcsős azonosítást (2. modul), és korlátozza a bejelentkezési próbálkozások számát.
- Tartsa a csomagja PHP-verzióját (vagy más programnyelvi verzióját) olyan verzión, amely még kap frissítéseket (5.1. lecke).
A gyakorlatban: így néz ki
A DirectAdminben, azaz a WebOké által használt vezérlőpultban, a domainjénél először kapcsolja be a Biztonságos SSL beállítást, majd az SSL kényszerítése HTTPS-átirányítással opciót. Ugyanitt található egy kapcsoló a HSTS-hez; ezt csak akkor kapcsolja be, ha a tanúsítvány minden névre megfelelően működik. Más szolgáltatóknál hasonlóan működik, vagy a CMS beállításaiban intézheti.
Ha az oldala Apache-on vagy LiteSpeeden fut, a fejléceket a .htaccess fájlban is beállíthatja:
<IfModule mod_headers.c>
Header always set Strict-Transport-Security "max-age=31536000"
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"
</IfModule>Az includeSubDomains beállítást csak akkor adja hozzá, ha biztos benne, hogy minden aldomain rendelkezik https-sel. Minden módosítás után ellenőrizze az internet.nl weboldalteszttel vagy a böngészője fejlesztői eszközeivel.
Összefoglalás
- A lakat ikon azt jelenti: titkosított és a megfelelő névre érvényes. Nem azt jelenti: megbízható.
- A http-t mindig irányítsa https-re, először ugyanarra a névre, és egyetlen helyen tegye ezt meg.
- A HSTS-sel a böngésző megjegyzi, hogy az oldala csak https-en keresztül érhető el; az internet.nl legalább egyéves (31536000)
max-ageértéket tekint megfelelőnek. Csak akkor kapcsolja be, ha a https mindenhol működik, és fokozatosan építse fel. - Az
X-Content-Type-Options: nosniff, aframe-ancestors(vagyX-Frame-Options) és aReferrer-Policyegyszerűen beállítható; a teljes Content-Security-Policy egyedi munkát igényel. - A CMS-e, a pluginok és a sablonok frissítése legalább olyan fontos, mint a fejlécek.
Kvíz
Feladat
A4.2 feladat: Https, HSTS és a weboldal fejlécének ellenőrzése. Adja meg weboldala domain nevét (ha nincs ilyenje, használja az internet.nl címet). A program megnyitja a domainje http:// és https:// változatát, és ellenőrzi a tanúsítványt, a https-re irányítást, a HSTS-t és a biztonsági fejléceket. Pontonként zöld, narancssárga vagy piros jelzést kap magyarázattal.
D4.2 feladat: A weboldal frissítése és rendbetétele. Jelentkezzen be weboldala kezelőfelületére, ellenőrizze a CMS, a pluginok és a sablonok verzióját, távolítsa el, amit nem használ, és kapcsolja be az automatikus frissítéseket, ahol lehetséges. Pipálja ki az ellenőrzőlistát, és válaszoljon a reflexiós kérdésre.
D4.2. feladat: A weboldal frissítése és rendbetétele
Így kezdjen hozzá: (1) Jelentkezzen be a weboldala kezelőfelületére (vagy kérje meg a webfejlesztőjét, hogy együtt tegyék meg ezt). (2) Jegyezze fel a CMS verzióját, és nézze meg, vannak-e elérhető frissítések. (3) Készítsen biztonsági mentést (6. lecke, 6.1. rész), telepítse a CMS, a bővítmények és a sablonok frissítéseit. (4) Távolítsa el a nem használt bővítményeket és sablonokat. (5) Kapcsolja be az automatikus frissítéseket, ahol lehetséges. (6) Ellenőrizze, milyen rendszergazdai fiókok léteznek, és törölje azoknak a fiókjait, akik már nem dolgoznak Önnél. (7) Kapcsolja be a kétlépcsős azonosítást minden rendszergazdai fiókhoz.
A pipái és jegyzetei csak ebben a böngészőben maradnak meg, sehova nem küldjük el őket. Ha bejelentkezett, a Fiókomban csak azt tároljuk, hogy elvégezte a feladatot.
Bővebben olvasva
A WebOké-cikkekben szereplő lépések a WebOké környezetére vonatkoznak; más szolgáltatóknál hasonlóan működik.
- SSL-tanúsítvány aktiválása, megújítása és a problémák megoldása
- Látogatók kötelező átirányítása https-re
- DirectAdmin útmutató 6.4: Látogatók átirányítása https-re
- DirectAdmin útmutató 6.7: Nincs lakat ikon vagy "nem biztonságos" felirat: vegyes tartalom megoldása
- DirectAdmin útmutató 15.10: Web Applikációs Tűzfal
- A WordPress wp-login.php védelme
- Internet.nl, weboldalteszt (független): https://internet.nl
- RFC 6797, HTTP Strict Transport Security: https://www.rfc-editor.org/rfc/rfc6797
- HSTS-preload lista: https://hstspreload.org
- MDN, a fejlécek magyarázata (angolul): https://developer.mozilla.org/en-US/docs/Web/HTTP/Reference/Headers/Strict-Transport-Security
