22.16. Блокировка нарушителей
Проблема
На ваш сайт постоянно заходят боты, парсеры и другие нежелательные посетители, которые создают ненужный трафик и забивают канал. Как заблокировать этим нарушителям доступ к ресурсу?
Решение
Для блокировки IP-адресов, хостов или даже целых доменов используйте средства управления доступом, доступные в конфигурации Apache (файл httpd.conf
). Ниже приведён пример конфигурации, которая позволяет заблокировать доступ для определённых IP-адресов или доменов:
# Разрешение доступа по умолчанию и блокировка для конкретных IP и доменов
Order allow,deny
Allow from all
Deny from 12.34.56.78 # Блокировка конкретного IP-адреса
Deny from *.booger.baddomain.net # Блокировка домена нарушителя
Deny from search.foo.com # Блокировка поискового бота foo.com
Директива Deny
в сочетании с Order allow,deny
даёт возможность заблокировать доступ к вашему сайту для указанных IP-адресов и доменов, сохраняя доступ для остальных пользователей.
Комментарий
При анализе журналов сервера вы можете обнаружить, что большое количество трафика исходит от автоматических ботов или пользователей, скачивающих весь контент с сайта с помощью утилит вроде wget
. Многие боты, даже поисковые, могут игнорировать ваш файл robots.txt
, не следуя установленным правилам индексации. В таких случаях блокировка конкретных ботов или IP-адресов через httpd.conf
является более надёжным решением.
Чтобы упростить анализ журналов и выявление подозрительной активности, можно использовать утилиты вроде Webalizer (см. Раздел 22.22), которая предоставляет визуализацию посещений сайта, позволяя быстро находить и идентифицировать нарушителей.
Дополнительные советы по блокировке нарушителей
- Используйте fail2ban: Это современный инструмент для автоматической блокировки IP-адресов на основе анализов логов. В связке с Apache fail2ban может автоматически блокировать IP-адреса, вызывающие подозрение.
- Настройте защиту на уровне сервера: Например, используйте брандмауэры (iptables, firewalld) для более тонкой фильтрации трафика.
- Ограничьте скорость запросов: Для предотвращения DDoS-атак можно ограничить количество запросов от одного IP-адреса в единицу времени, например, используя модули вроде
mod_evasive
для Apache. - Рассмотрите капчу: Если доступ к некоторым ресурсам открыт для всех пользователей, добавьте капчу, чтобы остановить автоматизированных ботов, игнорирующих robots.txt.
Помните
Блокировка IP-адресов в httpd.conf
подходит для контроля доступа на уровне веб-сервера. Однако для более серьёзных угроз и крупных сетей рекомендуется использовать дополнительные меры безопасности, такие как брандмауэры и настройки на уровне операционной системы.
См. также