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

Вступление

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

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

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

Предпосылки

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

  • Ubuntu 14.04 Droplet

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

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

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

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

WordPress использует XML-RPC для удаленного выполнения functions. Популярный плагин 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:

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

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

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

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

access.log

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 multicall с помощью функции Protect. Вы по-прежнему будете видеть записи XML-RPC в журналах веб-сервера с включенным Jetpack. Тем не менее, Jetpack снизит нагрузку на базу данных из-за этих попыток злонамеренного входа почти на 90%.

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

изображение: https: //assets.digitalocean.com/articles/wordpress_xmlrpc/plugins_menu.png [Меню плагинов WordPress]

Jetpack должен автоматически появиться в списке популярных плагинов на странице * Add New *. Если вы его не видите, вы можете выполнить поиск * Jetpack *, используя окно поиска.

изображение: https: //assets.digitalocean.com/articles/wordpress_xmlrpc/jetpack_install.png [Страница установки Jetpack]

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

изображение: https: //assets.digitalocean.com/articles/wordpress_xmlrpc/connect.png [кнопка подключения к Wordpress.com]

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

изображение: https: //assets.digitalocean.com/articles/wordpress_xmlrpc/log_in.png [Войти в форму Wordpress.com]

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

изображение: https: //assets.digitalocean.com/articles/wordpress_xmlrpc/jump_start.png [Начальный экран перехода].

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

изображение: https: //assets.digitalocean.com/articles/wordpress_xmlrpc/jetpack_dashboard.png [Jetpack Dashboard]

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

изображение: https: //assets.digitalocean.com/articles/wordpress_xmlrpc/protect.png [Защита настроек]

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

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

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

sudo a2enconf block-xmlrpc

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

sudo service apache2 restart

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

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

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

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

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

Apache VirtualHost Config

<VirtualHost>
…




</VirtualHost>

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

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

sudo service apache2 restart

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

sudo nano /etc/nginx/sites-available/

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

Блок-файл сервера Nginx

server {
…



}

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

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

sudo service nginx restart

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

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

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

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

access.log

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

Заключение

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

Чтобы узнать больше о атаках грубой силы на WordPress XML-RPC, прочитайте https://blog.sucuri.net/2015/10/brute-force-amplification-attacks-against-wordpress-xmlrpc.html[Sucuri.net - Brute Force Усиление атак на WordPress XMLRPC.

Related