Безопасность WordPress: как защитить сайт от взлома

Печать
  • 0

Сайты на WordPress редко взламывают через сам WordPress. Обычно злоумышленник проникает через устаревший плагин или тему, слабый пароль либо пароль, украденный с заражённого компьютера. Хорошая новость в том, что несколько простых привычек закрывают почти все эти лазейки. Сначала описано то, что стоит сделать каждому владельцу сайта, затем готовые меры защиты в WP Toolkit, а в конце ручные настройки для тех, кто уверенно правит файлы.

Что уже делает сервер и что зависит от Вас

На хостинге TopHost Imunify360 проверяет аккаунты на вредоносные файлы и отсекает атаки, файрвол сервера блокирует IP-адреса, с которых подбирают пароли, а JetBackup 5 делает автоматические копии, которые хранятся по кругу 30 дней. Однако ничто из этого не сделает безопасным уязвимый плагин. По Условиям предоставления услуг внимательный выбор плагинов и тем и их регулярное обновление лежат на клиенте. О серверной защите подробнее: Imunify360 на хостинге TopHost и почему файрвол блокирует IP-адрес.

Основа: сделайте это на каждом сайте

1. Вовремя обновляйте всё

Боты начинают искать известные уязвимости уже через несколько часов после их публикации. Обновляйте WordPress, плагины и темы через cPanel: откройте WP Toolkit (WordPress Management), посмотрите, для чего есть обновления, и установите их. WP Toolkit умеет ставить обновления и автоматически. Если так удобнее или если WP Toolkit нет в Вашем cPanel, то же самое делается в панели WordPress (Dashboard, затем Updates). Перед крупным обновлением сделайте копию; порядок описан в статье как безопасно обновлять WordPress.

2. Удалите лишнее

Отключённый плагин по-прежнему лежит на сервере, и его файлы всё так же можно атаковать. Удалите неиспользуемые плагины и темы, оставив одну стандартную тему про запас.

3. Устанавливайте только из надёжных источников

Пользуйтесь официальным каталогом wordpress.org или сайтом разработчика. «Бесплатные» сборки платных тем и плагинов с посторонних сайтов нередко содержат скрытый код, открывающий доступ чужому человеку.

4. Надёжный вход

  • Не используйте имя пользователя «admin». Создайте нового администратора с другим именем, войдите под ним, удалите старую учётную запись и передайте её материалы новой.
  • Используйте длинные уникальные пароли (не короче 12-15 символов) и храните их в менеджере паролей. Никогда не повторяйте пароль от почты или другого сайта.
  • Включите двухфакторную аутентификацию в WordPress с помощью плагина безопасности, а для личного кабинета и cPanel по статье двухфакторная аутентификация.
  • Ограничьте число попыток входа. Это умеют, например, Limit Login Attempts Reloaded, Wordfence Security и All-In-One Security (AIOS). Достаточно одного плагина безопасности: два таких плагина часто мешают друг другу.

5. Храните собственную копию

Автоматические копии служат подстраховкой, а не архивом. Время от времени скачивайте полную копию аккаунта и храните её вне хостинга: как скачать полную резервную копию аккаунта.

Готовая защита в WP Toolkit

  1. В cPanel откройте WP Toolkit (WordPress Management) и выберите сайт.
  2. Перейдите в раздел Security этого сайта. WP Toolkit покажет список мер защиты и отметит уже применённые.
  3. Примените рекомендуемые меры. Типичные примеры: запрет редактирования файлов из панели WordPress, блокировка доступа к служебным файлам, запрет выполнения PHP в папках, предназначенных только для загрузок, и закрытие доступа к xmlrpc.php.
  4. Затем откройте сайт и админку. Если что-то перестало работать (например, мобильное приложение или сервис, использующий xmlrpc.php), отмените только эту меру на том же экране.

Ещё WP Toolkit умеет сверять файлы ядра WordPress с оригиналом; см. статью как проверить и восстановить ядро WordPress.

Ручные настройки для опытных пользователей

Перед правкой каждого файла сохраните его копию. Строки ниже добавляются через File Manager в cPanel или по FTP.

Отключите встроенный редактор кода

Добавьте эту строку в wp-config.php выше строки «That's all, stop editing». Даже попав в админку, посторонний не сможет изменить оттуда код тем и плагинов:

define( 'DISALLOW_FILE_EDIT', true );

Закройте прямой доступ к wp-config.php и xmlrpc.php

Добавьте в файл .htaccess в корневой папке сайта. Блок для xmlrpc.php не добавляйте, если пользуетесь мобильным приложением WordPress, Jetpack или другим сервисом, который публикует записи через XML-RPC:

<Files "wp-config.php">
    Require all denied
</Files>
<Files "xmlrpc.php">
    Require all denied
</Files>

Вход в админку только с Вашего IP-адреса

Способ подходит сайтам, где один-два администратора работают с постоянного IP-адреса. Не используйте его, если входят клиенты, авторы или покупатели магазина из разных мест, а также если провайдер меняет Ваш IP. Замените 203.0.113.10 на свой адрес; для каждого дополнительного адреса добавьте ещё одну строку Require ip. В корневом .htaccess:

<Files "wp-login.php">
    Require ip 203.0.113.10
</Files>

Чтобы закрыть всю админку, создайте файл .htaccess внутри папки wp-admin. Второй блок оставляет открытым admin-ajax.php: темы и плагины обращаются к нему и для посетителей, без него сайт работает неправильно:

Require ip 203.0.113.10
<Files "admin-ajax.php">
    Require all granted
</Files>

Если Вы сами потеряли доступ (например, после смены IP-адреса), исправьте или удалите эти строки через File Manager в cPanel.

Права доступа к файлам

Для папок нужны права 755, для файлов 644. Никогда не ставьте 777: так записывать в файл может любой процесс. Права меняются в File Manager через Permissions.

Префикс таблиц

Префикс, отличный от wp_, немного усложняет автоматические атаки. Задайте его при установке WordPress (это позволяют WP Toolkit и Softaculous). Менять его на работающем сайте хлопотно, а пользы мало, поэтому делать это только ради защиты мы не советуем.

Если сайт уже взломан

Нужна помощь? Откройте тикет в поддержку, укажите адрес сайта и что Вы заметили.

Полезные статьи

Помог ли вам данный ответ?

Нужна помощь? Позвоните нам +373 795-800-80