Preprecitev DDOS-a
7 naročnikov
7 naročnikov
Ponavadi imam load < 0.1 danes pa mi procesor nabije na 100% in load tudi do 40 (!)
S htop vidim, da se kar naenkrat ustvari vecja stevilka mysql procesov.
V apache error logu sem videl tudi
mysqlselectdb(): Too many connections
Sumim, da me eden napada z http floodom, ki ga analytics ne zazna(saj je online obiskovalcev vedno konstantno in ni vecjih odstopanj).
Zanima me kako lahko zaznam tak napad in ga preprecim.
Server tece na debianu.
LP
18 odgovorov
Težko se zaščitiš, sploh brez primerne infrastrukture. Mimogrede, koliko imaš online obiskovalcev normalno?
najhitreje boš videl s tole komando:
netstat -ntu | grep ':' | awk '{print $5}' | sed 's/::ffff://' | cut -f1 -d ':' | uniq -c | sort -nr
Koliko dejansko je povezav iz enega ipja oz. večih... Če je tega res veliko 200+ iz enega ipja, lahko to smatraš kot DOS napad. Če to ni res, potem povečaj limit povezav na MySQL, saj butaš limit max. uporabnikov. Preveri tudi da ne delaš persistent connectionov na bazo, ker v tem primeru hitro zabiješ te cifre.
Aja še to, če gre za navaden DOS napad, se pravi iz enega ali omejeno število IPjev, se jih da do določene mere poblokirat v Firewallu, tako da ti kurijo samo linijo, ne zabijejo ti pa strežnika. Če gre za masiven DDOS napad, pa prav veliko glede tega ne moreš, vsaj ne z laičnim znanjem...
@blackbird
Sem poizkusil tudi to in ugotovil, da je tam max 30 povezav na en IP.
Zdajle si mi dal misliti in bom pogledal v kodi, ce sem kje pozabil zapret povezavo do mysqla.
Ker predvidevam da je limit 1024 jaz pa imam online 500-600 obiskovalcev se zadeva hitro zafila.
Bom porocal.
LP
Sem nastavil limit na 500 ampak se vedno mi zabija procesor(online je cca. 400 userjev).Ampak cudno je, da se potem sprosti in je nekaj casa OK potem pa spet zraste...
Sem ugotovil problem(vsaj upam).
Disk je bil 95% zaseden zaradi apache logov.
Ko sem jih pobrisal in vse resetiral je load med 0.01 in 0.10 :)
Persistent povezav nisem delal, sem pa povecal max_con limit na 500.
Mogoce kdo ve zakaj ima disk vezo s tem?
LP
Ja. Fragmentacija...
Bolj poln ko je disk, na več kosov se drobijo vse datoteke. In zato traja več časa, da glava trdega diska prebere vse koščke. To seveda ne velja za SSD.
Aha logicno ja technolog :)
Aja pa zgleda je problem nazaj ker sem spet videl 20 loada - seveda je padel kasneje.
Obiskovalci se niso povecali :S Glavni problem je spet mysql.
Res me zanima kako hudica bi odkril, ce gre za napad ali kaj drugega :(
Če ne butaš limitov v mysql je možnost da imaš premalo rama, pa začne mysql swapat, kar pa se pozna takoj na loadu, ki naraste na nenormalne številke.
Moje mnenje: omisli si sistemskega administratorja, oz. vsaj toliko da ti preveri sistem in postavi tako kot mora biti.