Поиск по сайту:

Как защитить WordPress от атак XML-RPC в Ubuntu 14.04


Введение

WordPress — это популярная и мощная платформа CMS (система управления контентом). Его популярность может привлечь нежелательное внимание в виде вредоносного трафика, специально нацеленного на сайт WordPress.

Во многих случаях сервер, который не был защищен или оптимизирован, мог столкнуться с проблемами или ошибками после получения небольшого объема вредоносного трафика. Эти атаки приводят к истощению системных ресурсов, в результате чего такие службы, как MySQL, перестают отвечать на запросы. Наиболее распространенным визуальным признаком этого будет сообщение Ошибка подключения к базе данных. Веб-консоль также может отображать ошибки Out of Memory.

Это руководство покажет вам, как защитить WordPress от атак XML-RPC в системе Ubuntu 14.04.

Предпосылки

Для этого руководства вам потребуется следующее:

  • Дроплет Ubuntu 14.04
  • Пользователь без полномочий root с правами sudo (начальная настройка сервера с Ubuntu 14.04 объясняет, как это настроить).

Мы предполагаем, что у вас уже установлен WordPress на дроплете Ubuntu 14.04. Есть много способов установить WordPress, но вот два наиболее распространенных:

  • Как установить Wordpress в Ubuntu 14.04
  • Установка WordPress в один клик на Ubuntu 14.04 с помощью DigitalOcean

Все команды в этом руководстве должны выполняться от имени пользователя без полномочий root. Если для команды требуется root-доступ, ей будет предшествовать sudo. Начальная настройка сервера с Ubuntu 14.04 объясняет, как добавить пользователей и предоставить им доступ sudo.

Что такое XML-RPC?

WordPress использует функции. Популярный плагин JetPack и мобильное приложение WordPress — два отличных примера того, как WordPress использует XML-RPC. Эту же функциональность также можно использовать для отправки тысяч запросов в WordPress за короткий промежуток времени. Этот сценарий фактически представляет собой атаку грубой силы.

Распознавание атаки XML-RPC

Два основных способа распознать XML-RPC-атаку:

  1. Отображение сообщения \Ошибка подключения к базе данных, когда ваш сайт WordPress не работает
  2. Обнаружение множества записей, похожих на POST /xmlrpc.php HTTP/1.0, в журналах вашего веб-сервера

Расположение файлов журнала вашего веб-сервера зависит от того, какой дистрибутив Linux вы используете и какой веб-сервер вы используете.

Для Apache в Ubuntu 14.04 используйте эту команду для поиска атак XML-RPC:

  1. grep xmlrpc /var/log/apache2/access.log

Для Nginx в Ubuntu 14.04 используйте эту команду для поиска атак XML-RPC:

  1. grep xmlrpc /var/log/nginx/access.log

Ваш сайт WordPress подвергается атакам XML-RPC, если приведенные выше команды приводят к большому количеству строк вывода, как в этом примере:

111.222.333.444:80 555.666.777.888 - - [01/Jan/2016:16:33:50 -0500] "POST /xmlrpc.php HTTP/1.0" 200 674 "-" "Mozilla/4.0 (compatible: MSIE 7.0; Windows NT 6.0)"

Оставшаяся часть этой статьи посвящена трем различным методам предотвращения дальнейших атак XML-RPC.

Способ 1: установка плагина Jetpack

В идеале вы хотите предотвратить атаки XML-RPC до того, как они произойдут. Подключаемый модуль Jetpack для WordPress может блокировать запросы метода группового вызова XML-RPC с помощью функции Защитить. Вы по-прежнему будете видеть записи XML-RPC в журналах вашего веб-сервера с включенным Jetpack. Однако Jetpack снизит нагрузку на базу данных от этих вредоносных попыток входа в систему почти на 90%.

Примечание. Для активации плагина Jetpack требуется учетная запись WordPress.com.

Jetpack легко устанавливается из бэкенда WordPress. Сначала войдите в панель управления WordPress и выберите «Плагины» -> «Добавить новый» в меню слева.

Jetpack должен быть автоматически указан в разделе рекомендуемых плагинов на странице «Добавить новый». Если вы его не видите, вы можете найти Jetpack с помощью окна поиска.

Нажмите кнопку «Установить сейчас», чтобы загрузить, распаковать и установить Jetpack. После успешной установки на странице появится ссылка «Активировать плагин». Нажмите на ссылку «Активировать плагин». Вы вернетесь на страницу плагинов, а вверху появится зеленый заголовок, указывающий, что ваш реактивный ранец почти готов!. Нажмите кнопку «Подключиться к Wordpress.com», чтобы завершить активацию Jetpack.

Теперь войдите в систему с учетной записью WordPress.com. Вы также можете создать учетную запись, если это необходимо.

После того, как вы войдете в свою учетную запись WordPress.com, Jetpack будет активирован. Вам будет предложено запустить Jump Start, который автоматически активирует общие функции Jetpack. Щелкните ссылку Пропустить на этом шаге.

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

Введите адреса IPv4 или IPv6, которые вы хотите добавить в белый список, и нажмите кнопку Сохранить, чтобы обновить белый список Защитить.

Способ 2: включение block-xmlrpc с помощью a2enconf

Функция a2enconf block-xmlrpc была добавлена в изображение DigitalOcean WordPress для быстрого запуска в декабре 2015 года. С ее помощью вы можете блокировать все запросы XML-RPC на уровне веб-сервера.

Примечание. Этот метод доступен только для установки WordPress в один клик DigitalOcean, созданной в декабре 2015 года и позже.

Чтобы включить сценарий блока XML-RPC, выполните следующую команду в своей капле с установленным изображением DO WordPress, которое можно запустить одним щелчком:

  1. sudo a2enconf block-xmlrpc

Перезапустите Apache, чтобы изменения вступили в силу:

  1. sudo service apache2 restart

Предупреждение: этот метод остановит работу всего, что использует XML-RPC, включая Jetpack или мобильное приложение WordPress.

Способ 3: ручная блокировка всего трафика XML-RPC

Кроме того, блок XML-RPC можно вручную применить к вашей конфигурации Apache или Nginx.

Для Apache в Ubuntu 14.04 отредактируйте файл конфигурации с помощью следующей команды:

  1. sudo nano /etc/apache2/sites-available/000-default.conf

Добавьте выделенные ниже строки между тегами .

<VirtualHost>
…    
    <files xmlrpc.php>
      order allow,deny
      deny from all
    </files>
</VirtualHost>

Сохраните и закройте этот файл, когда закончите.

Перезапустите веб-сервер, чтобы изменения вступили в силу:

  1. sudo service apache2 restart

Для Nginx в Ubuntu 14.04 отредактируйте файл конфигурации с помощью следующей команды (измените путь, чтобы отразить ваш файл конфигурации):

  1. sudo nano /etc/nginx/sites-available/example.com

Добавьте выделенные ниже строки в блок сервера:

server {
…
 location /xmlrpc.php {
      deny all;
    }
}

Сохраните и закройте этот файл, когда закончите.

Перезапустите веб-сервер, чтобы изменения вступили в силу:

  1. sudo service nginx restart

Предупреждение: этот метод остановит работу всего, что использует XML-RPC, включая Jetpack или мобильное приложение WordPress.

Проверка шагов по смягчению атак

Какой бы метод вы ни выбрали для предотвращения атак, вы должны убедиться, что он работает.

Если вы включите функцию Jetpack Protect, вы увидите, что запросы XML-RPC продолжаются в журналах вашего веб-сервера. Частота должна быть ниже, и Jetpack уменьшит нагрузку, которую атака может оказать на процесс сервера базы данных. Jetpack также будет постепенно блокировать атакующие IP-адреса.

Если вы вручную заблокируете весь трафик XML-RPC, ваши журналы по-прежнему будут показывать попытки, но результирующий код ошибки будет отличаться от 200. Например, записи в файле Apache access.log могут выглядеть так:

111.222.333.444:80 555.666.777.888 - - [01/Jan/2016:16:33:50 -0500] "POST /xmlrpc.php HTTP/1.0" 500 674 "-" "Mozilla/4.0 (compatible: MSIE 7.0; Windows NT 6.0)"

Заключение

Предприняв шаги по уменьшению вредоносного трафика XML-RPC, ваш сайт WordPress будет потреблять меньше системных ресурсов. Истощение системных ресурсов — наиболее распространенная причина, по которой сайт WordPress отключается на VPS. Методы предотвращения XML-RPC-атак, упомянутые в этой статье, гарантируют, что ваш сайт WordPress останется в сети.

Чтобы узнать больше об атаках грубой силы на WordPress XML-RPC, прочитайте Sucuri.net — Атаки с усилением грубой силы против WordPress XMLRPC.