• Форум посвящен самостоятельной (бесплатной) защите от ддос атак.
    Есть мануалы по настройке сервера от Ddos для сисадминов и готовые инструменты от ддос-атак для вебмастеров.

    Простое, эффективное, точное и проверенное бесплатное решение от мощных ддос-атак: PHP скрипт + Cloudflare, с панелью управления.

Как правильно защитить сервер от ддос ?

Е

егор

New Member
#1
Помогите мне поставить защиту на VPS сервер от ддос.
Я всего хорошо не знеаю, но начитал что лучше всего на уровне nginx .. Где что можно почитать, с чего начать ? Мне нужна такая защита если больше 5 запросов в секунду то бан на 10 секунд и потом с бана проподает
ОС CentOS 6.x.
 
M

Marcus

Member
#2
В Nginx можно прописать:
Код:
limit_req_zone $binary_remote_addr zone=one:10m rate=1r/s; 

server {
    location ~ \.php$ {
        limit_req zone=one burst=5; # разрешает не более 1 запроса в секунду со всплесками не более 5 запросов.
    }
Если директива limit_req_zone не работает, нужно пересобрать Nginx с модулем ngx_http_limit_req_module или просто обновить Nginx, он вроде по-умолчанию идет.

Как это работает для пользователя:
  • если пользователь случайно кликнет три раза подряд по ссылке, Nginx просто задержит его запрос;
  • если пользователь кликнет подряд по нескольким внутренним ссылкам, то Nginx заставит его выждать соответствующий промежуток времени, пропорциональный числу бессмысленных нажатий и обработает только последний запрос;
  • если ошибку 503 получит робот поисковой системы, то он просто поймет, что надо зайти попозже и это не скажется на индексации сайта, кроме того, частоту загрузки страниц для поисковых систем можно ограничивать через robots.txt;
 
Последнее редактирование модератором:
M

Marcus

Member
#3
Потом можно будет забанить все айпи которые в логах выдают ошибку 503, на уровне файерволла.
 
DeathStar

DeathStar

Member
#4
Потом можно будет забанить все айпи которые в логах выдают ошибку 503, на уровне файерволла.
автоматически это можно делать при помощи fail2ban, вот фильтр для обработки лога от nginx

Код:
[INCLUDES]
before = common.conf

[Definition]
_daemon = nginx
failregex = limiting requests, excess:.* by zone.*client: <HOST>
ignoreregex =
 
Сверху