mod_evasive apache modul a DoS támadások ellen

Aki üzemeltet webservert és több látogatott oldal is elérhető róla, azt előbb vagy utóbb meg fogják találni ellenséges szándékkal is. Ez többnyire a webserver, esetlegesen róla üzemeltetett oldalak hiányosságait kihasználó, vagy a kiszolgáló leterhelésére irányuló próbálkozásokban fog kimerülni. A hiányosságok kivédése érdekében mindig a legfrissebb (stable) programokat használjuk, és ne hagyjunk visszaélésre alkalmas lehetőségeket. Erre nem is akarok külön kitérni.

Ami most engem is utol ért az terhelésre irányuló támadás. Ekkor egy, vagy több hostról annyi lekérdezést küldenek a webszervernek, hogy az felemészti a lehetőségeit, és ezért más számára lassan, vagy egyáltalán nem lesz elérhető. Az ilyen támadások kivédésére az Apache webserver alapból nem sok lehetőséget ad.

A megoldást (már amennyire) egy Apache modulban sikerült megtalálnom. Ez pontosan az ilyen egymás utáni drasztikusan soknak számító lekérések felismerésére, és ezek letiltására való.

A modul itt érhető el mind 1.x és 2.x-es Apache verziókhoz. Installálása pedig a következő egyszerű parancsokkal hajtható végre:

wget http://www.nuclearelephant.com/http://www.nuclearelephant.com/projects/mod_evasive/mod_evasive_1.10.1.tar.gz
tar -zxvf mod_evasive_1.10.1.tar.gz
cd mod_evasive

1.x Apache esetén:

/usr/sbin/apxs2 -cia mod_evasive.c

A következő sorokat pedig a httpd.conf filehez kell adni:


DOSHashTableSize 3097
DOSPageCount 6
DOSSiteCount 100
DOSPageInterval 2
DOSSiteInterval 2
DOSBlockingPeriod 600

2.x Apache esetén:

/usr/sbin/apxs -cia mod_evasive20.c

A következő sorokat pedig a httpd.conf filehez kell adni:


DOSHashTableSize 3097
DOSPageCount 6
DOSSiteCount 100
DOSPageInterval 2
DOSSiteInterval 2
DOSBlockingPeriod 600

Ezek után mindkét esetben az Apache server újratöltése szükségeltetik: /etc/init.d/apache restart

A beállításnál az egyes adatok a következő paramétert hivatottak megadni, ezt mindenki igény szerint változtathatja:

DOSHashTableSize
Size of the hash table. The greater this setting, the more memory is required for the look up table, but also the faster the look ups are processed. This option will automatically round up to the nearest prime number.

DOSPageCount
Number of requests for the same page within the ‘DOSPageInterval’ interval that will get an IP address added to the blocking list.

DOSSiteCount
Same as ‘DOSPageCount’, but corresponds to the number of requests for a given site, and uses the ‘DOSSiteInterval’ interval.

DOSPageInterval
Interval for the ‘DOSPageCount’ threshold in second intervals.

DOSSiteInterval
Interval for the ‘DOSSiteCount’ threshold in second intervals.

DOSBlockingPeriod
Blocking period in seconds if any of the thresholds are met. The user will recieve a 403 (Forbidden) when blocked, and the timer will be reset each time the site gets hit when the user is still blocked.

A letöltött csomagban található egy test.pl file is. Ezt lefuttatva tesztelhetjük mikor, és mennyire működik a korlátozásunk. Ez a kis script egy „támadást” hivatott emulálni. Akkor jó ha valami hasonlót látunk:

./test.pl

HTTP/1.1 200 OK
HTTP/1.1 200 OK
HTTP/1.1 200 OK
HTTP/1.1 200 OK
HTTP/1.1 200 OK
HTTP/1.1 200 OK
HTTP/1.1 200 OK
HTTP/1.1 200 OK
HTTP/1.1 200 OK
HTTP/1.1 200 OK
HTTP/1.1 200 OK
HTTP/1.1 200 OK
HTTP/1.1 200 OK
HTTP/1.1 200 OK
HTTP/1.1 200 OK
HTTP/1.1 200 OK
HTTP/1.1 200 OK
HTTP/1.1 200 OK
HTTP/1.1 200 OK
HTTP/1.1 200 OK
HTTP/1.1 200 OK
HTTP/1.1 200 OK
HTTP/1.1 200 OK
HTTP/1.1 200 OK
HTTP/1.1 200 OK
HTTP/1.1 200 OK
HTTP/1.1 200 OK
HTTP/1.1 200 OK
HTTP/1.1 200 OK
HTTP/1.1 200 OK
HTTP/1.1 200 OK
HTTP/1.1 200 OK
HTTP/1.1 200 OK
HTTP/1.1 200 OK
HTTP/1.1 403 Forbidden
HTTP/1.1 403 Forbidden
HTTP/1.1 403 Forbidden
HTTP/1.1 403 Forbidden
HTTP/1.1 403 Forbidden
HTTP/1.1 403 Forbidden
HTTP/1.1 403 Forbidden
HTTP/1.1 403 Forbidden
HTTP/1.1 403 Forbidden
HTTP/1.1 403 Forbidden
HTTP/1.1 403 Forbidden
HTTP/1.1 200 OK
HTTP/1.1 403 Forbidden
HTTP/1.1 403 Forbidden
HTTP/1.1 403 Forbidden
HTTP/1.1 403 Forbidden
HTTP/1.1 403 Forbidden
HTTP/1.1 403 Forbidden
HTTP/1.1 403 Forbidden
HTTP/1.1 403 Forbidden
HTTP/1.1 403 Forbidden
HTTP/1.1 403 Forbidden
HTTP/1.1 403 Forbidden
HTTP/1.1 200 OK
HTTP/1.1 403 Forbidden
HTTP/1.1 403 Forbidden
HTTP/1.1 403 Forbidden
HTTP/1.1 403 Forbidden
HTTP/1.1 403 Forbidden
HTTP/1.1 403 Forbidden
HTTP/1.1 403 Forbidden
HTTP/1.1 403 Forbidden
HTTP/1.1 403 Forbidden
HTTP/1.1 403 Forbidden
HTTP/1.1 403 Forbidden
HTTP/1.1 403 Forbidden
HTTP/1.1 403 Forbidden
HTTP/1.1 403 Forbidden
HTTP/1.1 403 Forbidden
HTTP/1.1 403 Forbidden
HTTP/1.1 403 Forbidden
HTTP/1.1 403 Forbidden
HTTP/1.1 403 Forbidden
HTTP/1.1 403 Forbidden
HTTP/1.1 403 Forbidden
HTTP/1.1 403 Forbidden
HTTP/1.1 403 Forbidden
HTTP/1.1 403 Forbidden
HTTP/1.1 403 Forbidden
HTTP/1.1 403 Forbidden
HTTP/1.1 403 Forbidden
HTTP/1.1 403 Forbidden
HTTP/1.1 403 Forbidden
HTTP/1.1 403 Forbidden
HTTP/1.1 403 Forbidden
HTTP/1.1 403 Forbidden
HTTP/1.1 403 Forbidden
HTTP/1.1 403 Forbidden
HTTP/1.1 403 Forbidden
HTTP/1.1 403 Forbidden
HTTP/1.1 403 Forbidden
HTTP/1.1 403 Forbidden
HTTP/1.1 403 Forbidden
HTTP/1.1 403 Forbidden
HTTP/1.1 403 Forbidden
HTTP/1.1 403 Forbidden
HTTP/1.1 403 Forbidden

mod_evasive apache modul a DoS támadások ellen” bejegyzéshez 3 hozzászólás

  1. de ez hol segít abban ha 10000 kliensről 3req/sec-kel jön a terhelés (pl. vmi fertőzött oldal js kódjából indítják a terhelést (akár szándékosan))

  2. Ahogy azt mondani az ellen ez nem ved. Sot ilyen problemaval mar eleg szofisztikalt megoldasok birnanak el igazan.

    A mod_evasive modul sajnos az en keves latogatast hozo oldalaim eseteben sem volt tul sikeres.. Ugyhogy erdekessegkepp itt van a leiras rola, de kifejezetten en sem tudom ajanlani.

Vélemény, hozzászólás?

Az e-mail címet nem tesszük közzé. A kötelező mezőket * karakterrel jelöltük