Данная раздача представляет собой готовый набор правил для защиты веб-сервера Nginx от вредоносных ботов, сканеров уязвимостей и атак на уровне конфигурации. Она включает блокировку более 190 современных AI-ботов (GPTBot, ClaudeBot, Google-Extended, OpenClaw, DeepSeek, Perplexity и др.), вредоносных сканеров (Nmap, SQLmap, HTTrack, Nikto, Dirb, Gobuster), хостинговых ASN-сетей (IP-адресов дата-центров), а также Headless браузеров и инструментов автоматизации (HeadlessChrome, Puppeteer, Playwright, Electron, Cypress, Selenium). Конфигурация содержит WAF-правила для обнаружения SQL-инъекций, XSS, path traversal, блокировки доступа к служебным файлам (.env, .git, wp-config.php, phpinfo.php), защиты от XML-RPC атак и user enumeration. Добавлена поддержка Cloudflare: блокировка прямых запросов в обход CDN через проверку заголовка X-Forwarded-For, корректное определение реальных IP посетителей через set_real_ip_from, а также возможность раздельной настройки для доменов без Cloudflare с использованием проверок Client Hints (Sec-CH-UA). Встроены ограничения частоты запросов (rate limiting), централизованное логирование причин блокировок с расширенным форматом и передача причины блокировки в бэкенд (Apache) через заголовок X-Block-Reason. Из поисковых роботов разрешены только Googlebot и Bingbot, все остальные (включая Яндекс) заблокированы. Конфигурация протестирована на Nginx 1.24+ и подходит для использования на серверах с PHP (CMS, фреймворки) как замена или дополнение к облачным WAF.
Файлы:
AS_hosting_ipinfo.io_countries_WORLD.txt - список всех известных ASN номеров с типом hosting по версии сайта ipinfo.io/countries на апрель 2026.
IPs_blocks_for_AS_hosting_ipinfo.io_countries_WORLD.txt - список CIDR всех известных ASN номеров с типом hosting из предыдущего файла.
blockcidr.conf, blockcidr_cloudflare.conf - конфигурационный файл nginx со списком CIDR из предыдущего файла с удалёнными дубликатами CIDR.
blockcidr.conf не блокирует заходы с IP Cloudflare.
blockcidr_cloudflare.conf (переименуйте в blockcidr.conf при установке) блокирует заходы с IP Cloudflare.
Используйте один из них.
blockua.conf - конфигурационный файл nginx со списком, который блокирует более 190 современных AI-ботов, вредоносных сканеров и агрессивных краулеров, включая GPTBot, ClaudeBot, Google-Extended, OpenClaw (актуальная угроза 2026 года), а также инструменты вроде Nmap, SQLmap и HTTrack, при этом безопасно разрешая работу основных поисковых роботов (Googlebot, Bingbot), сервисов превью ссылок (Facebook, Telegram) и RSS-агрегаторов (Feedly). Файл представлен в формате готовой map-директивы для Nginx с флагами 0 (разрешить) и 1 (заблокировать). Внимание: поисковый бот yandex в правилах заблокирован!
blockinj.conf - WAF на уровне nginx: проверяет URL и параметры запросов на наличие SQL-инъекций, XSS, path traversal, сканеров и блокирует доступ к служебным путям (.env, .git, админкам CMS).
block_checks.conf - выполняет централизованную проверку входящих запросов на превышение лимитов, черные списки IP, SQL-инъекции, XSS, обход путей, сканеры, плохие user-agent и referer, блокируя их с возвратом кода 444 и указанием причины в логе.
blocksec.conf - конфигурационный файл Nginx для блокировки ботов и автоматизированных инструментов через анализ заголовков Client Hints (Sec-CH-UA). Блокирует фейковые grease-бренды Not/A.*Brand, Not\)A), а также выявляет несовместимые платформы: Chrome на iOS (браузер не существует на данной платформе) и Safari на Windows или Linux (браузер существует только на macOS и iOS). Реальные браузеры (Chrome, Firefox, Safari, Edge, Opera, Brave, Yandex) не блокируются, так как они отправляют корректные значения Sec-CH-UA.
lastconnetions.sh - скрипт показывает в левом блоке уникальные IP с блокировками 444 за последние N минут, в правом — сгруппированные по IP, причине и домену запросы с количеством повторений, кодом 444 и причиной блокировки. Данные обновляются каждые 5 секунд, экран перерисовывается 1 раз в секунду с очисткой старых строк. Скрипт обрабатывает IPv4 и IPv6, исключает IP Cloudflare (если в логе есть второй реальный IP) и читает логи только за последние N минут без ограничения числа записей. Скрипт НЕ БУДЕТ РАБОТАТЬ без предварительной настройки сервера согласно правилам nginx из этой раздачи.
analyze_logs_mafia.sh - скрипт анализирует логи веб-сервера nginx/apache, выявляет атаки и формирует отчет для настройки защиты. Скрипт НЕ БУДЕТ РАБОТАТЬ без предварительной настройки сервера согласно правилам nginx из этой раздачи.
Внимание! В первых четырех файлах добавлен Яндекс, удалите из blockcidr.conf и blockua.conf, если не хотите блокировать бот Яндекса:
AS13238 (Yandex LLC)
AS200350 (Yandex.Cloud LLC)
AS208795 (Yandex.Cloud Kazakhstan LLP)
AS210656 (Yandex.Cloud LLC)
бот yandexНастройка для версий 3.6.x:
1. В nginx.conf должны быть следующие директивы (блок НАСТРОЙКИ REAL IP ДЛЯ CLOUDFLARE - только если вы пользователь Cloudflare).
Файлы blockcidr.conf, blockua.conf, blockinj.conf, block_checks.conf, blocksec.conf размещены в папке /etc/nginx - там же, где файл nginx.conf.
Добавить в nginx.conf
2. Настройка конфигурационного файла для отдельного домена /etc/nginx/vhosts/<пользователь>/<ваш домен>.conf (замените <ваш домен> на ваш домен и пропишите правильный путь к логам сайта в строке access_log /var/www/httpd-logs/<ваш домен>.access.log main;)
Важно (выберите одно из двух):
Раскомментируйте директивы блока ЗАПРЕТ ПРЯМЫХ ЗАПРОСОВ МИНУЯ CLOUDFLARE, если ваш домен работает через Cloudflare. + Настройка в панели управления доменом на Cloudflare должна быть выключена: Rules → Settings → Managed Transforms → Remove visitor IP headers.
Раскомментируйте директивы блока ПРОВЕРКИ SEC-CH-UA (только для доменов без CLOUDFLARE), если ваш домен работает не через Cloudflare.
Настройка /etc/nginx/vhosts/<пользователь>/<ваш домен>.conf
3. Так как я использую связку Apache + Nginx (стандартная связка, если вы используете ISPManager), мне пришлось немного поднастроить формат вывода логов в Apache. Логи пишутся в один файл с логами Nginx, что приводило к разному формату записи. Я изменил формат логов Apache и добавил в лог вывод причины блокировки также, как это сделано для Nginx.
Настройка формата логов Apache
Теперь в логах вашего домена вы можете наблюдать заблокированные запросы с кодом и пояснением:
blocked_ip — IP в черном списке
badagent — плохой User-Agent
sql_injection — SQL инъекция
xss_attack — XSS атака
path_traversal — обход пути
scanner_params — параметры сканера
block_path — заблокированный путь
spam_params — спам параметры
malicious_upload — вредоносная загрузка
user_enumeration — перебор пользователей
xmlrpc_block — XML-RPC
bad_referer — плохой referer
malicious_referer — вредоносный referer
suspicious_params — подозрительные параметры
bad_method — запрещенный метод
rate_limit — превышение лимита запросов (если сработает)
conn_limit — превышение лимита соединений (если сработает)
wp_rest_api — WP REST API
config_file — доступ к конфигам
php_info — phpinfo
direct_request — запрос напрямую к серверу, минуя Cloudflare (только для доменов через CF)
badagent_sec — плохой Sec-CH-UA (Client Hints)
platform_mismatch — несоответствие User-Agent и платформы (пример: мобильный на десктопной ОС)
Пример лога с кодом 444 (соединение сброшено) и причиной (кодом) блокировки:
4. Настройка скрипта lastconnetions.sh
Подробнее читайте в read_me.html
5. Настройка скрипта analyze_logs_mafia.sh
Подробнее читайте в read_me.html
Раздается эксклюзивно только на этом сайте ipbmafia.ru. За раздачу на других ресурсах ответственности не несу. Не забываем перезапускать Apache и Nginx после настройки. Волшебная команда nginx -t и бот https://chat.deepseek.com/ в помощь!