Akár egyedi fejlesztésű a weboldal, akár nyílt forrású CMS rendszer az alapja, bárhol lehet benne biztonsági rés, amit a leleményes hackerek kihasználnak. A szerveren több biztonsági réteg is ügyel arra, hogy egy megtört weboldal ne tudjon kárt tenni se a rendszerben, se más weboldalakban, az oldal (alkalmazás) általános védelmére azonban nagyon korlátozottak a lehetőségek. Ezen a szinten már a fejlesztőnek, vagy a CMS rendszert telepítőnek kell minél jobban megnehezítenie a támadó dolgát. Egy biztonsági rést kihasználó hacker valószínűleg malware-t vagy bot-okat akar telepíteni a szerverre. Ehhez első lépésként általában egy php alapú shellt telepít fel (pl. C99shell), aminek segítségével feltérképezheti a könyvtárstruktúrát, belenézhet a file-okba stb. Ez után már könnyedén telepíti botokat, vagy fertőzi meg az oldalt malware-el. Az alábbi védelmek általános módszerek, melyek nem a betörést, hanem a kártevést gátolják vagy nehezítik meg. 1. filerendszer-szintű jogosultság-korlátozás A legtriviálisabb védelem. A lényege, hogy a PHP csak azokra a helyekre tudjon írni, ahova szükséges (pl. upload könyvtár, temp, stb.). Alapvetően azt kell tudni hozzá, hogy minden PHP script a webszerver jogosultságával fut egy korlátozott felhasználóként. Amikor FTP-vel feltöltjük az oldalt, alapértelmezésben a rendszer nem ad írási jogot semmire, ezeket nekünk kell beállítanunk (CHMOD). Ahhoz, hogy a PHP mégis tudjon írni a szükséges helyekre, engedélyeznünk kell az írási jogot a csoport számára (könyvtárakra rwxrwxr-x vagy 775, file-okra rw-rw-r-- vagy 664) Ez a védelem nem foltozza be a biztonsági rést, de megvédi a "rendszerfájlokat"a felülírástól vagy a fertőzéstől.
2. webszerver-szintű jogosultság-korlátozás Tegyük fel, hogy egy adott könyvtárra adtunk írási jogot a PHP számára. Ezt már nehezebb lesz a támadónak megtalálnia, de idővel sikerülni fog. Az oldalban ugyan már nem fog tudni kárt tenni, de a botokat, vagy a phishing oldalakat még mindig fel fogja tudni ide tölteni, majd futtatni. A feltöltést nem fogjuk tudni meggátolni (hiszen az upload könyvtár erre való), de alkalmazás-szinten ellenőrizhetjük a feltöltött file-okat. Ha erre nincs lehetőségünk (pl. nem akarunk beleírni a CMS kódjába), még mindg a kezünkben van a PHP futtatás letiltása az adott könyvtárban. Helyezzünk el egy .htaccess nevű file-t az upload könyvtárban az alábbi tartalommal: <FilesMatch "\.php$"> Deny from all </FilesMatch>
A feltöltést ezzel nem gátoltuk meg, de már lefuttatni nem fogja tudni a támadó.
Ha ezeket az elővigyázatosságokat megtesszük egy új weboldal telepítésekor, a jövőben sokkal kevesebb sikeres támadásra számíthatunk.
|