Боты бьют xmlrpc.php и вызывают высокую нагрузку на сервер

В последнее время у нас много обращений к wordpress xmlrpc.php, что в итоге вызывает высокую нагрузку на серверы.

Мы попытались переписать все xmlrpc.php до 127.0.0.1, но это не сильно помогло. Так как apache все еще обрабатывал соединения. В конце концов мы заблокировали этот вид соединений, используя

iptables -I INPUT 1 -p tcp --dport 80 -m строка - строка "xmlrpc.php" --algo bm -j DROP

К сожалению, все это вызывает проблемы с плагинами, использующими xmlrpc.php, такими как jetpack и т. Д.

Кто-нибудь имел опыт работы с такого рода проблемами и есть предложения, как с этим справиться?

Изменить: Можно ли добавить дополнительное правило, которое позволит доступ из диапазона WordPress IP? Как бы это правило выглядело, так как правило блокировки использует строку?

3 ответа

У описанного вами правила брандмауэра есть 2 проблемы:

  1. Вы должны сделать некоторые ограничения скорости, а не просто блокировать все.

  2. Использование строкового модуля в брандмауэре не очень разумно из-за соображений производительности.

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

Мой личный опыт в подобных вещах состоит в том, чтобы избежать "исправления" проблемы. Не блокируйте одного бота, нажимающего одну ссылку. Другие боты просто зайдут и нажмут другие ссылки. Вам нужно настроить какую-нибудь защиту от перебора, чтобы блокировать повторяющиеся атаки на ваш сервер.

ModSecurity отлично подходит для этого и является встроенным Apache, если вы используете Apache в качестве веб-сервера.

Если вы не упомянули WordPress. Wordpress имеет несколько плагинов для блокировки такого рода повторяющихся действий. WordFence - это хороший инструмент, который мы успешно использовали вместе с нашими клиентами.

В целом, я рекомендую вам исправить основную причину, а не просто попытаться исправить единственную копию.

Мое предложение касается проблемы, попробуйте заблокировать доступ, добавив этот код в

.htaccess
<Files "xmlrpc.php">
Order Deny,Allow
Deny from all
</Files>
Другие вопросы по тегам