Как остановить атаки xmlrpc, не отключая компонент, чтобы JetPack работал в WordPress?

Вопрос или проблема

Я управляю веб-сайтом на WordPress, используя виртуальную машину в облаке, и в последнее время заметил множество нежелательных запросов к компоненту xmlrpc.php, которые замедляют сайт и вызывают высокую нагрузку на ЦП. Если бы это зависело от меня, я бы полностью отключил этот компонент, но сайт использует плагин JetPack, который зависит от xmlrpc.

Так что, мой вопрос: как разрешить JetPack доступ к xmlrpc, одновременно блокируя всех остальных, не отключая xmlrpc на сервере?

На сайте включена защита bruce с помощью JetPack, и fail2ban включен и работает, но, похоже, не решает проблему.

Во время исследований я нашел такое обходное решение: https://www.namehero.com/startup/how-to-safely-disable-xmlrpc-in-wordpress-while-keeping-jetpack/, но после применения этих настроек в htaccess нежелательные запросы немедленно прекращаются, но JetPack также блокируется. Таким образом, это, похоже, не работает так, как ожидалось, или я делаю это неправильно.

<Files xmlrpc.php>
Order allow,deny
Allow from 192.0.64.1/192.0.127.254
Deny from all
Satisfy All
ErrorDocument 403 http://127.0.0.1/
</Files>

Обновление: Вот IP-адреса, которые WordPress говорит, что необходимы для JetPack:

Так что вопрос также в том, как добавить эти IP-адреса в блок htaccess выше?

122.248.245.244/32
54.217.201.243/32
54.232.116.4/32
192.0.80.0/20
192.0.96.0/20
192.0.112.0/20
195.234.108.0/22
192.0.96.202/32
192.0.98.138/32
192.0.102.71/32
192.0.102.95/32

С помощью белого списка обычно сначала запрещают всем, а затем разрешают. Затем просто добавляйте записи Allow по мере необходимости. Попробуйте так:

<Files xmlrpc.php>
Order Deny,Allow
Deny from all
Allow from 122.248.245.244/32
Allow from 54.217.201.243/32
Allow from 54.232.116.4/32
Allow from 192.0.80.0/20
Allow from 192.0.96.0/20
Allow from 192.0.112.0/20
Allow from 195.234.108.0/22
Satisfy All
ErrorDocument 403 http://127.0.0.1/
</Files>

Примечание: Последние несколько IP-адресов из списка в вашем вопросе охвачены предшествующим CIDR диапазоном, 192.0.96.0/20, поэтому я их пропустил.

Вы можете получить актуальные данные о конкретных IP-адресах, которые необходимо добавить в белый список для различных сервисов Jetpack здесь: https://jetpack.com/support/hosting-faq/.


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

Также стоит отметить, что Automattic предлагает бесплатную поддержку для всех пользователей Jetpack. (Полное раскрытие: я там работаю. 🙂)

Обратите внимание, что IP-адреса Jetpack могут быть изменены, поэтому у меня есть скрипт, который создает соответствующий фрагмент, который я использую в Include операторе в конфигурации Apache:

#!/bin/bash

set -e

INC="/path/to/file/wp-xmlrpc.conf"
ips="/tmp/jp-ips.txt"

# Если это приводит к 404, то ничего не делать
curl --fail -s https://jetpack.com/ips-v4.txt -o $ips

cp $INC $INC.bak

update()
{
   cat <<-EOF
   # АВТОМАТИЧЕСКИ ОБНОВЛЕНО ИЗ update.sh
   # ЛЮБЫЕ ИЗМЕНЕНИЯ В ЭТОМ ФАЙЛЕ БУДУТ УТЕРЯНЫ

   <Files xmlrpc.php>
        Order Deny,Allow
        Deny from all
        # IP-адреса Jetpack
   EOF

   cat $ips | while read line; do echo "   Allow from $line" ; done

   cat <<-EOF
        Satisfy All
        ErrorDocument 403 "XML-RPC отключен." 
   </Files>
   EOF
}

update > $INC

rm -f $ips

Это выполняется раз в месяц по расписанию cron.

Ответ или решение

Чтобы остановить атаки на xmlrpc.php без отключения компонента, позволяющего JetPack работать на вашем сайте WordPress, вам необходимо настроить файл .htaccess для фильтрации IP-адресов и включения только тех, которые нужны для JetPack. Ниже приведены подробные шаги, как это сделать:

Шаг 1: Находите и редактируете .htaccess

  1. Подключитесь к вашему серверу через FTP или через панель управления хостингом.
  2. Найдите файл .htaccess в корневом каталоге вашего сайта WordPress. Если файла нет, вы можете создать его.
  3. Сделайте резервную копию .htaccess перед внесением изменений.

Шаг 2: Настройка фильтрации IP-адресов

Добавьте следующий код в ваш файл .htaccess:

<Files xmlrpc.php>
    Order Deny,Allow
    Deny from all
    Allow from 122.248.245.244/32
    Allow from 54.217.201.243/32
    Allow from 54.232.116.4/32
    Allow from 192.0.80.0/20
    Allow from 192.0.96.0/20
    Allow from 192.0.112.0/20
    Allow from 195.234.108.0/22
    # Добавьте другие IP-адреса, если это необходимо
    Satisfy All
    ErrorDocument 403 "XML-RPC отключен."
</Files>

Шаг 3: Обновление IP-адресов JetPack

Поскольку IP-адреса JetPack могут изменяться, рекомендуем настроить автоматическое обновление. Вы можете использовать следующий сценарий Bash для автоматического обновления файла .htaccess с актуальными IP-адресами JetPack:

#!/bin/bash

set -e

INC="/path/to/file/wp-xmlrpc.conf"
ips="/tmp/jp-ips.txt"

# Получаем список актуальных IP-адресов
curl --fail -s https://jetpack.com/ips-v4.txt -o $ips

# Создаем резервную копию файла
cp $INC $INC.bak

update() {
    echo "<Files xmlrpc.php>"
    echo "    Order Deny,Allow"
    echo "    Deny from all"

    while read -r line; do
        echo "    Allow from $line"
    done < $ips

    echo "    Satisfy All"
    echo "    ErrorDocument 403 \"XML-RPC отключен.\""
    echo "</Files>"
}

update > $INC

# Удаляем временный файл
rm -f $ips

Настройте этот скрипт на выполнение раз в месяц через cron.

Шаг 4: Проверка и мониторинг

После внесения изменений убедитесь, что JetPack продолжает работать, и у вас нет доступа к xmlrpc.php из нежелательных IP. Рекомендуется регулярно проверять ваши журналы сервера и настройки fail2ban, чтобы убедиться, что все работает корректно и нет подозрительной активности.

Дополнительные меры

  1. Настройка Fail2Ban: Проверьте и усилите настройки Fail2Ban, чтобы блокировать IP-адреса, которые генерируют слишком много запросов к xmlrpc.php.
  2. Использование плагинов безопасности: Рассмотрите возможность установки плагина для защиты от брутфорс-атак, например, Wordfence или Sucuri.

Эти шаги помогут вам продолжать использовать JetPack, защищая ваш сайт от ненужных атак на xmlrpc.php.

Оцените материал
Добавить комментарий

Капча загружается...