Первоначально я писал об этом на 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
, что означало бы, что я должен добавить новый блок для каждого сайта, есть ли способ запретить доступ ко всему серверу?
ОБНОВЛЕНИЕ: ошибка, которую я получаю
- Перезапуск веб-сервера apache2
Синтаксическая ошибка в строке 4 файла /etc/apache2/httpd.conf: запрет запрещен здесь [сбой]
источник
<Location>
поскольку он переопределяет любые другие ограничения авторизации<Directory>
, если только вы не добавитеAuthMerging And
. См. Предупреждение о безопасностиRequire
в документации apache: httpd.apache.org/docs/2.4/mod/mod_authz_core.html#requiremod_rewrite можно настроить на уровне сервера в соответствии с документацией:
Не забудьте убежать от регулярного выражения в
RewriteCond
источник
<!-- -->
для редактированияПри условии, что синтаксис в строках SetEnv правильный, вы должны иметь возможность добавить это в conf следующим образом:
Должен позволить этому работать на всех виртуальных хостах - только что протестированный на 2.2.24, работал как прелесть.
источник