Форум администраторов игровых серверов

Форум администраторов игровых серверов (https://forum.zone-game.info/TT.php)
-   Документация (https://forum.zone-game.info/forumdisplay.php?f=149)
-   -   Настройка защиты от ддос (https://forum.zone-game.info/showthread.php?t=9216)

MetaWind 23.07.2010 14:38

Настройка защиты от ддос
 
Здесь, я хочу вам рассказать, как правильно настроить юникс систему, для защиты от ддос атак
Если кому интерестно - просто поделюсь тем, что умею сам.


Всё что от нас потребуется - настроить параметры tcp
Ищем /etc/sysctl.conf

Вот собственно какие параметры туда можно добавить:

1. net.ipv4.tcp_keepalive_time = 60 // если на канале молчанка в течении 60 сек - сервер пробует клиент на живучесть

2. net.ipv4.tcp_keepalive_intvl = 10 //если проба неудачна - повторить через 10 сек

3. net.ipv4.tcp_keepalive_probes = 5 //повторить проверку 5 раз, если неудачно - закрыть соединение

4. net.ipv4.tcp_syncookies = 1 // защита от syn флуда. врубать ТОЛЬКО если ядро собрано с CONFIG_SYNCOOKIES

5. net.ipv4.conf.default.rp_filter = 1
net.ipv4.conf.all.rp_filter = 1 //Установка IP спуфинга защиты очереди на источник проверки маршрута.

6. net.ipv4.tcp_max_orphans = 131072 //защита орфанами от левых ддос...не забываем - каждый орфан жрет 64байта (или 64 кб...не помню точно) памяти.

вот в принципе элементарные меры которые должны помочь

Devilop 23.07.2010 15:40

Re: Настройка защиты от ддос
 
напиши для какой ОС или полный адрес куда лезть
а то нубы снова ныть будут =)

PROGRAMMATOR 23.07.2010 15:44

Re: Настройка защиты от ддос
 
Дебилиан, Бубунта, етс...

MetaWind 23.07.2010 18:50

Re: Настройка защиты от ддос
 
Devilop
а то нубы снова ныть будут =)

Точно) забыл сказать, спс напомнил)

Надо будет обновить значения переменных...
от рута надо

sysctl -p

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

На счет систем...всё верно..+ сан, хат, альт....

Blakkky 24.07.2010 02:08

Re: Настройка защиты от ддос
 
Ну это только начало (да и то в некоторых местах спорное). А дальше? :)

Это не особо поможет от серьезного ДДоСа, а позволит системе по-больше ресурсов слопать в случае ДДоСа (если атака маленькая, то просто увеличение некоторых лимитов на потребление ресурсов поможет не упасть сервису, а если серьезная, то это только усугубит происходящее).
И, кстати, один сокет-"сиротка" (orphan) на самом деле поедает 64к памяти, т.е. предлагается под них отдать 8Гб оперативной памяти (64к * 131072), не много ли под "помирающие сокеты"? При хорошей атаке последствия будут не просто плачевным, а смертельными, особенно, если физической памяти меньше, либо равно 8Гб.

Таймауты понизить - да, полезно, syn-куки, тоже, реверс-пас, тоже пригодится, но с некоторыми допущениями (например, что у нас на сервере нету деления входящего и исходящего трафика по интерфейсам), а вот поднимать лимиты надо очень аккуратно и с умом, а то это все только усугубит последствия, хоть и позволит пережить атаки школьников.

Ну и из того, что надо бы сделать, сделано процентов 10% примерно, где повышение лимитов на файловые/сокетные дескрипторы, где тюнинг контрека, где правила iptables под разные типы сервисов?
Маловато будет, надо работать дальше :)

Salamandra 29.07.2010 22:19

Re: Настройка защиты от ддос
 
Blakkky мне хотелось бы выслушать твои предложения по поводу "дальше". Буду очень благодарен.

Taku 04.08.2010 22:10

Re: Настройка защиты от ддос
 
частичная настройка системы

Совесть 04.08.2010 23:48

Re: Настройка защиты от ддос
 
Настройка системы это хорошо, но если стоит хороший сервер на *nux и канал 100мб. от 200 ботов может спасти iptables, конечно не является панацеей, но от школьников и середнячков может спасти. Причем хорошее дополнение к любому антиddos приложению. Принцип построен на блоке навязчивых ip-адресов, чем больше пакетов, тем дольше блок. Sprut и т.п. начинает ложить свой канал. Данные парамметры проверялось на исходящем гигабитном канале, входящий 100мб.

Код:

iptables -F
iptables -t nat -F
iptables -X

iptables -P INPUT ACCEPT
iptables -P OUTPUT ACCEPT
iptables -P FORWARD ACCEPT

sysctl net.netfilter.nf_conntrack_acct=1

iptables -A INPUT -s *.*.*.* -j ACCEPT
iptables -A INPUT -s *.*.*.*/* -j ACCEPT
iptables -A INPUT -s *.*.*.*/* -j ACCEPT
iptables -A INPUT -s *.*.*.*/* -j ACCEPT
iptables -A INPUT -s *.*.*.* -j ACCEPT
iptables -A INPUT -s *.*.*.* -j ACCEPT
iptables -A INPUT -p TCP -s 0/0 --dport **** -j DROP      //прикрываемые порты
iptables -A INPUT -p TCP -s 0/0 --dport **** -j DROP      //прикрываемые порты

iptables -N LOGIN
iptables -N LOGIN_REJECT_1
iptables -N LOGIN_REJECT_2

iptables -A INPUT -p tcp --dport *** -m state --state NEW -j LOGIN      //правило для парта

iptables -A LOGIN -m recent --update --name LOGIN_REJECT_1 --seconds    600 --hitcount 1 -j DROP
iptables -A LOGIN -m recent --update --name LOGIN_REJECT_2 --seconds  3600 --hitcount 1 -j DROP

iptables -A LOGIN -m recent --set --name LOGIN_c1
iptables -A LOGIN -m recent --set --name LOGIN_c2

iptables -A LOGIN -m recent --update --name LOGIN_c1 --seconds    60 --hitcount  10 -j LOGIN_REJECT_1
iptables -A LOGIN -m recent --update --name LOGIN_c2 --seconds  600 --hitcount  20 -j LOGIN_REJECT_2

iptables -A LOGIN -m limit --limit 1/sec --limit-burst 3 -j ACCEPT

iptables -A LOGIN -j REJECT

iptables -A LOGIN_REJECT_1 -m recent --set --name LOGIN_REJECT_1
iptables -A LOGIN_REJECT_1 -j LOG --log-prefix "INPUT LOGIN REJECT: (10min)"
iptables -A LOGIN_REJECT_1 -j REJECT

iptables -A LOGIN_REJECT_2 -m recent --set --name LOGIN_REJECT_2
iptables -A LOGIN_REJECT_2 -j LOG --log-prefix "INPUT LOGIN REJECT: (1hour)"
iptables -A LOGIN_REJECT_2 -j REJECT

iptables -N HTTP
iptables -N HTTP_REJECT_1

iptables -A INPUT -p tcp --dport **** -m state --state NEW -j HTTP

iptables -A HTTP -m recent --update --name HTTP_REJECT_1 --seconds    60 --hitcount 10 -j DROP

iptables -A HTTP -m recent --set --name HTTP_c1

iptables -A HTTP -m recent --update --name HTTP_c1 --seconds    60 --hitcount  20 -j HTTP_REJECT_1

iptables -A HTTP -m limit --limit 10/sec --limit-burst 30 -j ACCEPT

iptables -A HTTP -j REJECT

iptables -A HTTP_REJECT_1 -m recent --set --name HTTP_REJECT_1
iptables -A HTTP_REJECT_1 -j LOG --log-prefix "INPUT HTTP REJECT: (1min)"
iptables -A HTTP_REJECT_1 -j REJECT

Что как куда, пробитые линуксойды поймут, остальным курить iptables.


Текущее время: 18:02. Часовой пояс GMT +3.

Powered by vBulletin® Version 3.8.6
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd. Перевод: zCarot