Назад | Перейти на главную страницу

Правила .htaccess для остановки DDoS POST-флуда

Мы подвергаемся распределенной атаке отказа в обслуживании со стороны трафика, которая выглядит следующим образом:

49.146.161.175 - - [11/Jul/2014:00:43:42 -0400] "POST / HTTP/1.1" 500 557 "-" "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1)"
117.221.185.108 - - [11/Jul/2014:00:43:42 -0400] "POST / HTTP/1.1" 500 557 "-" "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1)"
58.186.16.180 - - [11/Jul/2014:00:43:42 -0400] "POST / HTTP/1.1" 500 557 "-" "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1)"

Мне удалось уменьшить влияние, добавив это в файл .htaccess корневой папки.

<Limit POST>
Deny from all
</Limit>

Проблема, конечно же, в том, что предотвращает использование wp-login.php или чего-либо в / wp-admin /

Мне интересно, есть ли способ просто отклонить запросы POST к / или изменить указанное выше таким образом, чтобы разрешить использование wp-login и чего-либо в / wp-admin /

Спасибо за любой совет, который вы можете дать.

Apache действительно очень плохо фильтрует любые запросы из-за своего дизайна (к тому времени, когда он узнает о запросе и отбрасывает его или отвечает с ошибкой, он уже использовал много ресурсов и прочего). Что я сделал и добился большого успеха, так это:

  1. Установите mod_rpaf или аналогичный в Apache и настройте его на прием прокси от localhost.

  2. Установите haproxy на какой-нибудь порт, например 8080, настройте его в режиме HTTP на прокси для Apache.

  3. Поместите ACL для отбрасывания POST-запросов на URL-адрес или что-то еще, что вам нужно, ACL - довольно мощный инструмент в haproxy.

  4. Настройте haproxy для помещения IP-адреса клиента в заголовок и настройте mod_rpaf, чтобы получить его оттуда.

  5. Добавьте правило NAT для перенаправления трафика с 80 на порт haproxy.

С haproxy 1.5 вы можете добиться того же и для сайтов SSL. Я действительно считаю, что haproxy действительно эффективен для такой фильтрации на уровне 7. Вы, вероятно, тоже можете использовать nginx, но он немного медленнее, однако у вас есть преимущество в том, что вы можете использовать для него такие инструменты, как naxsi, и получить настоящий брандмауэр веб-приложения.