Простая защита от DDoS-атаки

Защита от DDoS

DDoS (Distributed Denial of Service) — распределённая атака типа «отказ в обслуживании». Сетевой ресурс выходит из строя в результате множества запросов к нему, отправленных из разных точек. Обычно атака организуется при помощи бот-нетов.

Для начала определяем количество соединений с 1 ip к примеру на 443 порт

user@srv:~$ -ntu | grep ":443\ " | awk '{print $5}'| cut -d: -f1 | sort | uniq -c | sort -nr | more
    130 185.215.60.212
     19 94.140.142.86
     19 3.89.157.122
     17 62.148.156.22
     17 178.210.35.17
     16 217.26.165.15
     16 188.17.163.148
     15 213.5.120.34
     14 95.153.129.96
     14 94.25.229.95

Как видно из выдачи, с одного ip идет большое количество соединений.

Чтобы вручную не блокировать ip ботов, напишем bash-скрипт

user@srv:~$ nano /home/script/ddos.sh
#!/bin/sh
# Задаем путь к скриптам
mypath=/home/script

# Определяем все соединения на порт 443 и записываем лог find.log
netstat -ntu | grep ":443\ " | awk '{print $5}'| cut -d: -f1 | sort | uniq -c | sort -nr | grep -v "127.0.0.1" | grep -v "8.8.8.8" > $mypath/find.log

# Создаем DROP правила iptables, блокировать IP если количество коннектов 50 и больше. И сохраняем правила в bash-скрипт ban_ip.sh
awk '{if ($1 > 50) {print "/sbin/iptables -A INPUT -p tcp --dport 443 -s " $2 " -j DROP";}}' $mypath/ddos.iplist >> $mypath/ban_ip.sh

# Запускаем только что созданный скрипт блокировки IP атакующих
/bin/bash $mypath/ban_ip.sh

# Очищаем скрипт ban_ip.sh
cat /dev/null > $mypath/ban_ip.sh

Добавляем скрипт ddos.sh в крон

user@srv:~$ crontab -l
# запускать скрипт раз в 5 минут
*/5 * * * * /home/script/ddos.sh
# амнистия раз в месяц
@monthly root iptables -F

Максим Макаров
У блога появился хостинг, его любезно предоставила компания Облакотека.
Облакотека - облачные сервисы для создания и управления виртуальной ИТ-инфраструктурой.
Если вам понравился мой блог и вы хотели бы видеть на нем еще больше полезных статей, большая просьба поддержать этот ресурс. Для этого достаточно кликнуть на контекстную рекламу, расположенную на сайте.
Оцените автора
IT Draft
Добавить комментарий

Нажимая на кнопку "Отправить комментарий", я даю согласие на обработку персональных данных и принимаю политику конфиденциальности.