Правила.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 /
Спасибо за любой совет, который вы можете дать.
1 ответ
Apache действительно очень плохо фильтрует любые запросы из-за своего дизайна (к тому времени, когда он может узнать о запросе и отбросить его или ответить с ошибкой, он уже использовал много ресурсов и прочего). То, что я сделал и имел большой успех, было так:
Установите mod_rpaf или аналогичный в Apache и установите его для принятия прокси от localhost.
Установите haproxy на некоторый порт, например 8080, настройте его в режиме HTTP для прокси на Apache.
Поместите ACL для отбрасывания POST-запросов на URL-адрес или что-то еще, что вам нужно отбросить, acls довольно сильны в haproxy
Установите haproxy, чтобы поместить IP-адрес клиента в заголовок, и настройте mod_rpaf, чтобы получить его оттуда.
Добавьте правило NAT для перенаправления трафика с 80 на порт haproxy.
С haproxy 1.5 вы можете добиться того же и для сайтов SSL. Я действительно считаю haproxy действительно мощным для фильтрации на уровне 7, как это. Возможно, вы могли бы также использовать nginx, но он немного медленнее, однако у вас есть преимущество в том, что вы можете использовать такие инструменты, как naxsi, и получить настоящий межсетевой экран веб-приложения.