уже несколько дней кто-то отправляет тысячи запросов на веб-сайт WordPress, размещенный на моем веб-сервере.
Общая строка журнала для этого запроса:
60.173.10.250 - - [23/Nov/2013:18:24:46 +0100] "GET /archivio/mgilbert/ HTTP/1.0" 200 24758 "http://www.**********.it/archivio/mgilbert/#comment-9768++++++++++++Result:+chosen+nickname+%22Tiedimmox%22;+nofollow+is+found;+success+%28from+first+page%29;+BB-code+not+working;" "Mozilla/5.0 (Windows NT 5.1; rv:15.0) Gecko/20100101 Firefox/15.0.1
В результате этого запроса владелец веб-сайта получает массу писем. Запрос поступает с разных IP-адресов, поэтому я не могу заблокировать их, используя IP-адрес в качестве фильтра.
Есть ли способ заблокировать такие запросы?
Сайт атакован ботом, скриптом, вредоносным ПО или вообще чем-то плохим. IP-адреса всегда будут меняться, потому что именно так работают эти системы. Один родительский главный сервер контролирует множество зараженных систем по всему миру. И использует эти зараженные системы для распространения все большего и большего количества вредоносных программ.
Поскольку вы говорите, что это сайт WordPress, скорее всего, в установленной версии WordPress есть уязвимость. Если возможно, его следует обновить.
Другой вариант - установить ModSecurity. Или, если он есть в вашей службе хостинга, попросите их активировать. ModSecurity - отличный инструмент, который действует как межсетевой экран на уровне веб-сервера между вашим веб-сайтом, размещенным на Apache2, и атаками. Но, тем не менее, настройка может быть сложной задачей. А иногда ложные срабатывания могут помешать нормальной работе вашего сайта.
Еще один хороший такт - разместить .htaccess/.htpasswd
уровень защиты паролем на wp-admin.php
. Подавляющее большинство ботов падают замертво, как только они нажимают этот запрос пароля, и ваш сервер в безопасности. Это может быть неудобно для любого, кто управляет администратором сайта WordPress, поскольку теперь им нужно запомнить 2 набора паролей, но это очень эффективный способ блокирования атак.
если вы используете nginx, вы можете сопоставить любой заголовок и вернуть 403 (запрещено)
так, например (с головы до ног, поэтому проверьте синтаксис)
если $ user_agent = ~ / Gecko / 20100101 Firefox / 15.0.1 / {return 403; }
на apache вы можете загрузить mod_security, но он известен множеством ложных срабатываний, особенно если у вас много vhosts.
если ваш ящик подключен к Интернету с общедоступным IP-адресом, другой вариант - ограничить входящие запросы с помощью iptables,
iptables -A INPUT -p tcp --syn -m limit --limit 1 / s --limit-burst 3 -j RETURN
РЕДАКТИРОВАТЬ: в качестве краткосрочного решения вы могли бы
расположение = ~ / archivio / mgilbert {return 403; }