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

  1. 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.)
  2. Másold ki az összes legenerált sort.
  3. Nyisd meg a wp-config.php fájlt (sFTP-n vagy a tárhely fájlkezelőjén keresztül).
  4. Cseréld ki a teljes kulcs/só szekciót az újakra.
  5. 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:

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.