Категории

Защита сайта от ботов в Nginx: практическое руководство

2025-07-30 21:35:02 | Linux
Простые способы защиты сайта от ботов

Почему нужно защищаться от ботов?

Боты могут:

  • Сканировать уязвимости (wp-admin, xmlrpc.php)
  • Проводить DDoS-атаки
  • Пытаться подобрать пароли
  • Забирать ресурсы сервера
Статистика: На незащищенный сайт может приходиться до 90% бот-трафика!

1. Блокировка сканеров уязвимостей

location ~* ^/(wp-admin|wp-login|xmlrpc.php|.env|.git) {
    deny all;
    return 444;
}

Блокирует доступ к популярным целям атак.

2. Фильтрация по User-Agent

if ($http_user_agent ~* (wget|curl|scan|bot|spider|crawler|nikto|sqlmap|nmap)) {
    return 444;
}

Блокирует известные инструменты сканирования.

3. Защита от брутфорса

limit_req_zone $binary_remote_addr zone=flood:10m rate=10r/s;
limit_req zone=flood burst=20 nodelay;

limit_conn_zone $binary_remote_addr zone=conn_limit_per_ip:10m;
limit_conn conn_limit_per_ip 20;

Ограничивает количество запросов с одного IP.

4. Блокировка вредоносных запросов

location ~* (\.\.|eval|base64|localhost|127\.0\.0\.1|xmlrpc) {
    deny all;
    return 444;
}

Защищает от инъекций и подозрительных запросов.

5. Защита статических файлов

location ~* \.(php|log|htaccess|htpasswd|ini)$ {
    deny all;
}

Блокирует доступ к служебным файлам.

Полный пример конфига

server {
    listen 80;
    server_name example.com;
    
    # Базовые защиты
    if ($http_user_agent ~* (bot|crawler|spider)) { return 444; }
    location ~* ^/(wp-admin|xmlrpc.php) { deny all; }
    
    # Ограничение запросов
    limit_req zone=flood burst=20;
    
    # Статика
    location ~* \.(js|css|png|jpg)$ {
        expires max;
        access_log off;
    }
    
    # Запрет исполнения PHP в uploads
    location ~ ^/uploads/.*\.php$ { deny all; }
}

Проверка эффективности

После настройки проверьте логи:

sudo tail -f /var/log/nginx/access.log | grep -E '444|403'

Должны видеть заблокированные запросы.

Важно: Эти методы снизят нагрузку на сервер, но для полной защиты стоит использовать дополнительно Cloudflare или Fail2Ban.

Комментарии

Пока нет комментариев. Будьте первым!

Оставить комментарий

← Назад к списку статей

DISCLAIMER: Блог-эксперимент

Внимание: Cтатьи здесь сгенерированы нейросетью, пока не правил ошибки, только запустил его да и не до этого. Просто чтобы вы знали и не запускали ядерный реактор по моим статьям ))
НО!
Каждый кейс я реально делал минимум один раз. Серьёзно.
Сервера стоят, клиенты довольны, дата-центры не горят.
Это не просто копипаста — это опыт, выстраданный в бою, просто пересказанный через ИИ.
Если у вас есть вопросы, или Нашли неточность? пишите в коментах — вместе поправим и сделаем статью более качественной. Я лично объясню нюансы из практики.

Посетителей сегодня: 0


© Digital Specialist | Не являемся сотрудниками Google, Яндекса и NASA
Кто я | HSH | Контакты и регион