Всем привет !
В новых версиях панели, появилась возможность подключить и настроить защиту от небольших ддос-атак в пару кликов !
Итак, вообще способ похож на этот:Придумал прикольную защиту от ботов (или слабого DDOS)
Но более совершенен, например не нужно ставить fail2ban и более производительные скрипты...
В общем суть:
Для работы системы используется модуль ngx_http_limit_req_module.
Модуль ngx_http_limit_req_module позволяет ограничить скорость обработки запросов по заданному ключу или, как частный случай, скорость обработки запросов, поступающих с одного IP-адреса.
Пример конфигурации:
Код:
http {
limit_req_zone $binary_remote_addr zone=one:10m rate=1r/s;
server {
location /search/ {
limit_req zone=one burst=5;
}
В зоне размером 1 мегабайт может разместиться около 16 тысяч состояний размером 64 байта. При переполнении зоны в ответ на последующие запросы сервер будет возвращать ошибку 503 (Service Temporarily Unavailable).
Скорость задаётся в запросах в секунду (r/s).
Для включения защиты от DDoS необходимо в настройках WWW-домена включить переключатель "Включить защиту от DDoS-атаки", после чего необходимо заполнить поля "Количество запросов в секунду" и "Максимальный размер всплеска".
После сохранения изменений в файле $HOME_NGINX/conf.d/isplimitreq.conf будет создана запись, к примеру:
limit_req_zone $binary_remote_addr zone=example.com:128k rate=2r/s;
где:
Код:
zone - имя зоны разделяемой памяти, наывается по имени WWW-домена;
размер зоны (128к) рассчитывается по формуле: "скорость запросов" * 64к;
rate - скорость поступления запросов, определяется в поле формы "Количество запросов в секунду".
Код:
limit_req zone=example.com burst=3;
error_page 503 =429 @blacklist;
Код:
zone - имя зоны, определенной в предыдущем конфигурационном файле;
burst - размер всплеска, определенной в поле формы "Максимальный размер всплеска";
@blacklist - имя локейшена, в который осуществляется редирект, при срабатывании ошибки 503, т.е. превышении порога количества запросов с IP-адреса.
location @blacklist {
Код:
proxy_redirect off ;
proxy_pass https://IPADDRESS;
rewrite (.*) /mancgi/ddos break;
proxy_set_header Host $host;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
где:
Код:
IPADDRESS - IP-адрес и порт который слушает IHTTPD. При изменении адреса панели, измененный адрес и порт перезаписываются в этом файле. Если IHTTPD настроен на прослушку любого адреса, то выбирается любой из валидных IP-адресов, настроенных на сервере.
WARNING Address (xxx.xxx.xxx.xxx) is blacklisted
Сама блокировка осуществляется с помощью iptables (ip6tables для IPv6) и ipset.
В iptables создается цепочка правило:
Код:
DROP all -- anywhere anywhere match-set ispmgr_limit_req src
в ipset создаются два набора ispmgr_limit_req и ispmgr_limit_req6 с параметрами: hash:ip (в списке хранятся только IP-адреса) и timeout 300 (срок хранения записи 5 минут).
Чтобы проверить содержимое списка можно использовать команду: ipset -L ispmgr_limit_req. В выводе команды в поле "Members" будут отражены все адреса, попавшие в список, и время оставшееся до конца блокировки.
КАК ПОДКЛЮЧИТЬ:
1)В настройках www-домены, нужного домена, делаем галочку "Включить защиту от DDOS-атак":
2)Далее ниже, настраиваем число запросов, обычно 1-2, далее число всплесков, настраивается в зависимости от ддос атак, если атаки нет можно поставить 15-20, если атака есть то 5-10...
ВАЖНО:ТЕСТИРУЮ ЭТО ЗДЕСЬ, ОТПИСЫВАЙТЕСЬ, ЕСТЬ-ЛИ БЛОКИРОВКИ...