Re: мля атака =(

Maxim Dounin mdounin на mdounin.ru
Чт Дек 9 00:51:54 MSK 2010


Hello!

On Thu, Dec 09, 2010 at 12:07:32AM +0300, -=HaRius=- wrote:

> наверное пинать будете не в тему рассылки, но сжальтесь!!!
> 
> с 12 часов лежимс =(
> 
> че делать уже идеи кончались
> перекрутил sysctl уже во все стороны
> сервак начал немного ползать, но как только
> nginx запускаю в консоль сразу начинает валится
> 
> Dec  8 23:56:08 mail kernel: interrupt storm detected on "irq257:";
> throttling interrupt source
> Dec  8 23:56:08 mail kernel: Limiting open port RST response from 169 to 50
> packets/sec
> Dec  8 23:56:09 mail kernel: interrupt storm detected on "irq257:";
> throttling interrupt source
> Dec  8 23:56:09 mail kernel: Limiting open port RST response from 230 to 50
> packets/sec

Я правильно понимаю, что irq257 - сетевуха?  Если она 
сколько-нибудь приличная, то попробовать потюнить буфера/задержки 
прерываний.  Ну или просто поднять hw.intr_storm_threshold, чтобы 
по крайней мере сеть пыталась работать.

> в логах полно:
> 
> 80.138.138.94 - - [08/Dec/2010:23:32:16 +0300] "GET / HTTP/1.1" 0 0 "-" "IE
> 7.0"

[...]

> что сделано
> 1. fail2ban натравлен на поиск агента "IE 7.0"  - блочит, но не спасает
> 2. временно location = / { return 200; } - не спасает
> 3. if ($http_user_agent = "IE 7.0" ) { return 412;}
> 
>         if ($http_referer = "") { return 412;} - тож не стасает

Ну уж тогда return 444;.

> 4. sysctl - накручен
> 
> sysctl -n kern.ipc.numopensockets
> 90228

reset_timedout_connection on;

Хотя 90k - это в общем не много.

> 
> # netstat -Lan
> Current listen queue sizes (qlen/incqlen/maxqlen)
> Proto Listen         Local Address
> tcp4  0/0/128        *.4949
> tcp4  0/0/4096       88.212.196.18.443
> tcp4  0/0/4096       88.212.196.18.80
> tcp4  0/0/128        *.22
> tcp4  0/0/500        *.25
> tcp4  0/0/5          88.212.196.18.5666
> tcp4  0/0/20         127.0.0.1.53
> tcp4  0/0/511        127.0.0.1.80
> Some tcp sockets may have been created or deleted.
> unix  0/0/1          /var/run/fail2ban/fail2ban.sock
> unix  0/0/4          /var/run/devd.pipe

Ну просто таки тишина и покой.  Впрочем, это вероятно следствие 
"throttling interrupt source".

> # netstat -m
> 1377/36183/37560 mbufs in use (current/cache/total)
> 754/33038/33792/33792 mbuf clusters in use (current/cache/total/max)

А говорите sysctl накручен.  У вас mbuf cluster'ов с гулькин фиг.

sysctl kern.ipc.nmbclusters=262144

В nginx'е можно ещё поуменьшать буфера на сокетах (listen ... 
rcvbuf=... sndbuf=...), дабы немного поэкономить память если её не 
хватает.

> 36/1628 mbuf+clusters out of packet secondary zone in use (current/cache)
> 0/0/0/16896 4k (page size) jumbo clusters in use (current/cache/total/max)
> 0/0/0/8448 9k jumbo clusters in use (current/cache/total/max)
> 0/0/0/4224 16k jumbo clusters in use (current/cache/total/max)
> 1852K/75121K/76974K bytes allocated to network (current/cache/total)
> 0/17954981/0 requests for mbufs denied (mbufs/clusters/mbuf+clusters)
> 0/0/0 requests for jumbo clusters denied (4k/9k/16k)
> 0/0/0 sfbufs in use (current/peak/max)
> 0 requests for sfbufs denied
> 0 requests for sfbufs delayed
> 1377 requests for I/O initiated by sendfile
> 0 calls to protocol drain routines
> 
> как еще бороться ?????

Ну и vmstat -z посмотрите для комплекта, там лучше видно чего не 
хватает.

Но при таком количестве mbuf cluster'ов при таком количестве 
сокетов - странно что оно вообще работает, должно всё в 
zonelimit'е висеть беспробудно.

Maxim Dounin



Подробная информация о списке рассылки nginx-ru