Ломаем и защищаем WordPress своими руками. Безопасность WordPress — советы и плагины

18.02.2019

Безопасность в WordPress является очень важной темой при создании вашего интернет проекта. В этой статье мы рассмотрим основы безопасности при использовании WordPress, самые частые методы и причины взлома, меры и средства защиты вашего сайта от злоумышленников.

Начнём с самого явного и простого.

Слабый пароль

Самой распространённой причиной взлома, является использование слабого пароля. Это относится не только к сайтам на WordPress, но и к почтовым аккаунтам, Twitter и Facebook профилям и прочее. Речь идёт о паролях вида 123456, «qwerty» и т.д.

При создании или смены пароля в WordPress, есть индикатор надёжности, который поможет выбрать вам более надёжный пароль:

  • Не используйте словарные слова
  • Не используйте один и тот же пароль дважды
  • Используйте буквы нижнего и верхнего регистра
  • Используйте буквы в перемешку с цифрами
  • Добавьте символы

Так же стоит серьёзно отнестись к привилегиям ваших пользователей. Если вам нужно добавить пользователя на ваш сайт, который будет писать новые статьи, то не рекомендуется давать этому пользователю права редактора, и уж тем более права администратора.

Иногда полезно и для самого себя иметь аккаунт редактора, отличный от администратора. Таким образом, если злоумышленник доберётся до вашего аккаунта, он сможет удалить все записи и страницы, но он не сможет редактировать код темы, устанавливать плагины и изменять настройки сайта.

Логин пользователя так же играет немаловажную роль, так что избегайте использование «admin» или «administrator» в качестве имени пользователя администратора, в этом случае злоумышленнику будет сложнее подобрать комбинацию.

Перебор или «брутфорс» пароля

Брутфорс (bruteforce) — это полный перебор всевозможных комбинаций. Подобрать можно пароль любой сложности — вопрос всего лишь во времени, и чем сложнее пароль, тем дольше займёт его полный переобор. Для защиты от перебора рекомендуется время от времени менять пароль.

Средства защиты админ-панели

Существует множество способов защитить панель администратора WordPress от злоумышленников. Самые эффективные и распространённые методы:

  • Блокировка директории wp-admin по IP-адресу
  • Серверная
  • Плагин — ограничивает количество неверных попыток при входе
  • Плагин Google Authenticator — дополнительный фактор аутентификации с помощью мобильного приложения
  • Плагин Captcha для входа в административную часть сайта

Уязвимый плагин WordPress

На сегодняшний день, в директории WordPress.org насчитывается почти 25,000 различных плагинов. Среди них есть и уязвимые плагины, которые могут обеспечить злоумышленнику полный доступ к вашему сайту. Заранее знать безопасен ли тот или иной плагин невозможно, а проверка на уязвимость может занять от нескольких часов, до нескольких недель.

Здесь в основном вопрос в доверии и репутации разработчика плагина. Вероятность уязвимости в популярном плагине известного разработчика гораздо меньше, чем в совершенно новом сомнительном плагине. При выборе плагина, обратите внимание на количество скачиваний, частоту обновлений, форумы поддержки и другие плагины того же автора, и если есть какие-либо сомнения, лучше поискать аналог.

Если вы обнаружили уязвимость в том или ином плагине, то первым делом стоит обратиться лично к разработчику, по электронной почте, через Skype и т.д. Если разработчик плагина не откликнулся, то стоит сообщить об этом по адресу [email protected], чтобы плагин исключили из директории WordPress.org.

Уязвимая тема для WordPress

В отличии от плагинов, все темы перед публикацией в директории WordPress.org проходят тщательную проверку, поэтому вероятность обнаружить уязвимую тему в директории небольшая. Если все же вы обнаружили небезопасную тему, то в первую очередь обратитесь к разработчику темы, а затем по адресу [email protected] для снятия её из директории.

Так же напоминаем, что темы для WordPress стоит скачивать только с . Большинство проблем возникает как раз с темами, скачанными со сторонних и сомнительных ресурсов.

Устаревшая версия плагина или темы

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

Это относится больше к крупным и популярным продуктам, как недавний пример с известным плагином кэширования W3 Total Cache , который при определённой конфигурации обеспечивал злоумышленнику полный доступ к базе данных сайта ( на англ.). Спустя несколько дней, было выпущено обновление к плагину.

Однако, обновления не всегда проходят так гладко, как хотелось бы. Если вы сомневаетесь в обновлении, то его лучше протестировать на локальном компьютере, или на тестовом сервере, прежде чем выполнять его на живом сайте. Если возникли проблемы при обновлении, вы всегда можете обратиться за помощью к разработчику через форумы поддержки.

Устаревшая версия WordPress

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

Если вы обнаружили уязвимость в WordPress, то обязательно напишите на [email protected] подробное описание проблемы, но не распространяйте информацию публично.

Неправильная конфигурация хостинга

Хосинг-провайдер играет огромную роль в защите вашего сайта, особенно когда речь идёт о компонентах, над которыми вы не имеете никакого контроля, например устаревшая и уязвимая версия PHP, или уязвимый модуль для веб-сервера Apache. Чаще всего это случается с дешёвыми хостинг-провайдерами, у которых «всё включено и безлимитно» за 5 копеек в год. Помните: стоит денег!

Что делать если сайт взломали

Если злоумышленники добрались до вашего сайта, то вам придётся нелегко, главное в этом случае не паниковать. Злоумышленники часто оставляют за собой след (или открытую дверь) в виде посторонних плагинов, изменённого кода в ядре и т.д. Ниже приведены несколько советов по устранению следов злоумышленника:

  • Изменить все пароли доступа к хостинг-площадке, включая пароль к базе данных
  • Установить WordPress с нуля, скачав самую свежую версию
  • Изменить все секретные ключи в wp-config.php
  • Экспортировать всю старую базу данных и тщательно её почистить
  • Изменить в экспорте все пароли для всех пользователей
  • Импортировать содержимое в новый установленный WordPress
  • Просмотреть директорию загрузок на лишние файлы
  • Импортировать директорию загрузок
  • Тщательно просмотреть каждый плагин и установить самые свежие версии из директории WordPress.org
  • Тщательно просмотреть используемую тему и установить самую свежую версию

Средства подобные Google Webmaster Tools и Exploit Scanner так же помогут найти и устранить признаки взлома вашего сайта. После восстановления работоспособности, следует попытаться понять, как именно злоумышленник пробрался на ваш сайт. С этим вам чаще всего поможет хороший хостинг-провайдер, предоставив журнал доступа.

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

  • Не забывайте о полном резервном копировании
  • По возможности для административной панели
  • Используйте защищённые SFTP или SSH вместо FTP для работы с хостингом
  • Удаляйте темы и плагины, которыми не пользуетесь
  • Используйте префикс отличный от стандартного для базы данных
  • Запретите редактирование файлов через wp-config.php
  • Запретите исполнение.php файлов в директории wp-content

Сторонние платные сервисы подобные Sucuri и VaultPress так же помогут защитить сайт на WordPress от злоумышленников.

Если у вас остались вопросы, касающиеся безопасности WordPress, мы с радостью на них ответим, а если у вас есть дополнительные рекомендации по средствам защиты, не стесняйтесь оставить комментарий.

Сегодня на нулледе прочитал довольно не плохую статью про улучшения безопасности сайта на WordPress. По скольку на нулледе текст виден только зарегистрированным пользователям с определенным количеством постов, выложу статью у себя на блоге, для общественного пользования 😉 В общем всем также предлагаю ознакомиться и внести свои предложения и исправления (если конечно они будут).

1. Перед инсталляцией;
2. После инсталляции;
3. Периодические проверки и обновления.

1. Перед инсталляцией

1.1. Удаляем все ненужные файлы:
readme.html, license.txt, hello.php, ненужные темы и плагины.

1.2. Правильно отредактируем wp-config.php файл:

define("DB_NAME", "wpdb"); // Вместо "wpdb" нужно придумать сильное имя, например, wp433Fd6HW
define("DB_USER", "wpuser"); // Например, UserFB56SKl
define("DB_PASSWORD", "strongpassword"); // Тут должен быть сильный пароль, например, ‘FE876!8e#fh#9fDfds9f’
define("DB_HOST", "localhost"); // В 99% случаях это значение не нужно менять
define("DB_CHARSET", "utf8"); define("DB_COLLATE", "");

Меняем секретный ключ с дефолтного:

define("AUTH_KEY", "izmenite eto na unikalnuyu frazu");
define("SECURE_AUTH_KEY", "izmenite eto na unikalnuyu frazu");
define("LOGGED_IN_KEY", "izmenite eto na unikalnuyu frazu");
define("NONCE_KEY", "izmenite eto na unikalnuyu frazu");

на сгенерированный, с помощью сервиса

define("AUTH_KEY", "M.uFL(RE*jJZBikz3-OV7sO*-_g*{9z,PnM,T&LPAE");
define("NONCE_KEY", "d2