Эффективная блокировка IP-адресов — это не просто список запрещённых адресов в конфигурации. Это комплексная стратегия защиты инфраструктуры от DDoS-атак, подбора паролей (brute-force) и эксплуатации уязвимостей, основанная на многоуровневом подходе и автоматизации. В этом руководстве собраны проверенные на практике конфигурации для сетевых экранов, веб-серверов и оборудования, а также инструкции по настройке систем динамической блокировки fail2ban и CrowdSec.
Быстрая навигация: как заблокировать IP
- Заблокировать IP-адрес: добавьте правило в iptables или элемент в blacklist nftables.
- Запретить подсеть: используйте адрес сети с префиксом, например
192.0.2.0/24. - Ограничить brute-force: настройте лимиты запросов в Nginx или Apache для прикладного сервиса.
- Включить автоматическую блокировку: подключите fail2ban или CrowdSec к логам SSH и веб-сервера.
- Настроить геоограничение: используйте GeoIP в Nginx либо геофильтрацию на CDN.
Перед внедрением проверьте, где должен применяться запрет: на сетевом уровне, уровне приложения или по событиям в логах. Изменения правил фильтрации тестируйте в staging-среде и заранее подготовьте способ разблокировки собственного IP.
Готовые решения: блокировка IP на сетевом уровне
Сетевой уровень подходит для немедленной блокировки источника, запрета подсети и ограничения соединений до того, как запрос попадёт в веб-сервер. Эти правила эффективны против простых flood-атак, но не заменяют внешнюю защиту от масштабного DDoS.
Когда использовать: при известном вредоносном IP, повторяющихся сетевых подключениях и необходимости быстро остановить трафик.
Когда не использовать: не блокируйте большие диапазоны без проверки, если за ними могут находиться пользователи, NAT-шлюзы или CDN.
Блокировка IP и подсети в iptables
iptables остаётся базовым инструментом для экстренной блокировки. Правила применяются немедленно и эффективны против flood-атак.
Блокировка конкретного IP-адреса:
iptables -A INPUT -s 192.0.2.100 -j DROP
Блокировка всей подсети:
iptables -A INPUT -s 192.0.2.0/24 -j DROP
Ограничение количества новых соединений с одного IP:
iptables -A INPUT -p tcp --syn --dport 80 -m connlimit --connlimit-above 20 -j DROP
Правило с connlimit ограничивает одновременные подключения, а не общий объём трафика. Порог нужно подбирать по профилю сервиса: слишком низкое значение может заблокировать легитимных пользователей за NAT.
Для сохранения правил после перезагрузки используйте iptables-save и iptables-restore или инструменты вашего дистрибутива, например netfilter-persistent в Debian. В разных дистрибутивах iptables может работать поверх совместимого интерфейса nftables, поэтому перед эксплуатацией проверьте фактический backend и порядок цепочек.
Блокировка IP в nftables
nftables — современная альтернатива с более простым синтаксисом. Базовая конфигурация для создания таблицы и set для блокировки:
nft add table inet filter
nft add set inet filter blacklist { type ipv4_addr; flags dynamic; }
nft add chain inet filter input { type filter hook input priority 0; }
nft add rule inet filter input ip saddr @blacklist counter drop
Для динамического добавления IP в blacklist:
nft add element inet filter blacklist { 192.0.2.100 }
Перед применением проверьте, не существует ли уже таблица, set или chain с таким именем. Для постоянного хранения правил используйте штатный механизм вашего дистрибутива и проверьте восстановление после перезагрузки.
Блокировка IP на веб-сервере: Nginx и Apache
Уровень приложения эффективен против прикладных DDoS и brute-force атак, направленных на конкретный веб-сервис. Он позволяет учитывать URL, частоту запросов и особенности приложения, но не останавливает трафик до сетевого стека.
Когда использовать: для защиты форм входа, API и отдельных location, если нужно ограничить запросы, а не полностью закрыть сетевой доступ.
Когда не использовать: не рассчитывайте на Nginx или Apache как на средство отражения объёмного DDoS, который уже заполняет канал или перегружает периметр.
Ограничение запросов и соединений в Nginx
Nginx: Используйте модули ngx_http_limit_req_module и ngx_http_limit_conn_module для контроля частоты запросов и количества соединений.
limit_req_zone $binary_remote_addr zone=one:10m rate=10r/s;
limit_conn_zone $binary_remote_addr zone=addr:10m;
server {
location /login/ {
limit_req zone=one burst=20 nodelay;
limit_conn addr 10;
}
}
Значения rate, burst и limit_conn нужно проверять на реальной нагрузке. За reverse proxy убедитесь, что Nginx получает исходный IP через корректно настроенный доверенный заголовок, иначе все клиенты могут определяться как один адрес.
Блокировка по геолокации требует модуля GeoIP или использования переменной, полученной из стороннего источника, например CDN:
if ($geoip_country_code = "RU") {
return 403;
}
Важно: синтаксис и доступность переменной зависят от используемого модуля GeoIP и его версии. Базу геолокации необходимо регулярно обновлять, а правило проверять на тестовом трафике, поскольку геолокация IP не определяет местоположение пользователя с абсолютной точностью.
Для использования современного протокола HTTP/3, работающего поверх QUIC, в Nginx требуется версия 1.25.0 или выше и наличие модуля ngx_http_v3_module. Конкретные параметры сборки и пакета зависят от дистрибутива.
Для понимания полной структуры конфигурации Nginx обратитесь к нашему полному руководству по nginx.conf.
Блокировка IP и защита от brute-force в Apache
Apache: Для аналогичных целей используйте модуль mod_evasive или mod_security. Доступность модулей и расположение конфигурации зависят от версии Apache и дистрибутива.
Пример базовой конфигурации mod_evasive:
DOSHashTableSize 3097
DOSPageCount 2
DOSSiteCount 50
DOSPageInterval 1
DOSSiteInterval 1
DOSBlockingPeriod 10
Пороговые значения нужно сопоставить с нормальной частотой запросов приложения. Для точечной блокировки IP используйте правила Apache только после проверки порядка их применения и наличия reverse proxy перед сервером.
Автоматическая блокировка по логам: fail2ban и CrowdSec
Автоматические системы анализируют логи служб и динамически блокируют источники атак, минимизируя ручное вмешательство. fail2ban — проверенный инструмент для локальной реакции, CrowdSec — система с обменом индикаторами угроз CTI и отдельными bouncers.
Когда использовать: для SSH, панелей управления, веб-форм и других сервисов, где атака имеет узнаваемый шаблон в логах.
Когда не использовать: автоматический бан не подходит как единственная мера против объёмного flood- или DDoS-трафика. Ошибка в regex может привести к ложным блокировкам.
Настройка fail2ban: jail и фильтры
Конфигурация fail2ban состоит из файлов jail, которые определяют условия блокировки, filter с regex для поиска в логах и action, задающего действие при обнаружении.
Создайте или измените файл /etc/fail2ban/jail.local:
[sshd]
enabled = true
port = ssh
filter = sshd
logpath = /var/log/auth.log
maxretry = 3
bantime = 3600
findtime = 600
Путь к журналу зависит от дистрибутива и настроек systemd. Перед включением jail проверьте его командой fail2ban-client status sshd и убедитесь, что ваш административный IP добавлен в allowlist.
Чтобы создать собственный фильтр для обнаружения попыток подбора пароля к WordPress в логах Nginx, добавьте файл /etc/fail2ban/filter.d/wp-login.conf:
[Definition]
failregex = ^<HOST>.*POST.*wp-login.php.* 200
ignoreregex =
Пример действия для блокировки в iptables и отправки уведомления в Telegram через скрипт можно определить в action.d. Настройка многократных срабатываний контролируется параметрами findtime, maxretry и bantime.
CrowdSec: автоматическая защита с обменом CTI
CrowdSec работает по принципу локального агента, который анализирует логи, и централизованной платформы обмена индикаторами угроз CTI. Агент использует парсеры (parsers) для разбора логов и сценарии (scenarios) для определения атак.
После установки агента необходимо его зарегистрировать и выбрать сценарии для защиты. Например, для защиты веб-сервера подойдут сценарии http-bf-attack и http-scan-attack. Блокировка осуществляется через специальные модули — bouncers, например crowdsec-firewall-bouncer для интеграции с iptables/nftables.
Перед включением сценария проверьте совместимость версии агента, парсера и bouncer. Сначала наблюдайте срабатывания и исключения, затем переводите политику в режим блокировки. Система позволяет использовать знания глобального сообщества о текущих угрозах, но не отменяет локальную проверку логов.
Настройка блокировки IP на маршрутизаторе: Mikrotik и Keenetic
Блокировка на периметре сети маршрутизатором дополняет серверные правила. Она подходит, когда источник нужно отсечь до передачи трафика на внутренние хосты.
Mikrotik: Создайте Address List и правило фильтрации в Firewall.
/ip firewall address-list add list=blacklist address=192.0.2.100
/ip firewall filter add chain=input src-address-list=blacklist action=drop
Порядок правил Firewall имеет значение: проверьте, что правило блокировки не обходится более ранним accept. Для автоматизации можно использовать скрипты, которые добавляют IP в список из внешнего источника или по событию.
Keenetic: Для базовой блокировки используйте встроенные функции родительского контроля и фильтрации, создавая правила для конкретных IP-адресов или диапазонов в интерфейсе администратора. Возможности и названия пунктов зависят от версии NDMS. Рекомендуется каскадировать эти правила с более тонкой фильтрацией на серверах.
Почему блокировать IP: угрозы и практический контекст
Блокировка IP-адресов — это базовый, но критически важный элемент защиты любой сетевой инфраструктуры. В 2026 году скорость возникновения угроз увеличилась. Например, уязвимость CVE-2026-33626 (SSRF в LMDeploy) была впервые эксплуатирована через 12 часов 31 минуту после публикации. Мощность DDoS-атак также растёт: в кейсе защиты портала «Пегас Туристик» мощность трафика достигала 125 миллионов обращений за 15 минут, что привело к выходу из строя оборудования у двух провайдеров.
Цели атак разнообразны: нарушение доступности сервисов (DDoS), получение несанкционированного доступа (brute-force, SSRF) или обход политик безопасности. Первым признаком атаки может быть не очевидный скачок трафика, а искажение его распределения на уровне потоков (flow level). Для оценки воздействия на инфраструктуру, например криптовалютную, исследователи используют комплексную метрику ASI (Availability Stress Index). Анализ значимости отклонений проводится с помощью статистических методов, таких как тест Манна-Уитни с поправкой на частоту ложных открытий.
Кейс защиты корпоративного портала «Пегас Туристик» компанией «Синтерра» демонстрирует современный подход: система сочетала рыночные решения с собственными разработками, развернутыми в ЦОД. Этот пример показывает необходимость комплексной стратегии, но не заменяет проверку конфигурации в конкретной инфраструктуре.
При анализе DDoS-трафика важно отслеживать не только объём, но и специфические параметры. Исследования показывают, что под стрессом доступности наиболее заметно меняются длины пакетов и время между прибытием пакетов в обратном направлении. Метрика ASI помогает количественно оценить это воздействие, а тест Манна-Уитни — выявить статистически значимые аномалии.
Атаки на прикладном уровне требуют особенно быстрой реакции. Пример эксплуатации уязвимости CVE-2026-33626 показывает, что злоумышленник за 8 минут выполнил 10 различных запросов для сканирования внутренней сети, включая сервис метаданных AWS. Блокировка IP на уровне приложения или через автоматические системы, анализирующие логи, может остановить такие попытки до достижения цели.
Мониторинг логов веб-сервера и служб, например SSH, на предмет шаблонов атак — основа для конфигурации инструментов автоматической блокировки. Эта мера дополняет другие слои защиты, такие как проверка ссылок на принадлежность к вредоносным и фишинговым веб-адресам, которую может выполнять Веб-Антивирус Kaspersky. Для глубокого анализа логов и поиска паттернов атак используйте готовые команды grep и awk из нашего руководства по практическому анализу логов Nginx и Apache.
Сравнение методов блокировки IP: что выбрать
Выбор метода зависит от типа угрозы, уровня защиты и ресурсов инфраструктуры.
| Уровень | Инструмент | Когда выбирать | Когда не выбирать | Brute-force и DDoS | Сложность |
|---|---|---|---|---|---|
| Сеть | iptables / nftables | Известный IP, подсеть, flood | Нужен анализ URL или логов | Высокая защита от flood, средняя от brute-force портов | Низкая |
| Приложение | Nginx / Apache | Веб-формы, API, URL и лимиты | Канал уже перегружен | Высокая для прикладных атак и веб-form brute-force | Средняя |
| Автоматизация | fail2ban / CrowdSec | Повторяемые события в логах | Нужно остановить объёмный flood до сервера | Низкая для flood, очень высокая для реакции на логи | Высокая |
Практический выбор:
- Для отражения flood-атак используйте правила на сетевом уровне, iptables/nftables, а для крупного DDoS — защиту на периметре или CDN.
- Для защиты веб-приложений от прикладных DDoS и подбора паролей настройте лимиты запросов в Nginx/Apache.
- Для реактивной защиты от сканирования и попыток взлома, основанных на анализе логов, внедрите fail2ban или CrowdSec.
- Для геоограничения блокировка через базу GeoIP быстра, но требует обновления. Блокировка на уровне приложения точнее для веб-трафика, а CDN обычно лучше масштабируется.
Мониторинг и интеграция в security-стек
Блокировка IP должна быть частью комплексной стратегии безопасности, а не отдельной мерой. Перед блокировкой анализируйте контекст события, контролируйте количество банов и оставляйте возможность быстрого отката.
Анализ перед блокировкой: Используйте iftop, nethogs и глубокий анализ логов. Ищите паттерны, а не единичные события. Множество запросов к /wp-login.php с разных IP может быть легальным трафиком, но сотни запросов с одного IP в минуту — признак атаки. Наш гайд по анализу логов предоставляет готовые команды.
Интеграция с мониторингом: Свяжите систему автоматической блокировки, например fail2ban, с Prometheus/Grafana для визуализации количества блокировок и контроля ложных срабатываний. Для построения дашбордов можно использовать опыт из статьи о анализе логов и мониторинге в Grafana.
Архитектурный паттерн: Рассматривайте блокировку IP как последний рубеж защиты. Первыми должны работать системы предотвращения уязвимостей (WAF), проверки контента и обнаружения вторжений (IDS). Блокировка по IP применяется тогда, когда другие механизмы идентифицировали устойчивую вредоносную активность с конкретного источника.
Для построения такой комплексной системы безопасности необходимы базовые навыки администрирования Linux, которые можно получить из нашего практического руководства по Linux, и понимание принципов системного администрирования, раскрытых в практическом руководстве по системному администрированию.
Краткое резюме: шпаргалка по блокировке IP
- Заблокировать IP в iptables:
iptables -A INPUT -s IP_АДРЕС -j DROP - Заблокировать подсеть в iptables:
iptables -A INPUT -s IP_ПОДСЕТЬ -j DROP - Ограничить соединения в iptables:
iptables -A INPUT -p tcp --syn --dport 80 -m connlimit --connlimit-above 20 -j DROP - Добавить IP в blacklist nftables:
nft add element inet filter blacklist { IP_АДРЕС } - Заблокировать IP в Mikrotik:
/ip firewall address-list add list=blacklist address=IP_АДРЕС - Настроить лимит запросов в Nginx:
limit_req_zone $binary_remote_addr zone=one:10m rate=10r/s; - Перезапустить fail2ban:
systemctl restart fail2ban
Часто задаваемые вопросы (FAQ)
Как быстро заблокировать IP-адрес в iptables?
Используйте iptables -A INPUT -s IP_АДРЕС -j DROP. Для сохранения после перезагрузки примените iptables-save или пакет netfilter-persistent.
Как разблокировать IP-адрес в iptables?
Найдите номер правила командой iptables -L INPUT --line-numbers, затем удалите его: iptables -D INPUT НОМЕР_ПРАВИЛА. Для IP в nftables set используйте nft delete element inet filter blacklist { IP_АДРЕС }.
Что лучше: fail2ban или CrowdSec?
fail2ban подходит для простой локальной защиты на основе логов. CrowdSec добавляет распределённый обмен данными об угрозах (CTI) и удобен для инфраструктур, где нужна глобальная репутация IP. Выбор зависит от масштаба и требований к интеграции.
Как настроить fail2ban для Nginx?
Создайте jail в /etc/fail2ban/jail.local, укажите путь к логам Nginx и фильтр, затем проверьте regex и перезапустите fail2ban командой systemctl restart fail2ban.
Как настроить блокировку по странам в Nginx?
Подключите совместимый модуль GeoIP и используйте переменную $geoip_country_code в директиве if: if ($geoip_country_code = "RU") { return 403; }. Для масштабной геофильтрации рассмотрите CDN.
Как защитить сервер от DDoS-атак с помощью iptables?
Для простых flood-атак используйте правило iptables -A INPUT -p tcp --syn --dport 80 -m connlimit --connlimit-above 20 -j DROP. Для более сложных атак комбинируйте iptables с WAF и специализированными сервисами защиты от DDoS.