Fail2Ban SOC Dashboard v3 — мини-система анализа атак на Linux-сервере
Fail2Ban SOC Dashboard v3 — мини-система анализа атак на Linux-сервере
Когда сервер открыт в интернет, он почти сразу начинает получать автоматические попытки входа: перебор SSH-паролей, сканирование портов и боты из разных стран. Обычного Fail2Ban достаточно для защиты, но для понимания картины атак полезно видеть не просто баны, а статистику и структуру атакующих.
Для этого можно использовать простой Bash-скрипт — Fail2Ban Control Panel v3 (SOC mode).
🧠 Что делает эта версия
Fail2Ban SOC Dashboard v3 превращает стандартные логи в удобную аналитическую панель прямо в терминале:
- показывает события FAIL / BAN
- определяет IP-адреса атакующих
- группирует атаки по подсетям (/24)
- определяет страны через GeoIP
- считает статистику:
- топ IP
- топ подсетей
- топ стран
⚙️ Установка зависимостей
Перед запуском нужно установить GeoIP:
sudo apt update
sudo apt install geoip-bin coreutils -y
🧩 Создание скрипта
Создаём файл:
nano f2b-soc-v3.sh
💎 Код Fail2Ban SOC Dashboard v3
#!/bin/bash
LOG="/var/log/fail2ban.log"
declare -A GEO_CACHE
declare -A IP_COUNT
declare -A SUBNET_COUNT
declare -A COUNTRY_COUNT
get_ip() {
echo "$1" | grep -oE '([0-9]{1,3}\.){3}[0-9]{1,3}' | tail -n 1
}
get_country() {
local ip=$1
if [[ -n "${GEO_CACHE[$ip]}" ]]; then
echo "${GEO_CACHE[$ip]}"
return
fi
country=$(geoiplookup "$ip" 2>/dev/null | cut -d: -f2)
GEO_CACHE[$ip]=$country
echo "$country"
}
get_subnet() {
echo "$1" | awk -F. '{print $1"."$2"."$3".0/24"}'
}
echo "======================================"
echo " FAIL2BAN SOC DASHBOARD v3"
echo "======================================"
echo ""
while read -r line; do
[[ "$line" != *"Ban"* && "$line" != *"Found"* ]] && continue
ip=$(get_ip "$line")
[[ -z "$ip" ]] && continue
subnet=$(get_subnet "$ip")
country=$(get_country "$ip")
((IP_COUNT["$ip"]++))
((SUBNET_COUNT["$subnet"]++))
((COUNTRY_COUNT["$country"]++))
if [[ "$line" == *"Ban"* ]]; then
type="BAN"
else
type="FAIL"
fi
printf "%-20s %-5s %-15s %-20s %-15s\n" \
"$(echo "$line" | awk '{print $1,$2,$3}')" \
"$type" \
"$ip" \
"$country" \
"$subnet"
done < <(tail -n 500 "$LOG")
echo ""
echo "========== TOP IPS =========="
for ip in "${!IP_COUNT[@]}"; do
echo "${IP_COUNT[$ip]} $ip"
done | sort -nr | head -10
echo ""
echo "======== TOP SUBNETS ========"
for s in "${!SUBNET_COUNT[@]}"; do
echo "${SUBNET_COUNT[$s]} $s"
done | sort -nr | head -10
echo ""
echo "======== TOP COUNTRIES ======"
for c in "${!COUNTRY_COUNT[@]}"; do
echo "${COUNTRY_COUNT[$c]} $c"
done | sort -nr | head -10
echo ""
echo "Done"
🔧 Делаем исполняемым
chmod +x f2b-soc-v3.sh
▶️ Запуск
./f2b-soc-v3.sh
📊 Что показывает скрипт
1. Живые события
Пример вывода:
2026-05-16 15:29:31 BAN 92.118.39.195 RO, Romania 92.118.39.0/24
2. ТОП атакующих IP
Показывает самые активные источники атак:
15 92.118.39.236
12 92.118.39.195
3. ТОП подсетей (ботнеты)
Позволяет увидеть целые кластеры атак:
40 92.118.39.0/24
28 45.148.10.0/24
4. ТОП стран атак
География атак:
60 RO, Romania
45 NL, Netherlands
🧱 Почему это полезно
Обычный Fail2Ban показывает только:
- кто забанен
SOC Dashboard v3 показывает:
- кто атакует чаще всего
- какие подсети используются
- какие страны активны
- есть ли ботнеты
🚀 Практическое применение
Этот скрипт особенно полезен для:
- VPS серверов
- SSH-доступа в интернет
- VPN серверов (Xray / 3x-ui)
- веб-серверов (Nginx / Apache)
- любых публичных Linux систем
⚡ Итог
Fail2Ban SOC Dashboard v3 — это простой, но мощный инструмент, который превращает обычные логи в понятную картину атак.
Он помогает не просто блокировать IP, а понимать структуру угроз и поведение ботнетов.
