Képzeld el a következő helyzetet: reggel felkelsz, kezedben a kávéddal leülsz a gép elé, hogy ránézz a WordPress weboldaladra, és a szíved a torkodban dobog. Valami nagyon nem stimmel. Kizártak a saját honlapodról, az admin felület elérhetetlen, a látogatóid pedig arról panaszkodnak, hogy furcsa, idegen oldalakra irányítja át őket a rendszered, mert a honlapodat feltörték.
Ez a forgatókönyv naponta több ezer alkalommal játszódik le az interneten sajnos. Sok esetben a probléma forrása egyetlen, gyakran elhanyagolt fájlra, a wp-config.php-re, és a benne lapuló biztonsági kulcsokra és sókra (keys and salts) vezethető vissza. (A „salt” szót most sónak fogom fordítani, mert erre nincs külön szavunk.)
A WordPress kulcsok
Amikor telepítetted a WordPress-t, a rendszer automatikusan hozzáadott nyolc rejtélyesnek tűnő sort a wp-config.php fájlodhoz. Ezeket:
define( 'AUTH_KEY', '...' );
define( 'SECURE_AUTH_KEY', '...' );
define( 'LOGGED_IN_KEY', '...' );
define( 'NONCE_KEY', '...' );
define( 'AUTH_SALT', '...' );
define( 'SECURE_AUTH_SALT', '...' );
define( 'LOGGED_IN_SALT', '...' );
define( 'NONCE_SALT', '...' );
A legtöbb weboldal tulajdonos szimplán átsiklik felettük, mintha ott sem lennének. Pedig ez a nyolc sor a honlapod láthatatlan őrző-védő szolgálatának fontos elemei: minden felhasználói munkamenetet, minden bejelentkezési kísérletet és minden (technikai szempontból) űrlapbeküldést ők azonosítanak.
Mit csinálnak valójában?
A WordPress négy biztonsági kulcsot (key) és négy „sót” (salt) használ. Ezek együttesen dolgoznak azon, hogy a honlapodnál bejelentkezésed biztonságosan működjön.
A biztonsági kulcsok:
- AUTH_KEY: Ez védi a bejelentkezési hitelesítő sütiket (cookie-kat). Gyakorlatilag ez bizonyítja, hogy valóban az a felhasználó vagy, akinek mondod magad.
- SECURE_AUTH_KEY: Az SSL/HTTPS admin munkameneteket védi, blokkolva az úgynevezett „man-in-the-middle” (közbeékelődéses) támadásokat.
- LOGGED_IN_KEY: Ez felelős azokért a munkamenet sütikért, amik bejelentkezve tartanak téged a rendszerben.
- NONCE_KEY: Egyszer használatos tokeneket (nonce-okat) generál, ami megvédi az űrlapjaidat és az URL-eket a CSRF támadásoktól.
Mik azok a sók (salts)? Képzeld el úgy, mint egy kis extra nehezítést, növelést a titkosítási folyamatban. Minden biztonsági kulcsnak megvan a maga párja (például az AUTH_KEY-hez tartozik az AUTH_SALT). Amikor a WordPress titkosít egy adatot, összekombinálja a kulcsot a sóval, így egy teljesen egyedi, megjósolhatatlan azonosítót hoz létre, így az esetleges támadó nagyon nagyon nagyon nehezen, kis eséllyel tudná csak kitalálni.
Amikor bejelentkezel, a WordPress létrehoz egy sütit egy kriptográfiai aláírással, ami az AUTH_KEY és AUTH_SALT kombinációjából készül. Ha egy támadó el is lopja ezt a sütit, a kulcsaid ismerete nélkül nem tudja felhasználni. A wp-config.php fájlt meg ugye védjük. Ugye?
A biztonságra ügyelj
Itt jön a feketeleves, ami miatt sok weboldal tulajdonosnak álmatlan éjszakái lehetnek: ha a biztonsági kulcsaid és sóid kompromittálódnak (kiszivárognak), bárki hamisíthat magának hitelesítési sütiket. Eredmény? Simán bejelentkezhetnek adminisztrátorként, anélkül, hogy akár egyetlen jelszót is tudniuk kellene.
Ez nem csak elméleti riogatás. A támadók folyamatosan célba veszik a wp-config.php fájlokat: sebezhető bővítményeket, rosszul beállított szervereket és védtelenül hagyott biztonsági mentéseket keresnek, amik kiszivárogtathatják a fájl tartalmát, így a fontos azonosítókat mint adatbázis hozzáférés, azonosítók stb.).
Árulkodó jelek, hogy a kulcsaid rossz kezekbe kerültek:
- Váratlan, ismeretlen admin felhasználói fiókok jelennek meg a semmiből.
- Megmagyarázhatatlan változások történnek a weboldalad tartalmában.
- A felhasználók arra panaszkodnak, hogy a rendszer folyton kilépteti őket.
- Gyanús átirányítások vagy spam linkek bukkannak fel az oldalon.
Mikor kell lecserélni a kulcsokat?
Nem kell naponta ezzel foglalkoznod, de vannak alkalmi, kritikus helyzetek, amikor egyszerűen kötelező lépés:
- Bármilyen biztonsági incidens után: Ha feltörték az oldalt, ez legyen az első dolgod.
- Gyanús munkamenet esetén: Ha furcsaságokat látsz a felhasználói fiókokon, mint új, ismeretlen admin felhasználó.
- Honlapköltöztetés után: Ha tárhelyet váltasz vagy szerverkörnyezetet cserélsz, akkor ajánlott.
- Fejlesztő váltáskor: Amennyiben új WordPress fejlesztő vagy másik cég veszi át a honlap kezelését, fejlesztését.
Fontos figyelmeztetés: Ha lecseréled ezeket a kulcsokat, azzal azonnal kiléptetsz mindenkit az oldalról (magadat is beleértve), mivel az összes meglévő süti érvénytelenné válik. Tervezd ezt a lépést alacsony forgalmú időszakra, és tájékoztasd a felhasználóidat, ha olyan honlapról van szó.
Hogyan cseréld le a kulcsokat? (3 módszer)
1. A gyors, manuális megoldás
- Látogass el a WordPress.org hivatalos secret-key generátorához (új ablakban nyílik meg). (Megnyitod és kitudod másolni. Minden betöltéskor új generálódik.)
- Másold ki az összes legenerált sort.
- Nyisd meg a
wp-config.phpfájlt (sFTP-n vagy a tárhely fájlkezelőjén keresztül). - Cseréld ki a teljes kulcs/só szekciót az újakra.
- Mentsd el (és töltsd fel) a fájlt.
2. A bővítményes megoldás
Telepítsd az ingyenes Salt Shaker (új ablakban nyílik meg) nevű bővítményt a WordPress.org-ról. Ez lehetővé teszi:
- A kulcsok azonnali, egyetlen kattintással történő cseréjét.
- Az automatikus cserék időzítését (napi, heti vagy havi rendszerességgel).
3. Az automatizált megoldás
Egyes menedzselt WordPress tárhelyek és komolyabb biztonsági bővítmények beépített funkcióként kínálják az automatikus kulcscserét. (Például Cpanel-es WP Toolkit.)
A wp-config.php biztonsága
A biztonsági kulcsaid csak annyira vannak biztonságban, mint a fájl, ami tartalmazza őket. Állíts be megfelelő fájljogosultságokat a wp-config.php-hez:
0400– Csak a tulajdonos olvashatja (ez a legbiztonságosabb).0440– A tulajdonos és a csoport olvashatja.
Egyeztess a tárhelyszolgáltatóddal, mivel egyes környezetek eltérő beállításokat igényelhetnek.
Az alapszabály azonban mindig azonos: használd a legalacsonyabb jogosultsági szintet, amivel még hibátlanul működik a rendszered. Ne adj magasabb jogosultságot, mint amennyire szükség van.
További ajánlott lépések:
- Helyezd a
wp-config.phpfájlt egy szinttel a web gyökérkönyvtár fölé, ha a tárhelyed engedélyezi és rendelkezel kellő tapasztalattal ehhez. - Adj hozzá
.htaccessszabályokat a közvetlen elérés blokkolására. - Tiltsd le a beépített fájlszerkesztőt a
define('DISALLOW_FILE_EDIT', true);sorral vagy a RefiTune WordPress bővítményével (új ablakban nyílik meg). - Teljes cikk a WordPress biztonságról itt olvasható.
Gyakori kérdések és válaszok
Tönkreteszi a honlapomat, ha lecserélem ezeket a kulcsokat?
Nem. Az egyetlen azonnali hatás az, hogy mindenkit (az adminokat is) újra be kell jelentkeztetni. A tartalmaid, beállításaid és a bővítményeid sértetlenek maradnak.
Milyen gyakran kellene cserélnem a kulcsokat?
Minimum minden biztonsági incidens, honlapköltöztetés vagy fejlesztő váltás után, valamint legalább pár évente egyszer. Magas kockázatú oldalaknál negyedéves csere is javasolt.
Átmásolhatom a kulcsokat egy másik WordPress oldalról?
Határozottan nem! Minden weboldalnak egyedi, véletlenszerűen generált kulcsokra van szüksége. A másolás pont a lényegüket teszi tönkre, és egyetlen sebezhetőségi pontot hoz létre több oldaladon is.
Mi a különbség egy kulcs és egy só között?
A kulcsok titkosítják az adatokat. A sók extra véletlenszerűséget adnak a titkosítási folyamathoz. A WordPress mindkettőt kombinálja a biztonságos hash-ek létrehozásához.
Ha használok biztonsági bővítményt, akkor is kell ezzel foglalkoznom?
Igen. A biztonsági bővítmények plusz védvonalat jelent(het)nek, de nem helyettesítik az alap hitelesítési rendszert.
Biztonságos egy automatikus kulcscserélő plugint használni?
Igen, de előtte teszteld le! Egyes bővítményeknek írási jogra van szükségük a wp-config.php fájlhoz, amihez lazább fájljogosultságokat követelhetnek. Mielőtt bekapcsolod az automatizációt, ellenőrizd, hogy a tárhely környezete támogatja-e ezt a megoldást. Azért ne feledjük, a legjobb megoldás ha magunk cseréljük kézzel és nem új bővítményt telepítünk.
Oszlassunk el egy tévhitet
Tegyük tisztába a dolgokat: a WordPress sók (salts) NEM biztosítják a tárolt jelszavaidat. Nagyon sok (főleg külföldi) cikk tévesen azt állítja, hogy igen, de a WordPress magjának (core) kódja teljesen mást mutat.
A wp_salt() függvényt kizárólag a wp_hash() függvényen belül használják, aminek a feladata:
- Hitelesítési sütik aláírása
- Nonce-ok létrehozása és érvényesítése
Ennyi. Nincs jelszó-hashelés, nincs adatbázis-titkosítás, az független a salts/só értékektől. Ez azért fontos, mert ha valaha is azt hallottad, hogy a sók rotálása megvéd a jelszavak elleni „brute force” (nyers erő) támadásoktól, akkor tévednek. A sók cseréje a munkamenetek biztonságán segít, nem a jelszóbiztonságon.
Végső ajánlás
Minden perc, amíg a WordPress kulcsaid elavultak, egy olyan perc, amikor az oldalad sebezhetőbb annál, mint amilyen lehetne. Szánj rá ma 5 percet: generálj új kulcsokat, frissítsd a wp-config.php-t, és jelentkezz be újra. Hidd el, a weboldalad biztonsága megéri ezt a kis energiabefektetést.
