• Форум посвящен самостоятельной (бесплатной) защите от ддос атак.
    Есть мануалы по настройке сервера от Ddos для сисадминов и готовые инструменты от ддос-атак для вебмастеров.

    Простое, эффективное, точное и проверенное бесплатное решение от мощных ддос-атак: PHP скрипт + Cloudflare, с панелью управления.

Автоматическая защита от DDoS атак с помощью настройки Nginx + iptables

S

SusaPusa

New Member
#1
Я изобрёл защиту от DDoS атак которая работает по принципу косы - косит высокую траву, а низкую оставляет.
Для её работы нужна настройка Nginx и нужно добавить мой скрипт в крон.
Забанены IP добавляются сразу в брандмауэр с помощью iptables.
DDoS атаку из 7000 ip адресов остановило за 4 часа. И пинги нужно заблокировать потом нагрузка упала.
Список ip которые блокируются на нашем сервере во время ддос атаки.
Помогает мне чат GPT - он пишет код!
Это вечная защита и очень эффективная. Один раз поставил и забыл. Всё работает автоматически.
Когда всех роботов забанило то нагрузки на сервер совсем нет, а люди продолжают ходить по сайту.
 
admin

admin

Администратор
Администрация
#2
А где этот скрипт можно скачать? Или вы его продаете?
 
S

SusaPusa

New Member
#4
Перенёс своё творение со скриптов в fail2ban - теперь любой сможет настроить. Завтра протестирую всё и выложу бесплатно!
 
S

SusaPusa

New Member
#5
Настройка Fail2ban и Nginx для защиты от DDoS флуда на сайтах!

Это убирает из списка ip все ip что есть в белом списке. Поддерживаются ipv4 ipv6 адреса и маска подсети 127.0.0.1/8 2002::/16
Bash:
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.txt
unique_ips = set()
with open('/root/output.txt', '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.txt
with open('/root/output.txt', 'w') as f:
    for ip in unique_ips:
        f.write(str(ip) + '\n')
 
Последнее редактирование:
S

SusaPusa

New Member
#6
А ещё если не убрать всю статику с логов Nginx то всё это не будет правильно работать. И я придумал как убрать статику из логов Nginx!
 
S

SusaPusa

New Member
#7
Вот пример команды, которая выполняет проверку и выполнение команды, если размер файла /var/log/nginx/access.log больше 1 GB и если он больше то стирает его!
Код:
file_size=$(du -b /var/log/nginx/access.log | awk '{print $1}')

if [ "$file_size" -gt 1073741824 ]; then

    # Здесь вставьте команду, которую нужно выполнить, если размер файла больше 1 GB

        truncate -s 0 /var/log/nginx/access.log

    echo "Файл слишком большой!"

fi
 
Сверху