A WordPress is – mint minden CMS – feltörhető, főleg ha nincs rendszeresen frissítve. A rendszeres frissítésen túl, még az imákat megelőzően azért tehetsz pár dolgot annak érdekében, hogy a lapodat, blogodat biztonságosabbá tedd. Ehhez gyűjtöttem össze pár ötletet.
Tartalomjegyzék
A pluginek elrejtése
A wordpress biztonsági hibáinak egy jó része abból fakad, hogy a lapon használt pluginek egy része törhető, nem megfelelően megírt és tesztelt példány. Épp ezért ajánlott a pluginek listáját elrejteni mások elől, semmi szükség rá, hogy ezeket mások kihasználják.
Igaz a szerver beállításaitól függ, de jópár helyen ha megnézed a www.domainnev.hu/wp-content/plugins/ könyvtárat, akkor megkapod szépen felsorolva a lapon használt pluginek listáját. Ennek legegyszerűbb kivédése az, hogy a /wp-content/plugins könyvtárban elhelyezel egy üres index.html fájlt.
A /wp-admin/ védelme
A wordpress admin felületére a domained.hu/wp-admin/ URL-en keresztül lehet hozzáférni, úgyhogy ajánlott korlátozni, hogy ki férhet hozzá. Ennek nagyon egyszerű megoldása a már korábban is taglalt (csak nem wp kapcsán) .htaccess védelem, mely során a könyvtárhoz való hozzáférést bizonyos IP-kre illetve IP tartományra lehet korlátozni.
A feladat rendkívül egyszerű módon kivitelezhető, ám szükséges a működéséhez az, hogy a wordpress alapú blogod vagy lapod szerverén a .htaccess fájlok használata engedélyezve legyen.
Ha ez a feltétel teljesül, akkor a /wp-admin/ könyvtárba helyezz el egy .htaccess fájlt, mely az alábbi példa mintájára kell a tartalmat elmentened. Ez a kód annyit tesz, hogy minden IP-ről tiltja a belépést kivéve azokat az IP-ket, melyeket beállítasz (kivételek). Nincs más dolgod, mint az X-ek helyére beírni azt az IP(tartomány)-t, melyről Te szoktál belépni az admin felületre. A kód:
1 2 3 4 5 6 7 8 9 10 | AuthUserFile /dev/null AuthGroupFile /dev/null AuthName "Example Access Control" AuthType Basic <LIMIT GET> order deny,allow deny from all allow from xx.xx.xx.xx allow from xx.xx.xxx.xx </LIMIT> |
AskApache Password Protect
Az AskApache Password Protect plugin védelme szintén a .htaccess-re épül, de kicsit másképp. Itt nem a belépés van bizonyos IP-kre korlátozva, hanem a wordpress alapértelmezett loginjához képest még egy plusz login keletkezik. Ez alatt azt értem, hogy egy elsődleges név/jelszóra lesz szükség már ahhoz is, hogy egyeltalán eljusson valaki a wordpress login ablakához.
A plugin telepítését követően az admin felületen az „options / AskApache Password Protect” fülre kattintva kell megadni egy nevet és egy jelszót.
honlap: AskApache Password Protect plugin
Meta infók törlése
A wordpress lapod forrását ha megnézed, lehet hogy találsz egy ilyesmi részt:
1 | <meta name="generator" content="WordPress 2.1" /> |
Ez egy kicsit több infó, mint amit szeretnél publikálni, hisz a wordpress verziód számával egyben azt is elmondod a világnak, hogy ha esetleg a frissítések elmaradása miatt egy régebbi verziót használsz. A verziószám beazonosításával a rosszindulatú elemeknek könnyíted meg a dolgát, hisz még csak találgatni sem kell ahhoz, hogy a későbbi wordpress frissítések során javított hibák közül melyikkel kell próbálkozniuk. Szóval ha a forrásodban megtalálod a verziószámot, a template-k közül a header.php-ban tudod ezt a sort törölni.
LockDown
Ez nem egy módszer, hanem egy plugin a wordpress-hez a biztonság fokozásához. A LockDown log-olja a hibás belépéseket az admin felületen (IP és időpont). Ha egy adott időszakon belül egy bizonyos limitet meghaladnak a sikertelen belépések, akkor arról az IP tartományról letiltja a login funkciót. Így védhető a „brute force” technika.
A LockDown plugin alapértelmezett beállításait tekintve 1 órára blokkolja a login funkciót abban az esetben, ha 3 sikertelen próbálkozás történik 5 percen belül ugyanarról az IP-ről. Ezek a beállítások módosíthatóak az „options” fülön, a plugin telepítése után.
honlap: LockDown plugin
Secure Files
Ez a plugin lehetővé teszi, hogy az alapértelmezett bárki által megtekinthető fájlok (pl. feltöltött képek, zip-ek stb…) ne legyenek elérhetőek mindenki számára. Ez akkor lehet fontos, ha a lapodat és annak szöveges illetve képi tartalmát nem akarod az egész világgal megosztani, csak a regisztrált tagoknak szól. Ez esetben a „Registered Only” plugin segítségével pl. le lehet védeni a blog tartalmát, ám a feltöltött fájlokat bárki megtekintheti, hisz azok legtöbbször a www.domainnev.hu/uploads/ könyvtárban szerepelnek (vagy egyéb könyvtárban, de lényeg hogy a wordpress root könyvtárában vannak valahol).
Tehát ez a plugin lehetővé teszi, hogy a fájlokat a wordpress root könyvtárán kívülre tedd fel és azokat csak a regisztrált, belépett látogatók lássák. A könyvtárat, ahova fel akarod tenni a fájlokat Te határozod meg. A „Secure files” plugin ezekhez egyedi URL-eket generál, ilyesmi formában:
1 | http://www.domainnev.hu/secure-files/?file_id=ezmarbiztonsagos.zip |
honlap: Secure Files plugin
wp-config.php védelme
Szerverproblémák során előfordulhat, hogy a php fájlok tartalma is megjelenik a böngészőben olvasható kódként, ami roppant kellemetlen dolog. Ezért érdemes a wordpress telepítésed root könyvtárában lévő .htaccess fájlhoz hozzáadni az alábbi kiegészítést:
1 2 3 | <FilesMatch ^wp-config.php$> deny from all </FilesMatch> |
Ez letiltja a wp-config.php fájlhoz történő hozzáférést.
„[…]Ennek legegyszerűbb kivédése az, hogy a /wp-content/plugins könyvtárban elhelyezel egy üres index.html fájlt.[…]”
Én az index.html helyett .htaccess-el letiltom a könyvtár listázást (a wordpress alap .htaccess fájljába írom be a szükséges dolgokat).
A tiéd is teljesen jó, plusz 1 megoldás. :)
Én annyira doomie vagyok az IT-világban, hogy az valami félelmetes, de ezeket én is értem.
Kössz harder!
Ha már WP biztonság, akkor linkelnék egy kicsit.
Múlthéten jelent meg egy WordPress plugin hiba, aminek a biztonsági rését kihasználva admin szintig törhető, az áldozat blogja.
Leírás, és javítás:
http://djz.hu/blog/posts/731
Köszi, ez hasznos lesz annak, aki használja ezt a plugint!
a wp-syntax csak 2.2.2-es WP-ig jo. legalabbis azt irtak
Nem, tovább is jó, mint ez a lap is mutatja. :)
„[…] A wordpress lapod forrását ha megnézed, lehet hogy találsz egy ilyesmi részt: […]”
Egy hasonló sor () itt is található (IE6-ból nézve):
http://www.tutorial.hu/asztali-alkalmazasok-keszitese-php-vel-php-gtk/feed/
Ezzel pedig azt akarom mondani, hogy érdemes mindenhol körülnézni, nincs-e a lapon máshol is ilyen „nem kívánatos megjegyzés” :).
Köszi, ezeket majd kitakarítom :)
Url-t is lehet védeni htaccess allomanybol?
Pl: index.php?oldalam=ezprivat legyen vedve de a index.php?oldalam=kepeim pedig nem. Köszi.
Persze hogy lehet, a cikkben is van rá példa.
Amit írtál, meta adatot, ami kiírja a verziószámot. Ez nekem megtalálható a nyitóoldal forrásában, de a header.php-ban nincs benne. Na most akkor hol lehet?
Egyszerű megoldás a Secure WP plugin. Be lehet állítani, mely meta-tageket rejtse el, plusz index.html-ekkel teleszórja a wp-content mappáit.
Az, hogy a könyvtárak attribútuma 755, a fájloké 644, az segít valamit, vagy irreleváns? Van-e jobb ötletetek arra, hogy ezek mire legyenek állítva? A szerverünk ezt adja alapértelmezésnek, így vagy átállítom ezeket és akkor működik az egykattintásos frissítés meg plugin-telepítés, és a sablonfájlok is online szerkeszthetőek, vagy (én inkább így szeretem) hagyom az attribútumokat, offline szerkesztek, és mindent ftp-vel töltök fel. Nekem ez (bár kicsit kényelmetlenebb) biztonságosabbnak tűnt eddig, de ha szerintetek a 644 sem védi a fájlokat…
Üdv!
Olyan problémám van, hogy az admin védelménél
beillesztem a kódot, majd átírom annak megfelelően.
A funkcióját ellátja, de letiltja a wp_login.php css-fájlokat!
Lehet ez ellen tenni valamit?
AuthUserFile /dev/null
AuthGroupFile /dev/null
AuthName „Example Access Control”
AuthType Basic
order deny,allow
deny from all
allow from xx.xx.xx.xx
allow from xx.xx.xxx.xx
A fájlmegosztáson gondolkodtam. Fájlnevek: color-fresh.css, wp_admin.css
Köszi előre is!