Apache / Linux Webserver динамически блокирует входящие запросы POST

Backstory : Недавно кто-то скомпрометировал установку Xenforo, связанную с моим сервером, и ввел бесконечно циклический скрипт php mail (). Он отправил тысячи электронных писем из домена во внешний мир, в результате чего мой домен занесен в черный список со всех основных интернет-провайдеров электронной почты, прежде чем я даже заметил, что это происходит. Я нашел файл, который каким-то образом был введен в каталог кэша и skin_cache форума, и удалил их и настроил постоянный переадресацию (используя перенаправление заголовка php) на сайт для сбора нежелательной почты.

Текущая проблема : теперь я вижу устойчивый и бесконечный поток запросов POST для вышеупомянутых сценариев спама. IP-адреса различаются каждый раз и, похоже, никогда не прекращают приходить. Это происходит уже более двух недель. Настолько, что мой apache максимизирует настройку MaxClients и сталкивается с проблемами памяти и начинает закрывать другие процессы для компенсации.

Это то, что появляется в журнале :

190.40.7.126 - - [28/Mar/2013:18:58:30 -0500] "POST /forum/cache/sslFDoB.php HTTP/1.1" 200 3889 "-" "Mozilla/5.0" 190.104.19.189 - - [28/Mar/2013:18:58:39 -0500] "POST /forum/cache/sslFDoB.php HTTP/1.1" 200 3889 "-" "Mozilla/5.0" 78.251.159.173 - - [28/Mar/2013:18:58:57 -0500] "POST /forum/cache/sslFDoB.php HTTP/1.1" 200 3889 "-" "Mozilla/5.0" 219.78.213.10 - - [28/Mar/2013:18:59:09 -0500] "POST /forum/cache/sslFDoB.php HTTP/1.1" 200 3889 "-" "Mozilla/5.0" 69.123.20.137 - - [28/Mar/2013:18:59:09 -0500] "POST /forum/cache/sslFDoB.php HTTP/1.1" 200 3889 "-" "Mozilla/5.0" 2.234.181.7 - - [28/Mar/2013:18:59:37 -0500] "POST /forum/cache/sslFDoB.php HTTP/1.1" 200 3889 "-" "Mozilla/5.0" 187.207.223.67 - - [28/Mar/2013:18:59:44 -0500] "POST /forum/cache/sslFDoB.php HTTP/1.1" 200 3889 "-" "Mozilla/5.0" 24.242.122.42 - - [28/Mar/2013:19:01:56 -0500] "POST /forum/cache/sslFDoB.php HTTP/1.1" 200 3889 "-" "Mozilla/5.0" 213.49.254.102 - - [28/Mar/2013:19:02:32 -0500] "POST /forum/cache/sslFDoB.php HTTP/1.1" 200 3889 "-" "Mozilla/5.0" 82.247.48.152 - - [28/Mar/2013:19:02:38 -0500] "POST /forum/cache/sslFDoB.php HTTP/1.1" 200 3889 "-" "Mozilla/5.0" 41.135.146.136 - - [28/Mar/2013:19:02:43 -0500] "POST /forum/cache/sslFDoB.php HTTP/1.1" 200 3889 "-" "Mozilla/5.0" 91.187.93.36 - - [28/Mar/2013:19:03:04 -0500] "POST /forum/cache/sslFDoB.php HTTP/1.1" 200 3889 "-" "Mozilla/5.0" 194.90.37.132 - - [28/Mar/2013:19:03:40 -0500] "POST /forum/cache/sslFDoB.php HTTP/1.1" 200 3889 "-" "Mozilla/5.0" 

Мне нужны предложения по наилучшему способу решения этой проблемы. Простое перенаправление или 404-е из них не остановят использование ресурсов на сервере. Существует так много разных IP-адресов с такой постоянной скоростью, что трудно увидеть, есть ли какие-либо дублирующие IP-адреса вообще. Все они кажутся на случайных диапазонах и различного происхождения. Я честно не уверен, что это поддельные запросы или искренне скомпрометированные клиенты, пострадавшие от рассылок xss или какого-либо вируса.

Было бы разумно придумать способ запретить любой IP-адрес, который запрашивает этот файл динамически, чтобы они не могли повторить попытку? Мне нужны предложения и помощь в этом, пожалуйста.

Related of "Apache / Linux Webserver динамически блокирует входящие запросы POST"

Вероятно, URL-адрес вредоносного скрипта был распространен в бот-сети, которая пытается использовать ваш веб-сервер в качестве пляжной головы. Запросы в конечном итоге исчезнут, так как ботнет не может продолжать запрашивать скрипт, который не работает.

Быстрое и простое исправление: добавьте блок <Location> в конфигурацию Apache или правило перезаписи, которое будет игнорировать эти запросы.

Наложенный, беспорядочный метод: используйте ограничение скорости на основе iptables. iptables -A INPUT -p tcp --dport 80 -m limit --limit 60/min -j ACCEPT со следующим правилом отклонения может помочь, хотя он также может блокировать законный трафик, включая индексы поисковых машин и законных ботов.

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

Независимо от того, какой вариант вы принимаете, я очень сомневаюсь, что 404 ошибки вредят использованию ресурсов на вашем сервере. Вам нужно учитывать другие факторы:

  • Ваши PHP-скрипты могут вызывать некоторые существенные проблемы с производительностью / эффективностью.
  • Ваша конфигурация Apache не может быть оптимизирована для обработки больших объемов трафика.
  • Ваш сервер скомпрометирован, и теперь у вас проблемы с большими проблемами.

Вы также можете рассмотреть возможность размещения Apache позади Nginx в качестве back-proxy-сервера. В зависимости от причины использование кеша HTTP перед сервером Apache (например, Varnish) может снизить нагрузку на ваш сервер на относительно постоянный коэффициент, а не на другой.

TL; DR : Это зависит. Вероятно, ваш сервер был неправильно настроен или скомпрометирован.