Автоматизированные запросы поглощают вычислительные ресурсы, искажают аналитические данные, снижают конверсию. DDoS-волна парализует службу поддержки, влечёт штрафы за недоступность. KillBot внедряет несколько слоёв контроля, формируя барьер для любого скриптового трафика, сохраняя при этом плавность работы легитимных посетителей. Подробнее: https://fabryka.ru/rulonnye-shtory/
- Проверка личности
- Анализ трафика
- Устойчивость инфраструктуры
- Подготовка окружения
- 1. Клонируем репозиторий:
- 2. Переходим в каталог:
- 3. Сборка:
- 4. Копирование библиотеки:
- 5. Активация:
- Фильтрация IP
- <
- # подсеть общедоступных прокси
- # дата-центры без валидного реверса
- # доверенная корпоративная сеть
- User-Agent анализ
- <
- # curl без версии
- # Python скрипты по умолчанию
- # старые версии MJ12bot
- Журналирование и реакция
- Завершение настройки
- После загрузки конфигурации выполняется проверка:
- Обновление правил
- Рекомендуется cron-задача:
- Тестирование
- Автоматизация CI/CD
- Резервный механизмизм
- Поддержка Nginx
Проверка личности
Алгоритм стартует с пассивного сбора отпечатков: IP-сегмент, TTL, набор HTTP-заголовков, JA3-сигнатура TLS, ширина экрана, частота кадров, особенности сенсорного ввода. Система присваивает вес каждому признаку и вычисляет агрегированное доверие с точностью до миллисекунд. Сессии, набравшие пороговый балл, получают прозрачный пропуск, остальные перемещаются в активный этап.

Скриптовый клиент испытывает хэш-головоломку с прогрессирующей сложностью либо адаптивный CAPTCHA-виджет на основе WebGL. Время решения, число попыток, фокус окна и движение курсора поступают в повторный расчёт балла. Распознавание «человеческой» моторики использует рекуррентную сеть, обученную на перемещениях мыши добровольцев, у бота траектория линейна, ускорение дискретно, угол пересечения осей ограничен. Кластеризация K-Means выявляет аномальный паттерн без потери производительности сервера.
Анализ трафика
Далее трафик проходит через L7-прокси с непрерывной инспекцией. Гистограмма частоты запросов формируется скользящим окном пять секунд. Алгоритм token bucket снижает скорость при превышении лимита, а новая заявка, пришедшая из пустого сегмента, вновь получает нормальную пропускную способность. В кетч-лог попадают метки ASN, время всплеска, тип ресурса, эти записи кормят off-line гриди-дерево, обновляющее правила без паузы.
Edge-узел проверяет сигнатуры общедоступных ботнетов через ThreatIntel API: Mirai, Echobot, Mosi. CRC-хеш входящего пакета сверяется с фильтром Блума, совпадение активирует моментальное обнуление TCP-окон для данного источника. На уровне UDP включается агрессивный обрыв с ICMP-приглушением, что сокращает кумулятивный объём до минимальной отметки.
Устойчивость инфраструктуры
Сервера KillBot размещены в Anycast-сети, BGP-анонс автоматически перенаправляет массу пакетов в ближайший scrubbing-центр. Там GRE-туннель отделяет легальный L4-трафик от шторма SYN-пакетов, а Netfilter-модуль с SYN-cookie пропускает лишь подтверждённые рукопожатия. После очистки запросы проходят в кэш CDN с квотированием объектов и горячим хранением HTML-шаблонов.
Внутри дата-центра балансировщик TCP-прокси разделяет нагрузку между контейнерами с изоляцией cgroup. Каждый контейнер перезапускается после N обработанных соединений, исключая накопление фрагментов памяти, используемых ботами для удержания сокетов. Фоновый Daemon отслеживает высокую энтропию входящего пакета, выход за статистический предел запускает затухание окон, что понижает амплитуду атаки без вмешательства администраторов.
Система телеметрии Prometheus регистрирует показатель RPS, среднюю задержку, коэффициент ложных срабатываний. Dashboard Grafana сигнализирует при смещении доверительного интервала SLA. Авто-рейтинги Kubernetes переключают поды на резервную площадку, сохраняя сессию через общую Redis-репликацию. Такой подход гарантирует отказоустойчивость без заметного перерыва для пользователя.
Юридический контур включает шифрование персональных данных, обрезку Cookie до минимального набора, хранение журнальных файлов десять дней, после чего выполняется очистка. KillBot поддерживает экспорт отчётов DPI для офиса комплаенса и протоколирование инцидентов в формате STX 2.1.
Этап внедрения начинается с аудита, продолжает плотным трафиком 10 % аудитории, затем масштабирующая фаза доводит охват до полной нагрузки. Канал обратной связи с разработчиками собирает статистику ошибочных блокировок, что ускоряет обучение модели. После стабилизации порог доверия обновляется раз в сутки cron-процессом.
Суммарно KillBot снижает бот-трафик до статистического шума, удерживает среднюю задержку на уровне пользовательского порога терпения и устраняет экономические потери, вызванные DDoS-шквалами.
KillBot служит расширяемым фильтром, контролирующим каждое подключение по сетевому адресу и идентификатору клиента. Основная задача — снизить нагрузку, исключив автоматизированные сканеры до обращения к приложению.
Подготовка окружения
Пакет распространяется через репозиторий GitHub. Перед клонированием стоит убедиться, что на сервере присутствуют git, gcc, модуль mod_security. Права пользователя www-data подходят для финальной установки.
1. Клонируем репозиторий:
2. Переходим в каталог:
3. Сборка:
4. Копирование библиотеки:
5. Активация:
echo «LoadModule killbot_module modules/libkillbot.so» >> /etc/apache2/apache2.conf
Фильтрация IP
Первый фильтр использует списки CIDR. Раздел killbot.conf размещается в /etc/apache2/conf-available/:
<
# подсеть общедоступных прокси
# дата-центры без валидного реверса
# доверенная корпоративная сеть
Директива deny отклоняет запросы до обработки ядром Apache, экономя до 90 % CPU на высоком трафике. Параметр allow размещается выше deny при необходимости прерывания цепочки проверки. Списки CIDR поддерживают IPv6.
User-Agent анализ
Второй уровень работает по шаблонам PCRE. Блок transcribe игнорирует регистр и пробелы, сокращая размер базы:
<
# curl без версии
# Python скрипты по умолчанию
# старые версии MJ12bot
Порядок записей отражает приоритет. Использование якорей ^ и $ исключает ложные совпадения. Шаблоны подгружаются в общую память Apache, поэтому количество правил практически не влияет на латентность при первом хите.
Журналирование и реакция
KillBot выводит отчёты через syslog с префиксом KILLBOT. Пример строки:
Aug 14 12:03:11 srv01 killbot[1293]: DENY 45.13.77.3 UA=curl/7.83.1 RULE=IP#2
Криптованная метка RULE помогает при обратном аудите. Для запоминания флага в Redis достаточно одного вызова из luahook, включённого в пакет contrib.
Завершение настройки
После загрузки конфигурации выполняется проверка:
Профилировка проводится при помощи ab или wrk. Пример:
wrc -t 4c 120 -d30s http://site.tld/
Падение 5xx свидетельствует о нехватке MaxRequestWorkers либо ошибке в посреднике luahook.
Обновление правил
Рекомендуется cron-задача:
0 3 * * * /opt/killbot/tools/update.sh && service apache2 reload
Скрипт тянет свежие диапазоны хостинг-провайдеров через API AbuseIPDB, перезаписывая killbot.conf. Проверка SHA-256 исключает подмену.
Тестирование
curl -I -A «url» http://site.tld/ вернёт 403.
curl -I -A «Mozilla/5.0 (Windows NT 10.0, Win64, x64) Chrome/114.0» http://site.tld/ вернёт 200.
Успешное тестирование завершается записью в /var/log/syslog.
Автоматизация CI/CD
Файл killbot.conf входит в репозиторий, хэшируется в pipeline. При pull request выполняется docker-job с apache2ctl t. Нулевая ошибка продолжает деплой до production.
Резервный механизмизм
В критической ситуации MOD Security Rule Engine Off временно отключает инспекцию. Действие заносится в audit.log для дальнейшего разбирательства.
Поддержка Nginx
KillBot скомпилирован в виде динамического модуля ngx_http_killbot_module.so. Конфигурация identична разделу для Apache, за исключением синтаксиса директив.
Пакет закрывает типовые пути: IP-подставы, агрессивные краулеры, медленные L7-атаки. Грамотное применение повышает доступность и снижает расходы на инфраструктуру.
