Dimanych

Рейтинг
155
Регистрация
05.06.2007

Новая информация,

после перезапуска апача через несколько секунд работы в логи ничего не пишет указанное время, Timeout 30, после видимо происходит сброс подключений и в логи начинает писать, опять же всего несколько секунд, а потом опять таймаут.

И так я попробовал Timeout 5, и действительно, апач начал обрабатывать запросы и писать в лог, но на сколько мне ихвесно 5 секунд очень маленький таймаут и многие нормальные подключения будут недорабатываться.

Так как состояние reading, а для этой дерективы и данного случая это время приёма GET запроса, я делаю вывод что nginx отправляет не полный заголовок запроса GET и апач продолжает ждать.

В чём фокус? nginx отправляет часть заголовка GET до того как он его сам полностью получит? Почему то думал что именно nginx должен защищать от подобного рода проблемы.

Ещё одна атака, теперь более ясная, но от неё ещё хуже))

Атака идёт на сайт, он известен, на сервере mpm-itk с ограничением

MaxClientsVhost 10.

При атаке запросы проксируются апачу и он после рестарта за секунду набирает 256 клиентов которые висят в системе ничего не делая под пользователем root. Система не нагружена.

В error_log:

[Wed Jun 22 14:28:17 2011] [warn] MaxClientsVhost reached for website.ru, refusing client.

[Wed Jun 22 14:28:18 2011] [error] server reached MaxClients setting, consider raising the MaxClients setting

В статусе апача который всёже загружается через пару минут:

Srv PID Acc M CPU SS Req Conn Child Slot Client VHost Request
0-0 27322 0/113/113 R 0.00 4 0 0.0 0.42 0.42 ? ? ..reading..
1-0 27323 0/102/102 R 0.00 4 0 0.0 0.44 0.44 ? ? ..reading..
2-0 27324 0/145/145 R 0.00 17 0 0.0 0.42 0.42 ? ? ..reading..
3-0 27327 0/254/254 R 0.00 28 0 0.0 0.44 0.44 ? ? ..reading..
4-0 27328 0/281/281 R 0.01 13 13 0.0 0.47 0.47 ? ? ..reading..
5-0 27329 0/191/191 R 0.00 15 0 0.0 0.51 0.51 ? ? ..reading..
6-0 27332 0/107/107 R 0.00 16 0 0.0 0.42 0.42 ? ? ..reading..
7-0 27333 0/313/313 R 0.00 28 1 0.0 0.57 0.57 ? ? ..reading..
8-0 27335 0/129/129 R 0.00 16 0 0.0 0.46 0.46 ? ? ..reading..
9-0 27338 0/234/234 R 0.00 4 0 0.0 0.43 0.43 ? ? ..reading..

и т.д.

В нетстате как я подозреваю проблема в SYN, потому что nginx делает запрос апачу и много таких подключений:

tcp 0 1 127.0.0.1:50108 127.0.0.1:8080 SYN_SENT
tcp 0 1 127.0.0.1:52809 127.0.0.1:8080 SYN_SENT
tcp 0 1 127.0.0.1:54524 127.0.0.1:8080 SYN_SENT
tcp 0 1 127.0.0.1:46297 127.0.0.1:8080 SYN_SENT
tcp 0 1 127.0.0.1:59454 127.0.0.1:8080 SYN_SENT
tcp 0 1 127.0.0.1:60234 127.0.0.1:8080 SYN_SENT
tcp 0 1 127.0.0.1:56519 127.0.0.1:8080 SYN_SENT
tcp 0 1 127.0.0.1:44907 127.0.0.1:8080 SYN_SENT
tcp 0 1 127.0.0.1:60265 127.0.0.1:8080 SYN_SENT
tcp 0 1 127.0.0.1:55100 127.0.0.1:8080 SYN_SENT

netstat -na|grep SYN_SENT|wc -l

4453

netstat -na|grep ESTAB|wc -l

16178

cat /proc/sys/net/ipv4/tcp_syncookies

1

syncookies включены

В конфиге апача

Timeout 30
KeepAlive On
MaxKeepAliveRequests 100
KeepAliveTimeout 5
<IfModule mpm_prefork_module>
StartServers 10
MinSpareServers 10
MaxSpareServers 40
ServerLimit 200
MaxClients 200
MaxRequestsPerChild 1000
</IfModule>

Почему апач не блокирует новые подключения к сайту сразу, чего он ждёт, почему процессы висят, что за статус такой ..reading..

Кто-нибудь в курсе подобной проблемы?

Чесно сказать не понимаю почему так, среди большого числа LAST_ACK, припоминаю, были также и ESTABLISHED около 10тыс.

Лог включен для всех вирт. хостов, есть один общий лог, лог отключается только когда идёт проксирование к апачу, и тогда в этот общий лог пишет сам апач.

Апач вообще не ощущал запросов, т.е. они до него и не доходили. Ситуация непонятная. Хотя в лог ведь пишется после завершения соединения, а они в состоянии LAST_ASK. Может поэтому?

netwind, вот я вижу вы уже начали понимать на счёт лога, атака не на HTTP, а на TCP стек. При SYN флуде такой же эффект, в логах ничего не будет, так как tcp не прошёл все стадии завершения подключения, и тем не менее для nginx это ещё подключение. Всего то 2к ботов было, когда отфильтровал всех кто занял более 100 подключений, всё заработало, а через часик начали другой тип атаки, уже по HTTP на сайт клиента, ну ничего, сайт его всё равно открывался, хоть и через раз, а на сервер это не повлияло, там уже срабатывал другой тип защиты по анализу логов.

PS. хотя может я что-то путаю, ведь LAST_ACK это завершение подключения, после ESTABLISHED.

Но факт что в логах нет ничего и 80й порт в большой очереди.

Я не говорил что это синфлуд, я сказал что эффект похожий, подключения в ожидании.

Дело то в том что запросы не доходят до апача, они через nginx то не проходят вообще, в access_log ничего не пишется, в error_log только о превышении worker connection писалось, после увеличения вообще ничего не писалось.

LAST_ACK состояние - это не обычный дос, при обычном другие симтомы, не первый раз воюю ;)

На счёт ограничения на 100, это помогло, сайты заработали, но для нормальной работы сервера этого мало, очень частые блоки обычных клиентов, которые например закачивают файлы по FTP, либо импортируют базу через какой то скрипт.

200 хватало, но тут уже атакуюшие плохо отбиваются.

В сумме 50-60тыс подключений, просто в состоянии LAST_ACK 24тысчи.

И он совсем не падает, 80й порт в очереди видимо. По логам nginx писал что ему мало подключений, было worker_connections 4000, сделал 10000, ошибка пропала, а сайты так и не открывались, или открывались через минуту.

Пришлось блокать IP адреса которые занимали более 100 состояний подключений.

Но такое решение не очень нравится.

Никогда не видел таких тарифов, помоему самое время закрываться.

LeXA86:
Всем спасибо. Хостинг выбрал. Буду потихоньку переезжать.

Какой выбрали если не секрет, и по какой цене? Сайты на DLE?

zexis:
Варианты такие
1) берете выделенный сервер и ставите на него программную защиту.
2) Остаетесь на старом хостинге и заказываете фильтрацию трафика. Цены от 150$ в месяц.

Сейчас очень распространённые атаки по UDP на +100мбит, пинга почти нет.

Я даже знаю где продают VPS за 20$ с исходящим трафиком по 500мбит и не блокируют их за подобные атаки...

жить становится сложнее (

horrors:
Как видим (по соседним темам) хостинги подороже тоже не шибко блещут стабильностью...☝

потер.. торможу

это точно, есть хостинги мажоры, такие как мастерхост, куча клиентов по мега тарифам, но если у вас возникнет проблема с нагрузкой, поисковые боты зайдут лишний раз или вас начнут досить, то будете с неделю смотреть на страницу ваш сайт заблокирован, причём виноваты конечно же вы в этом, хотя от вас это не зависит... 🙅

Всего: 830