Tartalom
Bevezető
A HSTS fejléc használatával nagyobb biztonságban tudhatjuk weboldalainkat a man-in-the-middle típusú támadásokkal szemben. Ebben a rövid leírásban megnézzük hogyan állíthatjuk be ezt a HTTP fejlécet Apache alapú LAMP, vagy ISPConfig szerverkörnyezetünkben.
Előfeltételek
A HSTS fejléc használatához be kell kapcsolni a headers Apache modult. Összetettebb szervereken ez már a telepítés során bekapcsolásra került, de ha például csak egy egyszerűbb LAMP szerverünk van, akkor az alábbi parancsokkal kapcsolhatjuk be:
sudo a2enmod headers
sudo systemctl restart apache2
HSTS beállítása
A HSTS fejlécet könnyen beállíthatjuk, legyen szó egyszerű LAMP szerverről, vagy összetettebb ISPConfig-os szerverkörnyezetről.
Beállítás LAMP szerveren
A beállítás elvégzéséhez lépjünk be root-ként, majd lépjünk be az alábbi könyvtárba:
cd /etc/apache2/sites-available/
majd nyissuk meg a beállítandó weboldalunkhoz tartozó .vhost végződésű virtualhost fájlt ebben a könyvtárban:
nano xxxx.vhost
Ezután keressük meg az alábbi szakaszt:
<VirtualHost *:443>
[...]
</VirtualHost>
És ebbe tegyük bele az alábbi sorokat:
<IfModule mod_headers.c>
Header always add Strict-Transport-Security "max-age=31536000; includeSubDomains; preload"
</IfModule>
HTTPS átirányítás
Vegyük figyelembe, hogy a fenti beállítás (a *:443 -as részen belül) csak a HTTPS virtualhost esetén lép érvénybe, tehát amikor valaki eleve HTTPS protokollal kapcsolódik. Ezért még le kell védenünk a sima HTTP virtualhost részt is, hogy már az első csatlakozás is biztonságos legyen még akkor is ha valaki a kódolatlan HTTP protokollon próbálna csatlakozni.
Erre a legjobb módszer, ha beállítunk egy átirányítást HTTPS-re.
Itt most keressük meg a HTTP (*:80) virtualhost blokkot:
<VirtualHost *:80>
[...]
</VirtualHost>
És ebbe a részbe tegyük bele valahova az alábbi sorokat:
RewriteEngine On
RewriteCond %{HTTPS} off
RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI} [R=301,L,NE]
Ezzel a sima, szöveges alapú HTTP kapcsolódást is kivédtük.
Ha mindennel megvagyunk, indítsuk újra az Apache-ot:
systemctl restart apache2
Ezzel készen is volnánk a LAMP szerveren.
Beállítás ISPConfig kezelőpanelen
Az ISPConfig beállításához itt a Debian 10 (Buster) tökéletes szervert használom bemutatásra, mivel ezen van egy működő webfiók, így nem kell különösebb előkészület a beállítás elvégzéséhez.
A beállításhoz lépjünk be adminként a kezelőpanelbe, majd lépjünk a Weboldalak (Sites) főmenübe. Itt válasszuk ki a beállítani kívánt weboldalunkat:
Itt menjünk az Options fülre, majd gögessünk le az űrlap aljára:
Majd itt az Apache direktívák mezőbe a képen látható módon illesszük be az alábbi részt:
<IfModule mod_headers.c>
Header always add Strict-Transport-Security "max-age=31536000; includeSubDomains; preload"
</IfModule>
Ezután mentsük le.
Direktíva sablon beállítása
Ha sok weboldalt üzemeltetünk, akkor az ilyen beállításokat célszerűbb beállítani direktíva sablonként (directive snippet), aminek a lényege, hogy egy helyen tároljuk magát a beállítást, és a weboldalak egyéni beállító részein csak beszúrjuk a beállításhoz társított sablont (snippet-et). Ehhez lépjünk a Rendszer főmenübe, és ott válasszuk ki a bal hasáb menüjéből a "Directive snippets" menüpontot, majd adjunk hozzá egy új tételt:
Itt adjunk nevet a sablonunknak, például "HSTS Header", Típusnak válasszuk az Apache-ot (alapértelmezett), majd a Snippet mezőbe tegyük be a fentebb már említett három soros kódrészletünket, majd mentsük le. Ezután ha visszamegyünk a weboldal bállításaiba, ahol korábban már beállítottuk ezt a kódtöredéket, akkor ott már megjelenik a "Available Apache Directive Snippets:" sor alatt a beállított "HSTS Header" beállításunk is link formájában:
Ha itt rákattintunk erre a [HSTS Header] linkre, akkor beilleszti a lementett kódrészt a mezőbe. Így ha később egy új weboldalt veszünk fel a kezelőpanelbe, akkor nem kell keresgélni a beállítandó dolgokat, hanem csak innen beszurkálhatjuk a korábban már sablonként lementett szükséges kódrészleteinket.
HTTPS átirányítás
A HSTS egyik gyenge pontja, hogy a legelső látogatás során nem nyújt védelmet. Ezért hogy már az első látogatás során is a biztonságos HTTPS kapcsolattal csatlakozzanak a látogatóink kapcsoljuk be a HTTPS átirányítást - amennyiben még ezt nem tettük meg korábban.
Ehhez lépjünk vissza a weboldal beállításaihoz, és itt most válasszuk az Átirányítás (Redirect) fület:
És itt állítsuk be a "Rewrite HTTP to HTTPS" opciót, ahogy a képen is látható. Majd mentsük le.
Ezekkel a beállításokkal tehát kizárjuk, hogy bárki is a kódolatlan, szöveges alapú elavult HTTP kapcsolaton csatlakozzon webhelyünkhöz.
Ellenőrzés, tesztelés
Munkánk eredményességét kétféle módon is ellenőrizhetjük.
Ellenőrzés a böngészőben
Ezt valamennyi böngészőben megtehetjük, én itt most a Chrome-ban mutatom meg hogyan ellenőrizhetjük a beállított HTTP fejlécünket.
A korábbi beállítások végeztével töltsük be a weboldalt, vagy frissítsünk rá, hogy érvényesüljenek a beállítások. Majd a weboldalon bárhol kattintsunk jobb egérgombbal, majd az előugró menüben válasszuk ki lent a "Vizsgálat" opciót:
Itt kattintsunk a Hálózat fülre, ekkor lent kiírja, hogy a hálózati tevékenység rögzítéséhez frissítsük az oldalt. Nyomjunk egy CTRL+R billentyűkombinációt, vagy egy F5-öt.
Ezután betöltődnek az oldal részei:
Itt kattintsunk az első (Név) oszlop tetszőleges cellájára, ekkor betöltődnek a tételhez tartozó URL kérés és válasz fejléc adatok:
Itt görgessünk lefele addig, amíg meg nem találjuk a beállított HSTS fejlécünket:
Tesztelés webes szolgáltatással
A másik lehetőség a HSTS HTTP fejléc ellenőrzésére ha kipróbáljuk egy erre készített webes ellenőrző oldalon. Sok ilyen oldal van, ebben a példában az alábbi webes ellenőrző rendszert próbáljuk ki:
https://geekflare.com/tools/hsts-test
Ide ha beírjuk a domain nevünket, akkor kiadja az eredményt. Természetesen itt csak az internet felől is elérhető weboldalakat tesztelhetjük, így itt most a linuxportal.info domaint nézzük meg:
Ha pedig lejjebb görgetünk, akkor a pontos fejléc beállítás is megjelenik:
Konklúzió
A HSTS HTTP fejléc beállítása nem bonyolult, és cserében nagyobb fokú védelmet kínál mind a weboldalaink, mind a látogatóink számára.
- A hozzászóláshoz regisztráció és bejelentkezés szükséges
- 212 megtekintés