Здравствуйте. Думал было упаковать slowloris и mod_qos, но похоже, сегодня не успею, а потом забуду -- решил по крайней мере письмом описать.
Как известно, apache с моделью "один клиент -- один процесс" (или одна нить, не суть важно) уязвим к слишком большому количеству соединений, когда выедается память. Поэтому обычно лимиты на количество соединений устанавливаются "в разумных пределах". Правда, при этом возможно организовать отказ в обслуживании методом создания и поддержания соответствующего количества соединений. По адресу http://ha.ckers.org/slowloris/ не так давно был опубликован скрипт, использующий довольно давно известные моменты, но переводящий их в практическое русло и весьма эффективно DoS'ящий apache 1.x/2.x (в отличие от IIS 6/7, lighttpd и nginx). В логах не отсвечивает, заметен только по стопке ESTABLISHED в `netstat -pan | grep httpd`. Насколько понимаю, из используемого мной: * mod_security неэффективен, поскольку до него дело не доходит; * mod_limitipconn умеренно эффективен, поскольку не занимается сокетами (?); * nginx может быть неэффективен, если до backend apache "долетает" достаточное количество таких тормозных соединений. До mod_qos руки не дошли, пока кажется достаточным добавление в секцию http{} уже используемого в качестве реверс-прокси nginx: client_header_timeout 11; client_body_timeout 11; keepalive_timeout 11; send_timeout 11; # limit_zone slowdown $binary_remote_addr 1m; # limit_conn slowdown 7; при лимитах в httpd.conf (вероятно, ещё будут корректироваться): Timeout 35 KeepAlive On KeepAliveTimeout 65 MinSpareServers 1 MaxSpareServers 2 StartServers 4 #MaxClients 8 MaxClients 16 MaxRequestsPerChild 100 ListenBacklog 511 и подобной настройке mod_limitipconn: <IfModule mod_limitipconn.c> <Location /> MaxConnPerIP 2 </Location> # ... </IfModule> Речь про apache-1.3. См. тж.: * http://ha.ckers.org/blog/20090620/http-longevity-during-dos/ * http://www.codexon.com/posts/defending-against-the-new-dos-tool-slowloris -- ---- WBR, Michael Shigorin <[email protected]> ------ Linux.Kiev http://www.linux.kiev.ua/ _______________________________________________ Sysadmins mailing list [email protected] https://lists.altlinux.org/mailman/listinfo/sysadmins
