A DoS gáz dolog. Ha jól csinálják akkor sok mindent úgyse tehet az ember, de azért normál site -oknál ritka, hogy igazán "komoly ellenséget" szerezzen az ember, úgyhogy valószinűleg az esetleges támadás se kivédhetetlen.
Webszervereknél legelső védvonal a tűzfal. Léteznek olyan megoldások amik dinamikusan a forgalom elemzése alapján generálnak új tűzfal szabályokat és ezzel zárják ki az esetleges támadókat. Én ezekkel most nem foglalkozom. Nem mintha nem lennének jók, de valahogy ódzkodom attól, hogy életre keljen a szerverem ;)
Amit viszont használok az a shorewall blacklist funkciója. Itt kézzel kell hozzáadni a nem kivánatos IP -ket a blacklist filehoz. Hogy mik a kitiltandó IP -k azt a logokból vagy így lehet meghatározni.
Következő lépés a proxy. Ezzel sok baj nincs az nginx elég gyors, de azért picit ezen is lehet finomítani. A client_body_timeout és a client_header_timeout értékek megfelelően kicsi megválasztásával lehet segíteni a dolgon. Hogy mennyi a megfelelően kicsi az jó kérdés. A default az 60 sec én átállítottam 10 sec -re, erre még senki se panaszkodott.
Következik az Apache. Ez már problémás dolog, mivel a kiszolgálás ideje itt veszik el. Itt van az a pont ahol előjön, hogy az adott alkalmazás mennyire van jól megírva. Ha egy kérés kiszolgálása több másodpercig fut akkor DoS se kell ahoz, hogy vészessen belassuljon a szerver. Mivel a DoS elleni védekezés jórészt teljesítmény kérdés ezért érdemes azzal is foglalkozni. Következő postomban néhány módszert fogok mutatni a lassú alkalmazások felderítésére, de addig is mit lehet tenni a szerverrel?
Az Apache -nak vannak ilyenirányú útmutatásai, ezeken érdemes végigmenni. Én még ide sorolnám a MaxRequestsPerChild -et is. Ezt célszerű egy nem túl magas értékre állítani (5000), ami lehet, jót tesz a vészes memória fogyás ellen. Érdekes kérdés még a KeepAlive, hogy kell e egyáltalán? Normál esetben nyilván jó ha van, de ha proxy mögött vagyunk (ahol be van állítva) és az Apache -hoz csak a PHP -s cuccok jutnak el már nem kéne. Köztes esetekben, fogalmam sincs, - ki kéne próbálni, melyik a gyorsabb. Én nálam van, csak levettem a KeepAliveTimeout -ot.
Végezetül, egy célszerszám a mod_evasive, ami egy DoS elleni védekezést támogató Apache modul. Ez tud aktívan is védekezni, de én csak passzív módon használom. Mikor egy adott IP -ről a megadottnál gyakrabban jön kérés akkor oda 403 -al válaszol. Bővebben ittlehet róla olvasni.
Utolsó kommentek