Что такое SlowLoris
У вас случалось такое, когда на сервере нагрузки нет, свободной памяти достаточно, и при этом ваш сайт не открывается?Если при этом на статусной страничке апача все треды в состоянии R (reading), весьма вероятно, что вы находитесь под атакой SlowLoris.
SlowLoris означает, что злоумышленники открывают множество коннектов к серверу, однако не посылают много-много запросов, а, наоборот, посылают один и медленно-медленно. В таком случае серверу не остается ничего другого, кроме как ждать, когда же вы запрос наконец придёт. А он всё не приходит и не приходит.
В результате все треды (или потоки) апача заняты тем, что ждут, когда же всё-таки запрос придёт.
Nginx перед или вместо Апача
Nginx атаке SlowLoris практически не подвержен. Конечно, у него есть лимит открытых соединений, который по дефолту довольно маленький, однако его можно увеличивать практически безболезненно для системы. Не забывая, конечно, при этом увеличивать значение worker_rlimit_nofile.
Однако иногда бывает, что по каким-то причинам Нжинкс перед Апачем не поставить. Делать нечего, надо отбиваться другими силами.Так и как бороться?
Я для этой цели написал небольшой скрипт, который делает следующее:
- Выбираем из /server-status список PID'ов процессов апача, которые заняты чтением (reading).
- Из вывода netstat смотрим, с каких IP идут коннекты
- Баним эти IP
#!/bin/bash date >> /tmp/banned lynx -dump localhost/server-status | grep reading | awk '{if ($6 > 10 ) print $2}' > /tmp/processes for pid in `cat /tmp/processes`; do IP=`netstat -ntp | grep EST| grep $pid | awk '{print $5}' | cut -d: -f1`; echo $IP >> /tmp/banned iptables -t raw -I PREROUTING -s $IP -j DROP 2>/dev/null doneИ запускаем этот скрипт по крону раз в сколько-то минут.
Для его работы необходим lynx, который можно установить командой:
$ sudo aptitude install lynxНе забудьте включить mod_status у апача. В моём случае он отвечает на localhost/server-status.
2 комментария:
У меня nginx стоит как реверс прокси - и он все запросы передает на апач, в том числе и замедленные.
mod_reqitimeout и mod_antiliris вопрос нмного исправили, но слот апача все равно остается занятым на период 100-300 мсек пока обслуживает запрос.
Так что вопрос с баном по IP мне поможет несмотря на эти приблуды (выше).
настроить nginx так чтобы он не передавал медленный запрос не смог.
The Best Casino Site in the UK - Lucky Club
Our list of the best online luckyclub casinos offers plenty of fun and money to play online and on-line, Betfair, Paddy Power, Betfair, Coral, Betfair, Gambling.
Отправить комментарий