Изначально я разместил это на webmasters.stackexchange.com, но мне сказали, что здесь меня встретят лучше.
В течение последних нескольких дней я страдал от того, что, похоже, было (предположительно непреднамеренной) атакой DDOS. Я получаю так много запросов от агента, который идентифицируется как «Mozilla / 4.0 (совместимый; ICS)», что apache съедает всю доступную память.
Следовательно, я хотел бы заблокировать все запросы, сопровождаемые этим пользовательским агентом, поэтому я попытался сделать это в httpd.conf:
SetEnvIfNoCase User-Agent "Mozilla/4.0 (compatible; ICS)" bad_user
Deny from env=bad_user
Но когда я перезапускаю apache, он жалуется на использование deny
Вот. Без необходимости оборачивать его location
или directory
block, что означало бы, что мне пришлось бы добавить новый блок для каждого сайта, есть ли способ запретить доступ ко всему серверу?
ОБНОВЛЕНИЕ: ошибка, которую я получаю
- Перезапуск веб-сервера apache2
Синтаксическая ошибка в строке 4 /etc/apache2/httpd.conf: запретить здесь запрещено [сбой]
Сейчас это похоже на старый вопрос, но я хотел сделать то же самое и нашел ответ на нервы выше. Не совсем то как есть - мне кажется, так и должно быть <Location "/">
, а SetEnvIf
требуется регулярное выражение, поэтому круглые скобки нужно заключать в кавычки.
Это помогло мне применить контроль доступа ко всем vhosts:
SetEnvIfNoCase User-Agent "^Mozilla/4.0 \(compatible; Synapse\)" bad_ua
<Location "/">
Deny from env=bad_ua
</Location>
Просто включите это перед определениями vhost.
mod_rewrite можно настроить на уровне сервера в соответствии с документами:
RewriteCond %{HTTP_USER_AGENT} "Mozilla/4\.0 \(compatible; ICS\)" [nocase]
RewriteRule ^.*$ - [forbidden,last]
Не забудьте избежать регулярного выражения в RewriteCond
Если синтаксис в строках SetEnv верен, вы сможете добавить это в conf следующим образом:
<Location *>
SetEnvIfNoCase User-Agent "Mozilla/4.0 (compatible; ICS)" bad_user
Deny from env=bad_user
</Location>
Должно позволить, чтобы это работало на всех виртуальных хостах - только что протестировано на 2.2.24, сработало отлично.