Боты бьют 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 проблемы:
Вы должны сделать некоторые ограничения скорости, а не просто блокировать все.
Использование строкового модуля в брандмауэре не очень разумно из-за соображений производительности.
Ваш лучший выбор - поставить HAProxy перед Apache. Вы можете взглянуть на мой ответ в этом посте для получения более подробной информации о том, как это сделать и почему.
Мой личный опыт в подобных вещах состоит в том, чтобы избежать "исправления" проблемы. Не блокируйте одного бота, нажимающего одну ссылку. Другие боты просто зайдут и нажмут другие ссылки. Вам нужно настроить какую-нибудь защиту от перебора, чтобы блокировать повторяющиеся атаки на ваш сервер.
ModSecurity отлично подходит для этого и является встроенным Apache, если вы используете Apache в качестве веб-сервера.
Если вы не упомянули WordPress. Wordpress имеет несколько плагинов для блокировки такого рода повторяющихся действий. WordFence - это хороший инструмент, который мы успешно использовали вместе с нашими клиентами.
В целом, я рекомендую вам исправить основную причину, а не просто попытаться исправить единственную копию.
Мое предложение касается проблемы, попробуйте заблокировать доступ, добавив этот код в
.htaccess
<Files "xmlrpc.php">
Order Deny,Allow
Deny from all
</Files>