Wordpress weboldal védelme: ssl, xml-rpc, clickjacking, content shifting és mások

webatta
896 megtekintés

A WordPress különböző verziói, funkciói, bővítményei számos sebezhető ponttal rendelkeznek, amelyek alááshatják WordPress weboldalunk és az azt látogató felhasználóink adataink biztonságát. Itt egy összefoglaló, hogy mik lehetnek ezek a sebezhető pontok, és hogyan lehet ezek gyengeségei ellen védekezni.

A bejegyzés tartalma címszavakban:

  1. HTTPS használata
  2. Clickjacking tiltása és a HTTPOnly cookie-k alkalmazása
  3. Az xml-rpc tiltása
  4. HTTP Security header alkalmazása: content shifting tiltása és X-XSS védelem
  5. Brute force támadás elleni védelem

1. HTTPS használata

Mi a HTTPS?

A HTTPS a HTTP protokol biztonságos (Secure) változata. A HTTP egy kérés – válasz alapú protokol a kliens (a böngésző) és a szerver (az azon tárolt weboldal tatrtalma) között. Amikor megnyitsz a böngésződben egy weboldalt, akkor gyakorlatilag egy http kérést küldessz a szerver felé, a szerver pedig a weboldallal válaszol. A HTTPS titkosítás használatával biztonságos kommunikációt tesz lehetővé a böngésződ és a biztonságos kapcsolattal rendelkező url-ek között. A biztonságos csatorna létrehozásához olyan nem biztonságos hálózaton mint az internet, a titkosításhoz a Transport Layer Security (TLS) vagy a Secure Sockets Layer (SSL) protokolok egyikét használják. Az ilyen hitelesítést és adatvédelmet biztosító tausítvánnyal rendelkező biztonságos weboldalak https előtaggal rendelkeznek.

Miért és hogyan használjuk?

A https előtaggal rendelkező webhelyek tehát titkosított adatátvitelt biztosítanak az internetezők és a biztonságos weboldalak között. Ez nem azt jelenti, hogy egy ilyen weboldal nincs kitéve hacker támadásoknak, vagy rosszindulatú botoknak, de jelentősen megnehezíti a rosszakarók dolgát. Érdemes tehát eleve ilyen webhelyet létrehoznunk, vagy átváltanunk http-ről https-re. A legtöbb hosting szolgáltatónál ez már ingyenes (vagy eleve alapértelmezett) lehetőség, és a szolgáltató adminisztrációs felületén egy katintással beállítható. Ha a szolgáltatód biztosítja ezt a lehtőséget, azt javaslom mindenképpen élj vele. Nem csak biztonsági szempontból előnyös, hanem kresőoptimalizálási megfontolásokból is, a keresők ugyanis előbbre rangsorolják a biztonsági tanusítvánnyal ellátot webhelyeket a nem biztonságos weboldalaknál.

A képen is látható, hogy ez a blog rendelkezik a biztonságos https előtaggal. Az alatta lévő weboldalnál pedig a kis lakat ikonra kattintva aktiválható ez a szolgáltatás.

2. Clickjacking tiltása és a HTTPOnly cookie-k alkalmazása

Mi az a clickjacking?

A clickjacking, ahogy a nevében is szerepel, egy eltérítési módszer. A támadók stíluslapok, iframe-ek és szövegdobozok használatának trükkös kombinációjával átlátszó rétegeket hoznak létre, amik az ártatlan internetező számára láthatatlanok. Például egy átlátszó gombot vagy linket helyeznek el afölé a gomb vagy link felé, amire kattintva a felhasználó egy újabb webhelyre érkezne, ahová szándéka szerint is szeretne. De ez az ádáz trükk egy egész más webhelyre navigálja, ahol ugyanúgy meg kell adnia az e-mail címét, banki adatait egyéb személyes adatait amik az eredeti helyen az azonosítást és a belépést szolgálnák, ehelyet egy a támadó által birtokolt láthatatlan szövegdobozokba kerülnek be. A támadó ilymódon láthatja, milyen billentyűket üt le az áldozata, és könnyen ellophatja ajelszavait, banki adatait.

Hogyan védekezzünk ellene?

X-Frame options követelmények beállítása

Az X-frame options sgítségével be tudjuk állítani, hogy webhelyünkön milyen forrásból származó tartalmakat lehessen beágyazni <frame> vagy <iframe> keretekbe. A legelterjedtebb beállítás az, hogy csak saját oldalról származó tartalmakat lehessen betölteni. Ehhez az alábbi kódot kell bemásolni a témánk (wp-content -> themes -> saját témád könyvtára) functions.php állományába.

header('X-Frame-Options: SAMEORIGIN');

Viszont ha ezt a kódot használod, nem fogsz tudni pl. Youtube tartalmat vagy Google Maps térképet beágyazni. Ha szeretnél egy adott oldalról tartalmat behúzni, és minden mást kizárni, ezt a következő kóddal tudod megtenni.

header('X-Frame-Options: allow-from https://www.example.com/');

Ebben az esetben a https:// utáni részt kell behelyettesítened azzal az oldallal, amelyiknek a tartalmait be szeretnéd ágyazni a webodlaladba (pl. youtube.com).

HTTPOnly és Secure Flag beállítása a sütikhez

Ezzel a módszerrel jelezni tudod a böngésző számára, hogy az oldaladon használt sütik hozzáférhetőek biztonságos SSL csatornán keresztül, így egy biztonsági réteg kerül a session cookie-k fölé.

Ehhez a wp-config.php fájlt kell megkeresned (a WordPress főkönyvtárában), és beillesztened az alábbi sorokat.

@ini_set('session.cookie_httponly', true); 
@ini_set('session.cookie_secure', true); 
@ini_set('session.use_only_cookies', true);

3. Az xml-rpc tiltása

Mi az xml-rpc?

Az XML-RPC egy XML formátumú távoli meghívási protokoll, amelynek segítségével a WordPress-nek távolról tudunk adatokat és utasításokat átadni illetve onnan fogadni, xml formátumban. Öszességében arra való hogy egy külső API-n keresztül tudjunk kommunikálni wordpress weboldalunkkal. A raktárkezelő szoftverünk pl. így kommunikál a WooCommerce-szel. Viszont mivel távoli utasításokra alkalmas, előszeretettel használják a támadó robotok. Ennek következményeként a weboldalunk akár lényeges mértékben is lassulhat, hiszen a robotok lekötik a szerver teljesítményét.

Hogyan védekezzünk?

Ha nem használunk Jetpack bővítményt vagy olyan külső alkalmazást, amely kommunikál a wordpressel, ez a funkció teljesen fölösleges, így nemhogy csak kikapcsolható, de érdemes is kikapcsolni.

.htacces fájl segítségével

Keressük meg a woocommerce weboldalunk gyökérkönyvtárában levő .htacces nevű fájl. Töltsük le, vagy szerkesszük közvetlenül aszerveren. A fájl elejére illesszük be az alábbi pár sort.

# Block WordPress xmlrpc.php requests
<Files xmlrpc.php>
order deny,allow
deny from all
</Files>

Fontos, hogy a kódrészlet a # BEGIN WordPress kezdetű sor elé kerüljön, mivel a .htaccess fájl a wordpress oldallal végzett módosítások során gyakorta felülíródik, de mindig csak a wordpressre vonatkozó részek. Ha tehát a # BEGIN WordPress elé vagy # END WordPress után írunk sorokat, azok nem fognak elveszni.

functions.php fájl segítségével

Ha nem szeretnél vagy nem mersz belepiszkálni a .htaccess fájlba, választhatod ezt a megoldást is. Keresd meg a használatban levő wordpress témád könyvtárát (wp-content -> themes -> témád), és azon belül a functions.php nevű fájlt. Nyisd meg egy szövegszerkesztővel, görgess a legaljára, és egy üres sorba illeszd be az alábbi kódrészletet.

/**
* Disable xmlrpc
*/
add_filter( 'xmlrpc_enabled', '__return_false' );

4. HTTP Security header alkalmazása: content shifting tiltása és X-XSS védelem

Mi az a HTTP fejléc?

A HTTP fejléc határozza meg a http tranzakció paramétereit. Információt ad a böngészőnek, hogy milyen szabályok alapján tud interakcióba lépni a weboldalunkkal. A http fejléc többnyire olyan metaadatokat tartalmaz mint pl. a karakter kódolás, cache kezelés stb., de azt is meghatározhatod vele, hogy a böngészők kizárólag HTTPS-en keresztül kommunikálhassanak az oldaladdal (HSTS), továbbá beállíthatod az X-XSS védelmet, x-frame követelményeket, és védelmet alakíthatsz ki a content shifting ellen.

Hogyan állíthatom be a HTTP fejléceket?

Ehhez .httacces fájlra lesz ismét szükséged (továbbra is a wordpress oldalad főkönyvtárában). Nyisd meg és illeszd be az alábbi sorokat legalulra.

Header set Strict-Transport-Security "max-age=31536000" env=HTTPS
Header set X-XSS-Protection "1; mode=block"
Header set X-Content-Type-Options nosniff
Header always append X-Frame-Options SAMEORIGIN
Header set  Referrer-Policy: no-referrer-when-downgrade

Ha az x-frame beállítását már elvégezted a a 2. szakaszban leírtak szerint, a negyedik sort érdemes kihagyni.

Ezen az oldalon ellenőrizheted, hogy sikerült-e megfelelően beállítanod a http fejléceket:
https://securityheaders.com/


5. Brute force támadás elleni védelem

Mi az a brute force támadás?

A “nyers erő” támadás lényege a teljes kipróbálás, azaz minden lehetséges jelszó és kulcs kipróbálása a titkosító rendszerekkel szemben. Egy sikeres támadás hozzáférést adhat a támadónak a WordPress oldalad admin felületéhez, ezért minden erővel nehezíteni kell az ilyen támadások sikerét.

Milyen módszerekkel védekezhetünk elenne?

Admin könyvtár védelme

A wp-admin könyvtárad “gyárilag” védett a WordPress telepítése során megadott felhasználónév-jelszó megadásával, de ez önmagában kevés lehet. Érdemes magát az admin felületet tartalmazó wp-admin könyvtárat levédeni. Könyvtárvédelemre a legtöbb szolgáltató adminisztrációs felületén (pl. cPanel) van lehetőség, de ha ilyet nem találsz, akkor a .htaccess fájl segítségével is megoldhatod a dolgot.

A .htaccess fájlba helyezzük el a követkző kódot.

# Protect Drectory
AuthName "Dialog prompt"
AuthType Basic
AuthUserFile /utvonal/weboldaladhoz/wp-admin/.htpasswd
Require valid-user

Az AuthUserfile kezdetű sornál meg kell adnod a weboldaladat tartalmazó könyvtár elérési utvonalát a szervered gyökérkönyvtárából kiindulva. A wp-admin könyvtárba pedig fel kell másolnod egy .htpasswd fájlt, ami a felhasználónevedet és a jelszavadat tartalmazza kódolt formában. Az alábbi linken a kívánt felhasználónév és jelszó megadásávál generálhatsz egy .htpasswd fájlt, amit a kívánt helyre tudsz másolni.
https://www.web2generators.com/apache-tools/htpasswd-generator

Admin url módosítása

A könyvtárvédelmen felül biztonságot adhat az admin felületednek, ha az alapértelmezett wp-admin elérést megváltoztatod valami tetszőlegesre – ami lehetőleg nem tartalmazza az admin vagy a belépés szót. Ezt legegyszerűbben egy bővítménnyel tudod elérni. Töltsd le, és aktiváld a Change wp-admin bővítményt. Ezután a wp-adminon a Beállítások -> Közvetlen hivatkozások menüpont alatt megjelenik két új szövegmező, amiből az első az érdekes, ahol is megadhatod, hogy mi legyen az új url végződés (admin slug) a wp-admin helyett. Nyugott lehetsz, a plugin nem fogja megváltoztatni a könyvtáradat. Annyi történik, hogy a wp-admin ezután nem lesz hagyományo módon elérhető. Az admin felületet a megadott url alatt tudod elérni, és itt tudsz bejelentkezni. A bővítmény ezután átirányít a hagyományos wp-admin helyre.

A Közvetlen hivatkozások beállítás oldalának új szekciója a bővítmény telepítése után.

Könyvtár böngészés kikapcsolása

A rosszindulatú robotok vagy a hekkerek előszeretettel böngészik át egy weboldal teljes könyvtárstruktúráját olyan féjlokat keresve, amelyek sebezhetőek vagy biztonság szempontjából ismert gyenge pontjaik vannak. Egy a .htaccess fájlban megadható beállítással letilthatjuk a könyvtár böngészést.

Options -Indexes

Erős jelszavak használata

Mind az admin oldaladon, mind a felhasználói regisztrációnál ragszkodj az erős jelszóhoz. Az admin felületen ez beállítható, de a legtöbb olyan bővítménynél is, amely felhasználói profillal kapcsolatos (pl. Ultimate members), vagy felhasználói profilt és bejelentkezést igényel (pl. Woocommerce). De léteznek olyan webvédelmi bővítmények, amelyeknél ez a funkció egy kattintással bekapcsolható. Erről a fejezet végén részletesebben olvashatsz.

Hibaüzenetek és egyéb információk elrejtése

A WordPress által megjelenített hibaüzenetek nem csak a fejlesztő, de a hekkerek számára is információt adnak. Nem kizárt, hogy egy kiöregedett és használaton kívül helyezett script használata hibaüzenetet keletkeztet egy oldalon. Ebből az is látható, hogy melyik fájl melyik sorában van a hiba és ezt a hekker adott esetben kihasználhatja ellenünk. Inkább rejtsük el a hibaüzeneteket, és csak időszakos hibakereséskor vagy új fejlesztések során kapcsoljuk vissza.

A hibaüzenetek elrejtésére a wp-config.php fájlban van lehetőségünk az alábbi sorok beillesztésével.

ini_set('display_errors','Off');
ini_set('error_reporting', E_ALL );
define('WP_DEBUG', false);
define('WP_DEBUG_DISPLAY', false);

A WordPress minden újabb verziója hivatott az előző verziók biztonsági réseinek betömésére, de minden korábbi verziónak megvannak a maguk ismert biztonsági hibáik. Ezekkel a hibákkal a hekker is tisztában van, így a weboldalunk WordPress verziószámából már könnyen kikövetkeztetheti, hogy mik az oldalunk sebezhetőségei ahol bepróbálkozhat. A verziószámot persze így is úgy is kiderírheti, ha nagyon akarja, de legalább ne játszuk önként a kezére. Rejtsük el a WordPress verziószámot! Az alábbi kóddal a verziószám kiszedhető az oldal forráskódjából. A functions.php-be illeszd be az alábbi sorokat!


//Hide Wordpress version from everywhere
function dartcreations_remove_version() {
  return '';
 } add_filter('the_generator', 'dartcreations_remove_version');

Webhely védelmi bővítmény / tűzfal használata

Egy brute force védelemmel ellátott biztonsági bővítmény telepítésével a legtöbb fentebb említett védekezési mód egy kattintásra aktiválahtó. Előszerettel javaslom a Wordfence bővítmény használatát. A tűzfalon kívül a következő nyers erővel szembeni támadások ellen alkalmazható funkciókkal bír. Bekapcsolható rajta a két faktoros azonosítás. A felhasználóid a belépési adataik megadása után egy megerősítő e-mailt kapnak a belépési linkkel. Persze vannak olyan felahsználói regisztrációra és beléptetésre kialakított bővítmények (pl. Ultimate members), amelyek szintén fel vannak vértezve ezzel a funkcióval. Ezen kívül elrejthetőek a belépési hibákkal kapcsolatos hibaüzenetek. Ha a belépés során a felhasználód rossz azonosítót vagy jelszót ad meg, a wordpress erre felhívja figyelmet. Ha a hibaüzenet arról értesít, hogy rossz jelszót adtál meg, akkor próbálkozásra programozott netbot számára is jelzés, hogy jó felhasználónévvel próbálkozik és már csak a jelszót kell kitalálnia. Ez a funkció viszont általános “hibás felhasználónév vagy jelszó” jellegű üzenettel váltja fel az eredeti hibaüziket, amiből már nem lehet következtetni arra, hogy melyik a volt a hibás. A Wordfence-ben továbbá meghatározható a hibás belépési próbálkozások száma, melyek elértével letiltja felhasználót. De inkább ez miatt kelljen magyarázkodnod, mintsem azért hogy iletéktelen személy szólt hozzá valamihez a nevében vagy adott le rendelést.


Hát összegészében ennyi, amire érdemes odafigyelned. Ha úgy gondolod, hogy hasznos volt az itt elérhető információ a WordPress weboldalad védelmét illetően, oszd meg ezt a bejegyzést, hátha másnak is segíthet. Ha pedig nem szeretnél lemaradni hasonlóan hasznos WordPress témájú tartalmakról, kövess be a Facebook oldalamon! Sikeres webvédelmet, sok biztonságban tudott látogatót kívánok!

0 hozzászólás
0

Related Posts

Szólj hozzá!

Kövess a Facebookon

Ha hasznosnak tartod ezt a bejegyzést, kövess a Facebookon, hogy azonnal értesülhess a legújabb hasznos tartalmakról!


This will close in 30 seconds