• Уменьшение отступа

    Обратная связь

    (info@ru-sfera.pw)

ВАЖНО Защита от DDOS-атак в панели ISPManager 5


X-Shar

:)
Администрация
Регистрация
03.06.2012
Сообщения
6 068
Репутация
8 174
upload_2016-2-4_12-35-39.png


Всем привет !

В новых версиях панели, появилась возможность подключить и настроить защиту от небольших ддос-атак в пару кликов !My mind

Итак, вообще способ похож на этот:Придумал прикольную защиту от ботов (или слабого 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;
           }
Задаёт зону разделяемой памяти (zone=one) и максимальный размер всплеска запросов (burst). Если скорость поступления запросов превышает описанную в зоне (rate=1r/s), то их обработка задерживается так, чтобы запросы обрабатывались с заданной скоростью. Избыточные запросы задерживаются до тех пор, пока их число не превысит максимальный размер всплеска. При превышении запрос завершается с ошибкой 503 (Service Temporarily Unavailable). По умолчанию максимальный размер всплеска равен нулю.

В зоне размером 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 - скорость поступления запросов, определяется в поле формы "Количество запросов в секунду".
Далее, будет создан файл $HOME_NGINX/vhost-resources/ИМЯ_ДОМЕНА/reqlimit.conf c содержимым:
Код:
limit_req zone=example.com burst=3;
   error_page 503 =429 @blacklist;
где:
Код:
 zone - имя зоны, определенной в предыдущем конфигурационном файле;
   burst - размер всплеска, определенной в поле формы "Максимальный размер всплеска";
   @blacklist - имя локейшена, в который осуществляется редирект, при  срабатывании ошибки 503, т.е. превышении порога количества запросов с IP-адреса.
Далее, будет создан файл $HOME_NGINX/vhost-includes/blacklist.conf c содержимым:

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-адресов, настроенных на сервере.
При превышении порога количества запросов IP-адрес, с которого поступают запросы, передается в скрипт /mancgi/ddos, который вносит данный IP-адрес в список заблокированных адресов на 5 минут. При блокировке в лог-файл $HOME_MGR/var/ddos.log вносится запись:

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 (для IPv6 - ispmgr_limit_req6)

в ipset создаются два набора ispmgr_limit_req и ispmgr_limit_req6 с параметрами: hash:ip (в списке хранятся только IP-адреса) и timeout 300 (срок хранения записи 5 минут).

Чтобы проверить содержимое списка можно использовать команду: ipset -L ispmgr_limit_req. В выводе команды в поле "Members" будут отражены все адреса, попавшие в список, и время оставшееся до конца блокировки.

КАК ПОДКЛЮЧИТЬ:


1)В настройках www-домены, нужного домена, делаем галочку "Включить защиту от DDOS-атак":
upload_2016-2-4_12-44-39.png


2)Далее ниже, настраиваем число запросов, обычно 1-2, далее число всплесков, настраивается в зависимости от ддос атак, если атаки нет можно поставить 15-20, если атака есть то 5-10...
upload_2016-2-4_12-46-10.png


ВАЖНО:ТЕСТИРУЮ ЭТО ЗДЕСЬ, ОТПИСЫВАЙТЕСЬ, ЕСТЬ-ЛИ БЛОКИРОВКИ...nea88nea88nea88
 

X-Shar

:)
Администрация
Регистрация
03.06.2012
Сообщения
6 068
Репутация
8 174
Ддос в этой теме что-то показал, что директивы не срабатывали...NO-no!!!NO-no!!!:Mem26::Mem25:

Я начил разбираться и оказалось, что ISPManager криво правит конфиги, если они уже вручную когда-нить менялись и добовляет доп. секции Server !NO-no!!!

Короче поправил и понял, что там запросы считаются для всего сайта, т.е. загрузка картинок и т.д., т.е. если поставить два запроса в секунду, то все в бан уйдут на форуме...Dmeh-Smeh-Smeh!!!Dmeh-Smeh-Smeh!!!Dmeh-Smeh-Smeh!!!

Поэтому можно профиксить в конфиге хоста, а именно:

1. Закоментарить:
Код:
#include /etc/nginx/vhosts-resources/MyDomen/*.conf;

2.Добавить содержимое этого файла, что-бы действовало на динамику, т.е. php, html и т.д.:
Примерно так:
Код:
location ~ [^/]\.ph(p\d*|tml)$ {
            limit_req zone=MyDomen burst=10 nodelay;
            error_page 503 =429 @blacklist;
            try_files /does_not_exists @fallback;
        }

Тогда можно оставить 1-2 запросов в секунду, nodelay - что-бы запросы не ожидались, в принципе можно убрать...Не въехал!!!Не въехал!!!Не въехал!!!

Вроде работает, даже сейчас какие-то айпи банит, тут незнаю если будут ложные срабатывания, то пишите...WinkSmile
 
M

MountRain

Гость
Подскажи пожалуйста где я накосячил?
#user 'dnz' virtual host 'dnz55.org.ua' configuration file
server {
server_name dnz55.org.ua
charset UTF-8;
disable_symlinks if_not_owner from=$root_path;
index index.html index.php;
root $root_path;
set $root_path /var/www/****;
access_log /var/www/*** ;
error_log /var/www/httpd-logs/***
include /etc/nginx/vhosts-includes/*.conf;
#include /etc/nginx/***;
location / {
location ~* ^.+\.(jpg|jpeg|gif|png|svg|js|css|mp3|ogg|mpe?g|avi|zip|gz|bz2?|rar|swf)$ {
try_files $uri $uri/ @fallback;
}
location / {
try_files /does_not_exists @fallback;
}
location ~ [^/]\.ph(p\d*|tml)$ {
try_files /does_not_exists @fallback;
}
error_page 403 /disabled/index.html;
deny all;
}
location @fallback {
proxy_pass
proxy_redirect /;
proxy_set_header Host $host;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
access_log off ;
}
ssi on;
listen 109.234.35.125:80;
location ~ [^/]\.ph(p\d*|tml)$ {
limit_req zone=dnz55.org.ua burst=10 nodelay;
error_page 503 =429 @blacklist;
error_page 403 /disabled/index.html;
try_files /does_not_exists @fallback;
deny all;
}
}
Защиту в исп включил:
 
Последнее редактирование модератором:

X-Shar

:)
Администрация
Регистрация
03.06.2012
Сообщения
6 068
Репутация
8 174
MountRain, не палите пути, а закрывайте их звёздочками....:)

А какую ошибку выдаёт ?

Бегло глянул ваш конфиг, бросилось в глаза директива deny all; по мойму она и блокирует доступ к серверу...
 
M

MountRain

Гость
MountRain, не палите пути, а закрывайте их звёздочками....:)

А какую ошибку выдаёт ?

Бегло глянул ваш конфиг, бросилось в глаза директива deny all; по мойму она и блокирует доступ к серверу...
никаких ошибок - сайт работает, но и никаких блокировок((( ддос-флуд идет, ИОПС растет, хостер ругается - пришлось сайт отключить временно.
ручная блокировка ип эффект дает не на долго... сайт бюджетного государственного детского сада - то бишь бюджета нет вообще
 

X-Shar

:)
Администрация
Регистрация
03.06.2012
Сообщения
6 068
Репутация
8 174
никаких ошибок - сайт работает, но и никаких блокировок((( ддос-флуд идет, ИОПС растет, хостер ругается - пришлось сайт отключить временно.
ручная блокировка ип эффект дает не на долго... сайт бюджетного государственного детского сада - то бишь бюджета нет вообще
Попробуйте тогда это:Инструкция - Защита от DDOS при помощи CloudFlare

Только в панели отключите защиту, она так-себе, одно название и от сильных атак не поможет....:(

И кому нужно ддосить сайт детского сада ?Не въехал!!!Не въехал!!!Не въехал!!!
 
M

MountRain

Гость
КлоудФлар - не вариант( Любые английские буквы ужасно пугают сотрудников и родителей.
Да и ддосом назвать это можно с трудом -обыкновенный спамфлуд который приводит к повышенной нагрузке на дисковую систему. поэтому фильтр помог бы идеально
 

X-Shar

:)
Администрация
Регистрация
03.06.2012
Сообщения
6 068
Репутация
8 174
А какие там английские буквы ? Если атака такая слабая, то просто достаточно подключить проксирование и всё, никаких букв не будет !:)

Есть ещё вот-что:Боремся с DDOS при помощи (D)DoS Deflate

Также можно настроить iptablets на максимальное число коннектов с одного айпи, хотя в данном случае думаю достаточно (D)DoS Deflate будет !
 
Автор темы Похожие темы Форум Ответы Дата
virt Защита от DDOS своими силами 1
Антоха Защита от DDOS своими силами 2
X-Shar Защита от DDOS своими силами 0
X-Shar Защита от DDOS своими силами 2
X-Shar Защита от DDOS своими силами 0
X-Shar Защита от DDOS своими силами 1
X-Shar Защита от DDOS своими силами 5
X-Shar Защита от DDOS своими силами 7
X-Shar Защита от DDOS своими силами 8
X-Shar Защита от DDOS своими силами 2
X-Shar Защита от DDOS своими силами 3
X-Shar Защита от DDOS своими силами 1
Верх Низ