Скрипт защиты от DDOS - Форум администраторов игровых серверов
Форум администраторов игровых серверов StormWall - Защита от DDos атак
Регистрация Мнения Справка Пользователи Календарь Все разделы прочитаны
Вернуться   Форум администраторов игровых серверов > Полезное / Common > Операционные системы / Operating systems

Операционные системы / Operating systems
Форум на котором Вы сможете обсудить существующие операционные системы Unix, Windows, а так же получить помощь в установке, настройке, и обслуживании этих систем. Если не получается установить программу на вашу систему, пожалуйста, спрашивайте.

Описание темы:ddos + iptables + настройка ядра sysctrl + netstat

Ответ
Опции темы
Непрочитано 22.04.2011, 14:31   #1
Изгнанные

Автор темы (Топик Стартер) Скрипт защиты от DDOS

Быть может кому понадобится:

Скрипт защиты от DDOS (ddos + iptables + настройка ядра sysctrl + netstat)
Ноябрь 23, 2009 Автор: stranger

Недавно столкнулся с проблемой DDOS "небольшого" выделенного сервера. Сервер к сожалению был один. Процессы Apache из-за выполнения сумасшедшего количества запросов съедали всю память, php съедал весь процессор а изза keepalive заканчивались сокеты.

Установив фронтендом Nginx (тема одной из следующих моих статей), мы несколько выиграли в производительности, но это не особо решало ситуацию. Тогда мы решили ограничивать количество соединений с помощью iptables + netstatИдея следующая: просматриваем все подключения к серверу при помощи netstat, далее убираем из списка подключений все адреса самого сервера, ну и там нужных нам серверов/машин. Следующим шагом убираем из списка все адреса с количеством подключений меньше 6. Ну и на последок забиваем список ip ботов в файл, блокируем траффик с них iptables.

Текст скрипта:

Код:
#!/bin/sh
while true; do echo > /tmp/newddosip netstat -ntu  | sed /"TIME_WAIT"/d | \
 sed /"FIN_WAIT"/d | awk '{print $5}' | cut -d: -f1 | \
sort | uniq -c | sort -nr | sed /"IP_АДРЕС_СЕРВЕРА"/d  | \
sed /"ЕЩЕ_КАКОЙ-НИБУДЬ_АДРЕС_КОТОРЫЙ_НЕ_ДОЛЖЕН_БЫТЬ_ЗАБЛОКИРОВАН"/d | \
sed /"И_ЕЩЕ_1_БЕЛЫЙ_IP"/d | sed /"1 "/d | sed /"2 "/d | sed /"3 "/d | sed /"4 "/d | \
sed /"5 "/d | sed /"6 "/d |   awk '{print $2}' >> /tmp/newddosip
cat /tmp/newddosip >> /root/ddosip

list=`cat /tmp/newddosip`
for ip in $list; do
/sbin/iptables -I INPUT -s $ip -p tcp -j DROP
done
sleep 5;
done
Полный писок ip ботов можно будет посмотреть в /root/ddosip. Скрип можно легко изменить для нужного количества подключений добавляя или убирая конструкции вида:
| sed /"2 "/d |

Также мы изменили некоторые параметры ядра.

Для защиты от SYN атак включаем SYN-cookies:

Код:
echo 1 >/proc/sys/net/ipv4/tcp_syncookies
Увеличиваем размер очереди полуоткрытых соединений (также полезно при SYN флуде):

Код:
sysctl -w net.ipv4.tcp_max_syn_backlog="4096"
Поскольку мы знаем, что SYN атака/спуфинг это просто ряд SYN пакетов, главным образом с фиктивными IP адресами. В прошлом разделе мы увеличили размер очереди соединений. Теперь, когда наши системы могут обрабатывать большее количество SYN запросов, мы должны уменьшить полное время хранения полуоткрытых соединений в очереди. Когда сервер получает запрос, он немедленно посылает пакет с набором флагов SYN и ACK, помещает это полуоткрытое соединение в очередь, а затем ожидает от клиента пакет с флагом ACK. Если сервер не получает ответа от клиента, то он еще несколько раз передает ответный пакет (с флагами SYN и ACK), (количество ответов зависит от установок операционной системы), давая клиенту возможность для пересылки ACK пакета. Ясно, что в случае фиктивности исходного IP адреса клиента, ACK пакет никогда не прибудет. После нескольких минут ожидания сервер удаляет это полуоткрытое соединение. Мы можем ускорить процесс удаления соединений в состоянии в SYN RECEIVED из очереди соединений, изменяя время первой перепередачи и общего количества перепередач.

Другая методика защиты от SYN атак заключается в отключении некоторые параметров TCP, которые всегда активны в течение процесса установления связи сервера с клиентом. Некоторые из этих параметров автоматически выключаются механизмами Syncookies.

Теперь настроим переменные стека TCP/IP, которые позволяют уменьшить время хранения полуоткрытых соединений в очереди задач:

Рассмотрим параметр tcp_synack_retries, который управляет количеством перепередач в операционной системе Linux. По умолчанию, для большинства операционных систем Linux, это значение равно 5, что означает удаление полуоткрытого соединения через 3 минуты. Сделаем так, чтобы перепередача осуществлялась на 3 секунде и полное время хранения полуоткрытых соединений в очереди составило 9 секунд:

Код:
sysctl -w net.ipv4.tcp_synack_retries=1
Изменяем время ожидания приема FIN до полного закрытия сокета:

Код:
sysctl -w net.ipv4.tcp_fin_timeout = 10
Практически отключаем TCP keepalive:

Код:
sysctl -w net.ipv4.tcp_keepalive_time=1
Изменяем количество пакетов проверки keepalive, которые пошлет сервер прежде чем соединение будет закрыто:

Код:
sysctl -w net.ipv4.tcp_keepalive_probes=1
При помощи этих нехитрых действий мы пережили DDOS атаку среднего масштаба. Если возникли какие-либо вопросы пишите в комментарии - постараемся ответить.
flashboom777 вне форума Ответить с цитированием
Непрочитано 22.04.2011, 14:42   #2
Аватар для PROGRAMMATOR
Администратор

По умолчанию Re: Скрипт защиты от DDOS

Источник бы указали http://tty.org.ru/node/30
__________________
composer require laravel/framework
yarn add vue
PROGRAMMATOR вне форума Отправить сообщение для PROGRAMMATOR с помощью ICQ Отправить сообщение для PROGRAMMATOR с помощью Skype™ Ответить с цитированием
Непрочитано 22.04.2011, 15:06   #3
Эксперт

По умолчанию Re: Скрипт защиты от DDOS

http://www.inetbase.com/scripts/ddos/install.sh - а он типо уже не в моде ?

Нужно помнить 3 вещи
1. гавно проект ляжет по любому и нечего не поможет
2. нет ни одной нормальной статьи, каждый параметр нужно выгугливать
3. если у вас нормальный проект - закажите настройку и не парьтесь (все равно так как вам за $ сделают, вы долго будете настраивать)
Place вне форума Ответить с цитированием
Непрочитано 22.04.2011, 15:22   #4
Изгнанные

Автор темы (Топик Стартер) Re: Скрипт защиты от DDOS

Цитата:
Сообщение от Place Посмотреть сообщение
http://www.inetbase.com/scripts/ddos/install.sh - а он типо уже не в моде ?

Нужно помнить 3 вещи
1. гавно проект ляжет по любому и нечего не поможет
2. нет ни одной нормальной статьи, каждый параметр нужно выгугливать
3. если у вас нормальный проект - закажите настройку и не парьтесь (все равно так как вам за $ сделают, вы долго будете настраивать)
Полностью согласен, особенно с 1м и 2м!
flashboom777 вне форума Ответить с цитированием
Ответ


Здесь присутствуют: 1 (пользователей: 0 , гостей: 1)
 
Опции темы

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
DDOS атаки Morganya World of WarCraft 7 17.06.2010 15:45
[Продам] DDoS/Nuke защиту для РТ 1.4.2 и не только Mattew Рынок / Marketplace 8 26.02.2010 21:16
Anti-DDoS Voltage Движки сайтов (CMS) 12 22.09.2009 16:49
DDoS и SqLInjection - как защититься? Жужик Движки сайтов (CMS) 2 16.09.2009 14:07


© 2007–2024 «Форум администраторов игровых серверов»
Защита сайта от DDoS атак — StormWall
Работает на Булке неизвестной версии с переводом от zCarot
Текущее время: 07:21. Часовой пояс GMT +3.

Вверх