Обновить

Комментарии 10

На дворе шел 2026 год.

ipset

С нетерпением жду статью про настройку сети в современных линуксах при помощи утилит ifconfig и route.

Справедливо отметили, спасибо) Да, для новых конфигураций я бы сейчас и сам скорее смотрел в сторону nftables, и как раз дорабатываю решение под него. Но сравнение с ifconfig всё же слишком сильное, ipset и сегодня остаётся рабочим инструментом для многих существующих серверов. В статье я разбирал именно тот вариант, который сложился на практике и показал себя в работе.

так есть же пакет, который возвращает простой и понятный синтаксис для обработчика nft

Спасибо, да, видел, что вокруг nft уже есть удобные обвязки. Я как раз сейчас в эту сторону и смотрю. Но в статье сознательно разбирал то решение, которое реально внедрялось в существующей инфраструктуре.

Пакеты из стран, где у нас нет интересов, дропаются сразу. HTTP даже не парсится.

а потом эти же люди воют, что у них без впн что-то не открывается 👌

Да, поэтому я и не рассматриваю это как универсальный подход. В данном случае блокировка по странам была отдельным требованием клиента😅 но в самом решении она сделана как отключаемая опция. То есть его можно использовать и без geoblock, оставив остальные уровни фильтрации и autoban.

Блокировка до приложения. Любая защита на уровне PHP уже поздняя. Если бот дошёл до nginx или PHP-FPM, ресурсы уже потрачены.

Это тоже упрощение. Ну потрачены, и? Потрачены один раз — пилотный прошёл, дальше нет. Так трагедизировать это не стоит.

Я для подобных целей написал плагин для Caddy (все новые проекты перевожу на него с Nginx). Для Caddy легко можно написать плагин ИИ-шкой.

Этот плагин просто банит опять же по ipset (чтобы даже до Caddy не добирались, не то что до бэкенда) всё чего нет в белом списке. Кроме того бэкенд может послать сигнал в Caddy (заголовок типа X-Ban-IP), с указанием на сколько его забанить. Это для случаев когда перебирают пароли, или что-то в этом духе. Можно указывать время бана и степень (отдавать ошибку 418/429 или в ipset). Также для ipset используется ttl, так как IP могут меняться, и нечего захламлять себе. В последнее время смотрю начали долбить с Cf-Worker.

Спасибо большое, полезное дополнение, обязательно попробую такое решение!

В качестве альтернативы можно подключить сайт с битриксом (как и любой другой) к SIEM-системе, например бесплатный Wazuh. Агент отправляет логи в SIEM, SIEM их анализирует и по списку правил (страна, shellshock, wp-login.php, .env, git,.. ) принимает решение блокировать или нет и на какой срок. Успевают пролетать только несколько первых запросов. В дополнение проверка по mittre, интерфейс, история, алерты.

Зарегистрируйтесь на Хабре, чтобы оставить комментарий

Публикации