Предлагаю решение, защищающее от DDOS.

Himiko
На сайте с 28.08.2008
Offline
559
#51
(кстати, proxy_store vs proxy_cache - что шустрее получается в данном контексте?)

Кстати, proxy_story не проверял как работает.

Профессиональное администрирование серверов (https://systemintegra.ru). Круглосуточно. Отзывы (/ru/forum/834230) Лицензии (http://clck.ru/Qhf5) ISPManager,VDSManager,Billmanager e.t.c. по низким ценам.
M
На сайте с 16.09.2009
Offline
278
#52
Himiko:
Кстати, proxy_story не проверял как работает.

я тоже proxy_cache использую, но вот:

http://hll.msu.ru/item_165.html

Абонементное сопровождение серверов (Debian) Отправить личное сообщение (), написать письмо ().
zexis
На сайте с 09.08.2005
Offline
358
#53
myhand:
А какие именно критерии ddos (по логам nginx, по нетстат)?

Для поиска ддоса в логах nginx использую довольно много критериев.

Те IP которые не попадают под эти критерии, заносятся в фаервол.

Цифры лимитов, которые ниже приведены, указаны только для примера и настраиваются под конкретный сайт.

1. не более N одинаковых запросов за определенный промежуток времени с одного IP.

2. для каждого IP не более определенного числа разных запросов за минуту, за 3 минуты, за 10 минут.

3. для каждого IP не более определенного числа запросов к PHP файлам за минуту, за 3 минуты, за 10 минут.

4. каждый IP должен делать хотя бы 1 паузу в работе длиной 5 секунд в течении минуты. Длиной 20 секунд в течении 3 минут, Длиной 2 минуты в течении 10 минут. (например если за минуту не было ни одной 5 секундной паузы, то принимается решение, что это бот и банится)

5. Не более определенного числа запросов к несуществующим PHP файлам за промежуток времени.

6. Есть еще несколько особенностей работы ботов по которым их можно обнаружить, которые я раскрывать не хотел бы.

Выдача команды netstsat также анализируется.

Например если с какого то IP будет больше определенного количества коннектов, то то этот IP заносится в фаервол.

Пока этих правил мне хватает, что бы отбивать ддос.

Если боты пойдут более интеллектуальными и изощренными, то придется разрешать просмотр сайта только зарегистрированным посетителям и при регистрации и каждом логине просить пользователя вводить число с картинки. На каждого зарегистрированного посетителя выставлять лимиты на количество запросов за периоды времени.

M
На сайте с 16.09.2009
Offline
278
#54

1-3,5 умеет limit_conn/limit_req в nginx. Почти, так как пока только обещали

поддержку _нескольких_ директив limit_req на одном уровне. Только ограничения

работают не для "одинаковых запросов" - а на уровне location.

Таким образом, функционал _пока_ эквивалентен строчке на sh + awk (по замечанию

Himiko). Скрипт для выгребания IP ботов из error.log nginx в файервол + критерии limit_req/conn.

Польза 4 весьма сомнительна. Вами собиралась какая-то статистика по

срабатыванию правил? По ложным срабатываниям? Насколько 4 в итоге оказалось полезным?

zexis
На сайте с 09.08.2005
Offline
358
#55
myhand:
1-3,5 умеет limit_conn/limit_req в nginx. Почти, так как пока только обещали
поддержку _нескольких_ директив limit_req на одном уровне. Только ограничения
работают не для "одинаковых запросов" - а на уровне location.

Таким образом, функционал _пока_ эквивалентен строчке на sh + awk (по замечанию
Himiko). Скрипт для выгребания IP ботов из error.log nginx в файервол + критерии limit_req/conn.

Польза 4 весьма сомнительна. Вами собиралась какая-то статистика по
срабатыванию правил? По ложным срабатываниям? Насколько 4 в итоге оказалось полезным?

большинство ботов которые ко мне идут успешно ловятся пунктами 1,2,3.

Ставлю несколько лимитов с разными периодами времени на разные типы файлов.

Необходимости в жесткой настройке 4 пункта пока не было.

Но намой взгляд критерий 4 весьма полезный.

Ловить ботов установкой лимитов limit_conn/limit_req в nginx и последующим анализом файла error.log – тоже довольно удобно и эффективно.

Но у меня был написан свой анализатор логов. Который делает примерно тоже самое.

Мне им пользоваться удобнее. А в чем то он даже более гибкий для настройки чем установки лимитов в limit_conn/limit_req в nginx

Himiko
На сайте с 28.08.2008
Offline
559
#56
например если за минуту не было ни одной 5 секундной паузы, то принимается решение, что это бот и банится

А если это поисковый бот к примеру?

M
На сайте с 16.09.2009
Offline
278
#57
zexis:
Ловить ботов установкой лимитов limit_conn/limit_req в nginx и последующим анализом файла error.log – тоже довольно удобно и эффективно.
Но у меня был написан свой анализатор логов. Который делает примерно тоже самое.

Дело в том, что nginx не банит сразу по IP на файерволе (что очень плохая

затея). Это как минимум - "вторая стадия" (обработка error.log на предмет срабатывания

лимитов). Просто возвращается 503 ошибка, обработчик 503 можно и нужно сделать

статическим, nginx статику отдает на ура.

Подобный статус ошибки (в отличие от DROP в файерволе) "поймут" и пользователи

сайта, и поисковые боты.

Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий