Утилита для блокировки сканеров портов через iptables и ipset с поддержкой логирования и агрегации статистики.
- О проекте
- Быстрый старт
- Установка
- Возможности
- Использование
- Логирование
- Что создается в системе
- Лицензия
TrafficGuard - это инструмент сетевой безопасности, который защищает ваш сервер от автоматизированного сканирования портов и несанкционированных попыток подключения.
Основные проблемы, которые решает:
-
Массовое сканирование портов - различные сканеры постоянно проверяют открытые порты на серверах в интернете, создавая ненужную нагрузку и потенциальные риски безопасности
-
Нагрузка на сервисы - каждая попытка подключения потребляет ресурсы сервера (CPU, память, сетевой трафик). При массовом сканировании это может замедлить работу легитимных сервисов
-
Риски безопасности - сканирование часто является первым этапом атаки. Злоумышленники ищут уязвимые сервисы и открытые порты для эксплуатации
-
Засорение логов - попытки подключения от сканеров заполняют системные логи, затрудняя анализ реальных проблем
-
Неэффективное использование ресурсов - ваши сервисы (веб-сервер, SSH, база данных) тратят время на обработку запросов от сканеров вместо обслуживания реальных пользователей
TrafficGuard блокирует весь трафик с известных IP-адресов сканеров на уровне сетевого фильтра (iptables), до того как пакеты достигнут ваших сервисов.
Защитите ваш VPS/сервер от массовых сканеров:
sudo traffic-guard full \
-u https://raw.githubusercontent.com/shadow-netlab/traffic-guard-lists/refs/heads/main/public/government_networks.listРезультат: Весь трафик с IP-адресов известных сканеров будет отброшен на уровне firewall, не достигая ваших сервисов.
Включите логирование, чтобы видеть статистику блокировок:
sudo traffic-guard full \
-u https://raw.githubusercontent.com/shadow-netlab/traffic-guard-lists/refs/heads/main/public/government_networks.list \
--enable-loggingРезультат: Дополнительно получаете CSV-файл с агрегированной статистикой: какие IP пытались подключиться, из каких сетей (ASN, NETNAME), сколько раз.
Используйте несколько списков блокировки для максимальной защиты:
sudo traffic-guard full \
-u https://raw.githubusercontent.com/shadow-netlab/traffic-guard-lists/refs/heads/main/public/antiscanner.list \
-u https://raw.githubusercontent.com/shadow-netlab/traffic-guard-lists/refs/heads/main/public/government_networks.list \
--enable-loggingРезультат: Блокируются как публичные сканеры, так и специфические подсети государственных организаций, проводящих массовое сканирование.
Создайте собственный список IP/подсетей для блокировки:
# Создайте файл с подсетями (по одной на строку)
cat > /tmp/my-blocklist.txt <<EOF
192.168.1.0/24
10.0.0.0/8
2001:db8::/32
EOF
# Разместите файл на веб-сервере или используйте file://
sudo traffic-guard full -u file:///tmp/my-blocklist.txt⚖️ ВАЖНОЕ ЮРИДИЧЕСКОЕ РАЗЪЯСНЕНИЕ
TrafficGuard является легальным инструментом сетевой безопасности класса "firewall" (межсетевой экран).
-
Это обычный firewall - TrafficGuard использует стандартные механизмы Linux (iptables/ipset), которые являются штатными компонентами операционной системы для управления сетевым трафиком
-
Законное право на защиту - владелец сервера/инфраструктуры имеет полное законное право контролировать входящие соединения и блокировать нежелательный трафик
-
Аналог антивируса - так же как антивирус блокирует вредоносные программы, TrafficGuard блокирует подозрительный сетевой трафик
- ✅ Блокирует входящие подключения к вашему серверу с определенных IP-адресов
- ✅ Не осуществляет атаки на другие системы
- ✅ Не перехватывает чужой трафик
- ✅ Не нарушает работу других систем
- ✅ Защищает только вашу инфраструктуру
Это аналогично тому, как вы закрываете дверь в свой дом или устанавливаете сигнализацию.
Статья 16 Федерального закона от 27.07.2006 N 149-ФЗ "Об информации":
Владелец информационной системы вправе устанавливать ограничения доступа к информации
Статья 209 ГК РФ (право собственности):
Собственник вправе по своему усмотрению совершать в отношении принадлежащего ему имущества любые действия
Федеральный закон от 27.07.2006 N 152-ФЗ "О персональных данных":
Оператор обязан принимать необходимые меры по защите персональных данных
НЕТ, если вы:
- Используете утилиту для защиты собственной инфраструктуры
- Блокируете только входящий трафик на свой сервер
- Не используете для атак или нарушения работы других систем
TrafficGuard НЕ является:
- ❌ Средством взлома
- ❌ Инструментом DDoS-атак
- ❌ ПО для незаконного доступа к информации
- ❌ Средством обхода защиты
Вы имеете право решать, кто может подключаться к вашему серверу.
Если представители правоохранительных органов интересуются этой утилитой:
TrafficGuard - это стандартный межсетевой экран (firewall), который:
- Использует только легальные системные компоненты Linux (iptables, ipset)
- Блокирует входящие соединения к защищаемому серверу
- Не осуществляет никаких активных действий в сторону других систем
- Является инструментом защиты информации, аналогичным коммерческим решениям (Cisco ASA, pfSense, и т.д.)
- Реализует требования по защите информации согласно 152-ФЗ и другим нормативным актам
Использование данной утилиты является законным осуществлением права на защиту собственной информационной инфраструктуры.
- ✅ Используйте для защиты собственных серверов
- ✅ Документируйте настройки безопасности
- ✅ Храните логи в соответствии с требованиями законодательства
- ❌ Не используйте для блокировки доступа к чужим ресурсам
- ❌ Не используйте в составе инфраструктуры для незаконной деятельности
Установка и запуск за 30 секунд:
# 1. Установка
curl -fsSL https://raw.githubusercontent.com/dotX12/traffic-guard/master/install.sh | sudo bash
# 2. Запуск с базовой защитой
sudo traffic-guard full \
-u https://raw.githubusercontent.com/shadow-netlab/traffic-guard-lists/refs/heads/main/public/antiscanner.list
# 3. (Опционально) Проверка статистики блокировок через 10 минут
tail -f /var/log/iptables-scanners-aggregate.csvСкачайте и запустите установочный скрипт:
curl -fsSL https://raw.githubusercontent.com/dotX12/traffic-guard/master/install.sh | sudo bashили
wget -qO- https://raw.githubusercontent.com/dotX12/traffic-guard/master/install.sh | sudo bashСкрипт автоматически:
- Определит архитектуру системы (amd64, 386, arm, arm64)
- Скачает последний релиз для вашей системы
- Установит бинарник в
/usr/local/bin - Выдаст права на выполнение
-
Скачайте нужный бинарник из последнего релиза:
traffic-guard-linux-amd64- для 64-битных системtraffic-guard-linux-386- для 32-битных системtraffic-guard-linux-arm- для ARMtraffic-guard-linux-arm64- для ARM64
-
Установите:
sudo mv traffic-guard-linux-* /usr/local/bin/traffic-guard
sudo chmod +x /usr/local/bin/traffic-guard- 📥 Скачивание списков подсетей сканеров из внешних источников
- 🛡️ Автоматическая настройка iptables/ip6tables правил
- 📊 Управление ipset наборами для IPv4 и IPv6
- 📝 Легковесное логирование с агрегацией (опционально)
- 🔄 Автоматическое сохранение правил для применения после перезагрузки
Обязательно необходимо передать один или несколько URL с списками подсетей через параметр -u:
sudo traffic-guard full -u https://raw.githubusercontent.com/shadow-netlab/traffic-guard-lists/refs/heads/main/public/government_networks.listМожно указать несколько источников:
sudo traffic-guard full \
-u https://raw.githubusercontent.com/shadow-netlab/traffic-guard-lists/refs/heads/main/public/government_networks.list \
-u https://raw.githubusercontent.com/shadow-netlab/traffic-guard-lists/refs/heads/main/public/antiscanner.list \
--enable-loggingГотовые списки подсетей сканеров доступны в репозитории: shadow-netlab/traffic-guard-lists
Доступные списки:
public/antiscanner.list- список от zakachkin/AntiScannerpublic/government_networks.list- подсети различных сканеров государственных организаций
Базовая блокировка без логирования:
sudo traffic-guard full \
-u https://raw.githubusercontent.com/shadow-netlab/traffic-guard-lists/refs/heads/main/public/government_networks.list \
-u https://raw.githubusercontent.com/shadow-netlab/traffic-guard-lists/refs/heads/main/public/antiscanner.listС включенным логированием:
sudo traffic-guard full \
-u https://raw.githubusercontent.com/shadow-netlab/traffic-guard-lists/refs/heads/main/public/government_networks.list \
-u https://raw.githubusercontent.com/shadow-netlab/traffic-guard-lists/refs/heads/main/public/antiscanner.list \
--enable-logging-u, --urls(обязательно) - URL для скачивания подсетей. Можно указать несколько раз-l, --enable-logging- включить логирование заблокированных подключений--log-level- уровень логирования (debug, info, warn, error). По умолчанию: info
При включении логирования (--enable-logging) создаются:
/etc/rsyslog.d/10-iptables-scanners.conf- конфигурация rsyslog/etc/logrotate.d/iptables-scanners- ротация логов (каждый час, хранится 2 часа)/usr/local/bin/antiscan-aggregate-logs.sh- скрипт агрегации/etc/systemd/system/antiscan-aggregate.service- systemd service/etc/systemd/system/antiscan-aggregate.timer- systemd timer (каждые 10 секунд)
/var/log/iptables-scanners-ipv4.log- сырые логи IPv4 (обрабатываются каждые 30 сек)/var/log/iptables-scanners-ipv6.log- сырые логи IPv6 (обрабатываются каждые 30 сек)/var/log/iptables-scanners-aggregate.csv- агрегированная статистика в CSV формате
Файл /var/log/iptables-scanners-aggregate.csv содержит статистику с автоматическим whois lookup:
IP_TYPE|IP_ADDRESS|ASN|NETNAME|COUNT|LAST_SEEN
v4|85.142.100.138|AS49505|JSCCYBEROK-NET|237|2026-01-25T17:08:01.123456+03:00
v6|2001:db8::1|AS12345|EXAMPLE-NET|12|2026-01-25T17:08:05.987654+03:00Поля:
IP_TYPE- тип IP (v4/v6)IP_ADDRESS- IP адрес сканераASN- номер автономной системы (из whois)NETNAME- имя сети (из whois)COUNT- количество попыток подключенияLAST_SEEN- время последней попытки
Особенности:
- Whois lookup с кэшированием (не повторяется для одного IP)
- Таймаут lookup: 3 секунды
- CSV отсортирован по COUNT (самые активные сверху)
- Максимум 10 записей в минуту на каждый IP (чтобы не засорять логи)
- Топ-50 активных IP в каждом интервале агрегации
# Последние агрегированные данные
tail -f /var/log/iptables-scanners-aggregate.csv
# Статус systemd timer
systemctl status antiscan-aggregate.timer
# Логи агрегатора
journalctl -u antiscan-aggregate.service -f- Цепочка:
SCANNERS-BLOCK - Правила:
- IPv4:
INPUT -j SCANNERS-BLOCK - IPv6:
INPUT -j SCANNERS-BLOCK SCANNERS-BLOCK -m set --match-set SCANNERS-BLOCK-V4 src -j DROP(IPv4)SCANNERS-BLOCK -m set --match-set SCANNERS-BLOCK-V6 src -j DROP(IPv6)
- IPv4:
С логированием добавляются дополнительные правила с rate-limit.
- Наборы:
SCANNERS-BLOCK-V4- hash:net для IPv4SCANNERS-BLOCK-V6- hash:net для IPv6
- Конфигурация:
/etc/ipset.conf
Правила автоматически сохраняются:
- Debian/Ubuntu:
/etc/iptables/rules.v4,/etc/iptables/rules.v6 - RedHat/CentOS: через
service iptables save
MIT