Блокировка IP-адресов при DDoS-атаке

В случае DDoS-атаки важно быстро идентифицировать и заблокировать подозрительные IP-адреса. Ниже представлен скрипт на Bash, который выбирает 50 самых часто встречающихся IP-адресов за последние 10 минут, отображает их и подготавливает список для блокировки.

#!/bin/bash
# Установите временной диапазон
ten_minutes_ago=$(date -d "10 minutes ago" +"%d/%b/%Y:%H:%M:%S")
count=50
echo "========== $count =========="
# Фильтруем логи за последние 10 минут и обрабатываем их
awk -v time="$ten_minutes_ago" '$0 > time {print $1}' sitename.access.log | sort | uniq -c | sort -nr | head -n "$count"
echo "========== $count =========="
# Фильтруем логи за последние 10 минут, обрабатываем их и преобразуем в нужный формат
awk -v time="$ten_minutes_ago" '$0 > time {print $1}' sitename.access.log | sort | uniq -c | sort -nr | head -n "$count" | awk '{split($2, a, "."); print "deny " a[1]"."a[2]"."a[3]".0/24;"}' | sort -u

Этот скрипт выполняет следующие действия:

  1. Устанавливает временной диапазон за последние 10 минут.
  2. Фильтрует логи за указанный период и выбирает 50 самых активных IP-адресов.
  3. Преобразует выбранные IP-адреса в формат, подходящий для блокировки.

Используйте этот скрипт для быстрого реагирования на DDoS-атаки и защиты вашего сервера.