Автоматическая защита от DDoS атак
Разработал автоматическую защиту от DDOS атак с помощью Чат GPT.
Как оно работает?
Если есть атака и большая нагрузка на сервер скрипт сам это распознаёт и на основе алгоритма коса и Stop Control Pro начинает банить роботов зомби. Добавляя и блокируя их IP в брандмауэре с помощью iptables.
Есть белый список ip адресов которые не нужно блокировать - туда можно добавить ip поисковых роботов и свои ip!
Моя идея, а помогает мне Чат GPT - искусственный интеллект пишет код.
А самое главное что эта защита от DDoS ставится один раз и работает полностью автоматически всегда!
Уже поймано более 33000 ip адресов нападавших на наш сервер, все ip записываются в файл!
Я сделал Honeypot для DDoS атак и подозрительной активности!
Дос атака заключается в том что очень много ip начинают долбить сайт и где-то через 12 часов логи Nginx занимают всё место на сервере, а если места нет и в базу данных попытаться что то записать то эта база ломается! Создаётся пустой файл в базе данных и сайт пишет ошибку - что мол нет такого пути или файла.
По умолчанию в ротации логов нет ограничения размера лог файла - это нужно самому добавлять вручную.
Шаманю с ротацией логов!
Автоматическая собиралка ip адресов за одну ночь
насобирала аж 11000 ip ботов.
Эта дос атака нацелена на то чтобы заполнить
дисковое пространство - оно переполняется за 12 часов атаки и
после этого ломается база данных - когда нет места файлы базы данных
ломаются.
Я придумал как сделать чтоб обычных
посетителей сайта мой авто бан не трогал!
Сделал! Теперь он банит только тех кто реально создаёт нагрузку
на сервер!
Есть идея - выкладывать сдесь списки ip роботов зомби!
Как вам такое? А я сейчас вам покажу, откуда готовилось нападение на наш VDS!
Список DoS IP адресов - обновляется автоматически!
Можно потестировать - если интересно!
И на следующий день после полуночи все заблокированные ip появятся в этом списке!
Ещё немного осталось и я его доделаю - ведь этот вид DOS атаки
даже хостер с дос защитой пропускает!
А наши команды всех ловият и банят в брандмауэре и всё записывают!
Защита работает по принципу косы - всю высокую
траву косит, а низкую оставляет. Как правило снизу это люди! Добавлен новый алгоритм определения - с Cookies и без, все роботы ходят без.
Справилось с дос атакой 7000 ip за 4 часа!
Сервер всё это время жутко тормозил, но при этом исправно всех банит и
добавлял вражеские ip в iptables!
Кому подойдёт эта защита?
Если у вас дос атака такая что если закрыть все порты на сервере и пинги
и нагрузки на сервер после этого нет и интернет канал не забит полностью
значит можно справится с этой дос атакой локально без применения
проксирования с помощью моего скрипта и настройкой Nginx!
Уже сделал чтобы можно было видеть в реале что происходит на сервере,
сколько сейчас ip долбят сайт. Топ, рейтинг и кто быстрее!
Можно смотреть по Sftp открывая текстовые файлы.
Это очень перспективная тема ведь заряженных ip участвующих в DDoS атаках с каждым днём становится всё больше и больше!
И чтобы избавиться от DDoS атаки люди готовы платить хитрым компаниям за дос защиту большие деньги. Работают они как прокси сервер - через них идёт весь трафик к вам на сайт.
Но это нужно только тогда когда ваш интернет канал забит полностью и скорости уже никакой нет.
А если это дети решили поиграть в хакеров и прикупили 10000 ip адресов чтоб покошмарить какой нибудь бедный сайт то можно обойтись и купить у нас скрипт который за 4 часа их всех быстренько забанит и всё! На этом их атака закончится! А если станет скучно то тогда можно их всех разбавить и забанить снова!
Но когда идёт DDoS атака - идёт максимальная нагрузка на сервер и страница на сайте долго открывается - секунд 20 или вообще не откроется и сервер покажет ошибку 502.
Диапазоны IP-адресов, используемых Яндексом.
Диапазоны IP-адресов, используемых Google.
IP поисковых систем.
Разрабатываем вместе с чат GPT - белый список чтобы можно было добавлять ip с подсесями!
До этого подсети не работали. Чат GPT написал мне скрипт но Python! Буду тестить!
Работает!
Вот скрипт который удаляет IP из файла /root/output.sh, в файле belyi-spisok.txt находятся ip из белого списка которые нужно удалить.
Скрипт поддерживает IPv4 и IPv6 и маску подсети - вот такие IP 127.0.0.1/8 2002::/16 !
belyi-spisok.py
import ipaddress
# Чтение списка подсетей из файла belyi-spisok.txt
subnets = []
with open('/root/belyi-spisok.txt', 'r') as f:
for line in f:
subnet_str = line.strip()
subnet = ipaddress.ip_network(subnet_str, strict=False)
subnets.append(subnet)
# Удаление дубликатов IP-адресов из файла output.sh
unique_ips = set()
with open('/root/output.sh', 'r') as f:
for line in f:
ip_str = line.strip()
ip = ipaddress.ip_address(ip_str)
# Проверка наличия IP-адреса в любой из подсетей из списка subnets
if not any(ip in subnet for subnet in subnets):
unique_ips.add(ip)
# Запись уникальных IP-адресов в файл output.sh
with open('/root/output.sh', 'w') as f:
for ip in unique_ips:
f.write(str(ip) + '\n')
Мне подсказали что fail2ban может тоже так же банить - но он не хочет работать при больших нагрузках на сервер.
Настройка Nginx и Fail2ban для защиты от флуда на сайтах.
Так как Fail2ban при нагрузке не работает - буду делать свою защиту из скриптов вместе с чат GPT.
Теперь скрипт запускается 6 раз в минуту и быстрее банит самых шустрых!
Добавлен новый алгоритм определения роботов зомби STOP CONTROL PRO!