В последнее время у нас много обращений к wordpress xmlrpc.php, что в конечном итоге вызывает высокую нагрузку на серверы.
Мы попытались переписать весь xmlrpc.php на 127.0.0.1, но это не помогло. Поскольку apache все еще обрабатывал соединения. В конце концов мы заблокировали такие соединения, используя
iptables -I INPUT 1 -p tcp --dport 80 -m string --string "xmlrpc.php" --algo bm -j DROP
К сожалению, все это вызывает проблемы с плагинами, использующими xmlrpc.php, такими как jetpack и т. Д.
У кого-нибудь был опыт работы с такого рода проблемами и есть предложения, как с этим справиться?
Изменить: можно ли добавить дополнительное правило, которое разрешило бы доступ из диапазона IP-адресов WordPress? Как это правило будет выглядеть, если правило блокировки использует строку?
У описанного вами правила брандмауэра есть 2 проблемы:
Вы должны установить некоторые ограничения скорости, а не просто все блокировать.
Использование строкового модуля в брандмауэре не очень разумно по соображениям производительности.
Лучше всего поставить HAProxy перед Apache. Вы можете посмотреть мой ответ в эта почта для получения более подробной информации о том, как это сделать и почему.
Мой личный опыт в подобных вещах позволяет избежать «исправления» проблемы. Не блокируйте одного бота, переходящего по одной ссылке. Другие боты просто войдут и перейдут по другим ссылкам. Вам необходимо настроить какую-то защиту от перебора, которая будет блокировать повторяющиеся обращения к вашему серверу.
ModSecurity отлично подходит для этого и является встроенным apache, если вы используете apache в качестве веб-сервера.
Если вы не упомянули wordpress. Wordpress имеет множественный плагины для блокировки такого рода повторяющихся действий. WordFence - это хороший инструмент, который мы успешно используем с нашими клиентами.
В целом, я рекомендую вам устранить основную причину, а не пытаться исправить единственный случай.
Мое предложение связано с проблемой, попробуйте заблокировать доступ, добавив этот код в
.htaccess
<Files "xmlrpc.php">
Order Deny,Allow
Deny from all
</Files>