Valós idejű tűzfal WordPresshez, amely minden fájlírást ellenőriz
Védelem, amely már a WordPress előtt elindul
A legtöbb biztonsági bővítmény csak akkor találja meg a webshellt, amikor az már a lemezen van. A Must-Have Security megakadályozza, hogy egyáltalán fájl legyen belőle. A védelmi motor a WordPress előtt töltődik be, és minden fájlírásnál ellenőrzi, mi kerülne a fájlba. Ha futtatható kódot talál, és annak létrehozására a webhelyed egyetlen összetevőjének sincs engedélye, blokkolja az írást. A telepítéskor már meglévő fájlokat pedig egy kártevőkereső ellenőrzi. Nem találgat, hanem bizonyítja, hogy ártalmatlanok.
A kártevőkereső utólag reagál. Ez még a fájlírás előtt közbelép.
A szignatúrák a már ismert, lemezre írt kártékony kódokat azonosítják. Az oldaladra legközelebb bejutó webshellhez viszont még sehol sincs szignatúra.
A Must-Have Security nem a kártékony kódot próbálja felismerni. Azt figyeli, ami minden tartós hozzáférést célzó támadásban közös: a kódot előbb-utóbb fájlba kell írni. A kiterjesztés önmagában nem bizonyít semmit, ezért a motor a fájl tartalmát vizsgálja: ha egy .txt fájlban <?php és mellette eval($_POST[…]) szerepel, az nem dokumentáció. Még a fájl létrejötte előtt letiltja az írást.
Az adminjog önmagában nem elég a kódíráshoz
A négy réteg mást-mást vizsgál, de ugyanazt az elvet követi. A WordPress túl könnyen ad jogot a futtatható kód módosítására. A bővítmény ezt a jogot visszaveszi, és csak célzottan, ideiglenesen adja meg.
Kódírás felügyelete
Íráskor lép közbe, mielőtt a fájl létrejönne
Minden fájlírásnál a tényleges tartalom alapján dönt, a feltöltéseknél is. Futtatható kód írásához a te kifejezett engedélyed kell.
- Két lépésben vizsgálja a tartalmat, és a fájlnév minden kiterjesztését ellenőrzi
- Útvonalhoz kötött, néhány percig érvényes írási engedélyek
- A megbízható adminok adatait és hitelesítési tényezőit az adatbázison kívül tárolja
- A whitelist a tartalom hash-éhez kötődik, nem az elérési úthoz
Tűzfal
Minden kérést ellenőriz, még a WordPress betöltése előtt
Eldönti, mi kérhető le, és mely kliensek kaphatnak választ.
- Szabályozza, mely PHP-fájlok kérhetők le közvetlenül
- Felismeri a támadó kéréseket, és igény szerint blokkolja az AI-botokat
- Minden eseménynél rögzíti az országot (a beépített, alapból bekapcsolt DB-IP-listából vagy a CDN-ed country headeréből)
- Összevetés előtt dekódolja és normalizálja az útvonalat
Az adatbázis és a cron figyelése
A háttérben működik, miközben az oldal fut
Az ütemezett feladatokat és az adatbázisba írást figyeli: ezekkel próbálkozhat a támadó, ha nem tud fájlt írni.
- Jelzi az új és módosult cron-bejegyzéseket
- Az adatbázisba író SQL-műveleteket a beírt tartalommal együtt naplózza
- Minden találathoz mellékeli a bizonyítékokat
- Opcionális napi vagy heti e-mailes összefoglaló
Kártevőkereső
Ütemezetten fut, és amikor csak kéred
A már lemezen lévő fájlokat vizsgálja. A WordPress alapfájljait a hivatalos checksumok alapján ellenőrzi, minden mást kódként elemez.
- Két menetben vizsgál, először a futtatható tartalmakat
- Az osztályozó igazolja, mely fájlok ártalmatlanok, így az AI-nak kevesebb mint 1%-ukat kell vizsgálnia
- Megosztja az értékeléseket, így ugyanazt a fájltartalmat elég egyszer megvizsgálni
- A találatokat bizonyítékokkal együtt jelzi, önállóan sosem töröl
Minden réteg ugyanabban az append-only naplóban rögzíti az írandó tartalmat, annak hash-ét és a stack trace-t. A blokkolt tartalmakat karanténban tárolja, így bármelyikre adhatsz egyszeri engedélyt, és megismételheted az írást. A bővítmény ekkor is ugyanazokat a szabályokat alkalmazza.
Így blokkolja a tűzfal a webshellt már fájlíráskor
Élőben töltünk fel egy kártékony kódot tartalmazó fájlt. Megfigyelési módban pontosan láthatod, mit tenne a tűzfal éles védelem mellett. Egy valódi bővítményfrissítésen azt is megmutatjuk, hogyan engedélyezheted az írást csak a szükséges útvonalakon.
A frissítés átmegy, a támadó kódja nem.
Ha aktív a védelem, a PHP-fájlok írásához az adott útvonalra szóló írási engedély kell. Ezt te adod meg azon a felületen, ahol éppen dolgozol. Kattints a „Bővítmény frissítése” gombra, és erősítsd meg a műveletet passkey-vel. Ezzel néhány percre engedélyezed az írást a wp-content/plugins/** útvonalon.
És ha ugyanabban az adminisztrátori munkamenetben egy stored XSS próbálja módosítani a functions.php fájlt? A sablonok írására nincs engedély, ezért a védelem blokkolja a műveletet. Ezen az sem változtat, hogy a WordPress érvényesnek tekinti a munkamenetet. A hitelesítéssel csak az adott engedélyt hagyod jóvá, a védelmet nem kapcsolod ki. Minden új engedélyhez újabb megerősítés kell, így egy szkript nem élhet vissza a korábbi hitelesítéseddel.
Az egyetlen felület, ahonnan sosem zárhat ki
Ha egy biztonsági bővítmény kizár arról a felületről, ahol kikapcsolhatnád, már kudarcot vallott, bármilyen támadást hárított is el. A Must-Have Security már az első kéréstől véd, így a webshellt már az első napon blokkolja. A hozzáférést ellenőrző részek hiba esetén is beengednek. Ha egy megbízható admin már használt egy IP-címet, azt soha nem tiltja le. Egyetlen tűzfalszabály sem teheti elérhetetlenné az adminfelületet vagy a bejelentkezési oldalt, és minden tiltás automatikusan lejár.
Előbb inkább megfigyelnéd a működését? Kapcsold a fájlírások ellenőrzését megfigyelési módba: a bővítmény minden írást ellenőriz, és naplózza a teljes írandó tartalmat. Közben semmit sem blokkol, így pontosan látod, mit tenne az éles védelem a saját webhelyeden. A WP-CLI alapértelmezés szerint megfigyelési módban fut, így a parancssori deployok továbbra is működnek, és minden írás bekerül a naplóba.
A betöltőnél nincs helye hibának
A betöltő a WordPress előtt fut, így egyetlen hibás kódsor miatt minden URL 500-as hibát adhat, a wp-admin is. A bővítmény egyetlen más része sem okozhat ekkora bajt, ezért a betöltőt úgy terveztük, hogy ilyen leállást ne okozhasson.
A bővítmény a SAPI alapján választ betöltési módot, nem a szerver bannerére hagyatkozik. A betöltőt két lépésben távolítja el, nem egyszerűen törli. Először egy üres, semmit sem futtató fájlt tesz a helyére, mert ha az auto_prepend_file fájl hiányzik, a PHP fatal errort ad, nem warningot. Ha a védelmi motor fatal errorral leáll, kikapcsolja magát, hagyja elindulni a webhelyet, és e-mailt küld minden megbízható adminnak. Az automatikus kikapcsolást passkey-vel le is tilthatod, hogy a motor szándékos hibára futtatásával se lehessen megkerülni a védelmet.
Találd meg az adminfiókot, amelyet senki sem hozott létre
A támadók előszeretettel hagynak maguk után egy adminfiókot. Az Adminfiókok oldalon minden olyan fiókot látsz, amely kódot telepíthet vagy más fiókokat kezelhet. A bővítmény jelzi, ha egy fiók nem látszik a Felhasználók listájában, vagy a jelszavát közvetlenül az adatbázisban állították be. Az is gyanús, ha közvetlenül a fiókhoz rendeltek adminjogokat, vagy egy olyan szerepkör kapott adminjogot, amelynek nem járna. A hiányzó regisztrációs dátumot és a szkripttel generált felhasználónevet is jelzi.
Láthatod az egyes fiókok aktív munkameneteit és alkalmazásjelszavait is. A bővítmény figyelmeztet, ha bárki adminjogot adó szerepkörrel regisztrálhat. Ha egy fiók gyanús, elveheted az adminjogait, vagy törölheted, miután passkey-vel vagy kóddal megerősítetted a műveletet. Ezzel a funkcióval nem távolíthatod el a saját fiókodat, a megbízható adminok fiókjait vagy az utolsó adminfiókot.
Kártevőkereső, amely bizonyítja, hogy egy fájl ártalmatlan
A tűzfal nem engedi lemezre írni a kártékony kódot. A kártevőkereső azt vizsgálja, ami már korábban bekerült: FTP-n keresztül, egy backdooros bővítménnyel vagy egy szkriptet tartalmazó SVG-fájllal. Két menetben dolgozik. Először a futtatható fájlokat, a .htaccess fájlokat és az oda nem való feltöltéseket vizsgálja át. A PHP-fájlokat akkor is felismeri, ha a PHP-kiterjesztés nem a fájlnév végén áll. Ezután az összes többi fájlban rejtett PHP-kódot keres.
A WordPress alapfájljait a hivatalos checksumok alapján ellenőrzi. A többi fájlt egy osztályozó elemzi: tokenekre bontja a PHP-kódot, és végigköveti, hová jutnak a kérésből érkező adatok. Ha egyik bemenet felől sem érhető el backdoorként használható kódrész, a fájl ártalmatlan. Ezt AI nélkül is megállapítja. Az eval($_POST[…]) viszont egyértelműen kártékony: ezt az osztályozó szabály alapján felismeri. Az AI csak azokat a fájlokat vizsgálja, amelyekről az osztályozó nem tud egyértelműen dönteni. Egy éles webhelyen ez a fájlok kevesebb mint 1%-a, és csak ezek a fájlok hagyják el a webhelyedet. A kártevőkereső csak jelez, soha nem töröl. Minden találatot a fájl tartalmával együtt nézhetsz át.
A webshellből sosem lesz fájl.
Nem utólag vizsgálja a fájlt: már az írást blokkolja, még a WordPress betöltése előtt.
Kérem most a Must-Have SecuritytEgyszerű, átlátható árak
Minden csomagban megkapod az összes védelmi réteget. A bővítmény akkor is védi a webhelyedet, ha lejár az előfizetésed.
Egy webhely
- 1 webhely
- Fájlírás- és feltöltésvédelem
- Kártevőkereső
- Passkey és útvonalhoz kötött írási engedélyek
- Tűzfal és közvetlen kérések szűrése
- Bizonyítékok naplózása és karantén
- Adminfiókok ellenőrzése
- Frissítések és támogatás
Több webhely
- 5 webhely
- Fájlírás- és feltöltésvédelem
- Kártevőkereső
- Passkey és útvonalhoz kötött írási engedélyek
- Tűzfal és közvetlen kérések szűrése
- Bizonyítékok naplózása és karantén
- Adminfiókok ellenőrzése
- Frissítések és támogatás
Must-Have Pack
- KORLÁTLAN számú webhely
- Az ÖSSZES Must-Have bővítmény benne van
Próbáld ki kockázat nélkül. Nem neked való? Indoklás nélkül visszakapod a teljes összeget.
Gyakori kérdések
A szignatúraalapú keresők a lemezen már jelen lévő, ismert kártékony kódot keresik. A Must-Have Security eleve megakadályozza, hogy az ilyen kód fájlba kerüljön. A WordPress előtt indul, minden fájlírásnál ellenőrzi a tartalmat, és blokkolja az olyan futtatható kódot, amelynek létrehozására a webhely egyetlen összetevője sem kapott engedélyt. Így egy vadonatúj webshellt is blokkol, amelyhez még sehol nincs szignatúra. A már meglévő fájlok vizsgálatára is van keresője, de az más elven működik: a WordPress alapfájljait a hivatalos checksumok alapján ellenőrzi, minden mást pedig kódként elemez. Az elemző végigköveti a kérésből származó adatok útját a kódban: vagy bizonyítja, hogy a fájl ártalmatlan, vagy szabály alapján kártékonynak minősíti. A ritka, eldönthetetlen eseteket AI-ra bízza. Nem egy folyton lemaradó szignatúralistára hagyatkozik.
Nem. Amikor bővítményt, sablont vagy a WordPress alapfájljait frissíted, az éppen megnyitott felületen egyetlen érintéssel, passkey-vel adhatsz írási engedélyt. Ez kizárólag az adott útvonalra érvényes, néhány percig. Ha előbb megnéznéd, hogyan működik, kapcsold a fájlírások ellenőrzését megfigyelési módba. Így a saját webhelyeden láthatod, mit tenne a védelem, mielőtt újra bekapcsolod a tiltást.
Kifejezetten úgy terveztük, hogy ne zárhasson ki. A hozzáférésről döntő réteg hiba esetén engedi a belépést, és soha nem tilt le olyan IP-címet, amelyet egy megbízható admin már használt. Egyetlen tűzfalszabály sem blokkolhatja az adminfelületet vagy a bejelentkezési oldalt. A betöltőt sem egyszerűen törli, hanem két biztonságos lépésben kapcsolja ki. Ha a motor fatal errorba fut, kikapcsolja magát, hagyja elindulni a webhelyet, és e-mailben értesíti az összes megbízható admint. Ők a vezérlőpulton újra bekapcsolhatják a védelmet. (Az automatikus kikapcsolást letilthatod, ha motorhiba esetén inkább 500-as hibát szeretnél, mint védelem nélkül működő webhelyet. A beállítást passkey védi, mert az automatikus kikapcsolás engedélyezése gyengíti a védelmet.)
Minden fájlműveletnél lefut egy PHP-ban írt kódrészlet. Tesztszervereinken ez műveletenként körülbelül 2–45 mikroszekundum többletidőt jelentett, egy teljes adminfelületi kérésnél tehát néhány milliszekundumot. A teljesítmény tárhelyenként eltér, ezért nem ígérjük, hogy nálad is ugyanezeket az értékeket kapod.
WordPress és olyan PHP-környezet, ahol az auto_prepend_file beállítható .user.ini vagy .htaccess fájlból. Ezt szinte minden osztott és menedzselt tárhely biztosítja. Ahol egyik betöltő sem használható, ott a WordPress után indul el. Nem kell hozzá root jog, szervermodul vagy daemon.
A WordPress az adatbázisban tárolja az adminisztrátori szerepkört, ezt pedig egy SQL injection is átírhatja. Ezért a bővítmény a megbízható adminok nyilvántartását és minden hitelesítő adatot az adatbázison kívül, a motor saját, védett vezérlőfájljaiban tárolja. A WordPress-adminjog önmagában soha nem elég futtatható kód írásához, akkor sem, ha SQL injection támadással szerezték meg.
A WordPress a move_uploaded_file() függvénnyel mozgatja a feltöltött fájlokat, ami megkerüli a fájlírásokat ellenőrző stream wrappert. Ezért a bővítmény még az áthelyezés előtt ellenőrzi az ideiglenes fájl tartalmát és nevét is. A PHP-kódot rejtő JPEG-et éppúgy elutasítja, mint a shell.php.jpg fájlt, mert a fájlnév minden kiterjesztését ellenőrzi.
A fájlírásokat ellenőrző motor teljesen determinisztikus: nem használ hálózatot, adatbázist vagy AI-t. Ugyanazokból a bemeneti adatokból minden kérésnél ugyanarra az eredményre jut, és a döntését semmi nem írhatja felül. Egyedül a kártevőkereső kommunikál külső szolgáltatással. Alapértelmezés szerint ki van kapcsolva, a bekapcsolásakor pedig jóvá kell hagynod a külső szolgáltatás használatát. Még ekkor is a lehető legkevesebb adatot küldi el. A WordPress alapfájljait és a közös reputációs adatbázisban már ismert fájlokat hash alapján ellenőrzi. A többi fájl nagy részéről a saját szervereden futó elemző dönt. Csak azokat a fájlokat küldi el HTTPS-en keresztül AI-elemzésre, amelyekről nem tudja bizonyítani, hogy ártalmatlanok, és szabály alapján sem tudja őket kártékonynak minősíteni. Egy éles webhelyen ez a fájlok kevesebb mint 1%-a. A bizalmas adataidat (wp-config, .env, kulcsok, biztonsági mentések) viszont kizárólag a saját szervereden ellenőrzi, és semmilyen adatot nem küld róluk. A kereső óránkénti kerete előfizetésenként 3000 kérés és 300 AI-elemzés. Ha a vizsgálat eléri a kérési korlátot, szünetel, majd magától folytatódik. Ha az AI-elemzések kerete fogy el, az érintett fájlok kivárják a sorukat.
A támadó nem tudja tartósan megvetni a lábát a webhelyen, de amit a már futó kódjával tesz, azt a bővítmény nem akadályozza meg. Ha egy kérésben már fut a támadó kódja, meghívhatja az exec() függvényt, vagy kiiktathatja a stream wrappert. Ez a réteg azt akadályozza meg, hogy a kód fájlba kerüljön; a már futó kódot nem korlátozza. A dokumentáció egyértelműen leírja ezeket a korlátokat, nem állítja, hogy ezekre is van védelem.
Igen. A motor továbbra is érvényesíti a szabályokat, a biztonságod nem függ az előfizetéstől. A frissítésekhez és a támogatáshoz aktív előfizetés szükséges. Kikapcsoláskor a bővítmény maradéktalanul eltávolítja a betöltőt, törléskor pedig megtartja a beállításaidat, hacsak be nem jelölöd az „összes adat törlése” lehetőséget.
Ne utólag töröld a webshelleket. Akadályozd meg, hogy egyáltalán létrejöjjenek.
Csatlakozz azokhoz a WordPress-szakemberekhez, akik nem utólag keresik a támadás nyomait, hanem megelőzik a behatolást.
Kérem a Must-Have Securityt
Must-Have Backup