Как защитить свой сайт от Ддос атаки с помощью nginx

Антиддос

Всем привет, если вы читаете данную новость значит на ваш сайт идет ДДос атака и вы не знает как ее отбить.Если атака не сильно мощная, а у вас достаточно мощный сервер вы можете установить nginx, если конечно он у вас не установлен. И так вы установили nginx для Centos, далее вам надо активировать модуль geo ip. Для этого нужно прописать в файл конфигурации /etc/nginx/nginx.conf , вам надо прописать после
http {

geo $geo {

include conf.d/geo.data;

default XX;

}

и далее после каждого
server { где надо задать ограничения прописать:
set $a 0;

if ($geo = RU)
{
set $a 1;
}

if ($geo = UA)
{
set $a 1;
}

#для неизвестных айпи в вашей гео базе
if ($geo = XX)
{
set $a 1;
}

if ($a = 0)
{
return 444;
}

данный способ запрещает доступ всем странам кроме России и Украины… вы можете также добавить другие страны добавив при этом новые правила к примеру после

if ($geo = UA)
{
set $a 1;
}
добавить

if ($geo = US)
{
set $a 1;
}

должно получиться

set $a 0;

if ($geo = RU)
{
set $a 1;
}

if ($geo = UA)
{
set $a 1;
}

if ($geo = US)
{
set $a 1;
}
#для неизвестных айпи в вашей гео базе
if ($geo = XX)
{
set $a 1;
}

if ($a = 0)
{
return 444;
}

и так далее …

Если вы хотите разрешить доступ всем странам .. но запретить некоторым вам стоит использовать правило

if ($geo = CN)
{
return 444;
}

после
server {.

Итак со странами разобрались, дальше нужно поставить ограничение на кол. соединения. Я использую тот же nginx, для этого в том же файле конфигурации /etc/nginx/nginx.conf

после
http { прописываем значение
limit_req_zone $binary_remote_addr zone=one:3m rate=1r/s; .В данном случае состояния сессий хранятся в зоне «one» размером 3 мегабайта и средняя скорость запросов для этой зоны не может более 1 запроса в секунду.
Далее после кажлого
location / { где надо включить защиту прописываем
limit_req zone=one burst=5; позволяет делать в среднем не более 1 запроса в секунду со всплесками не более 5 запросов.

Сохраняем и перезапускаем nginx.

Далее можно еще использовать iptables модуль ipset , а также ставить перед сервером аппаратную антиддос систему.

Как вариант можно еще собрать список айпи которые получили 444 статус от nginx и добавить в iptables вручную или через крон.

tail -1000 /var/log/nginx/access.log | grep » 444 » | cut -f1 -d» » | sort -u