Как защитить сайт на WordPress, 13 советов.

#1: Надежные логин и пароль

Не используйте стандартный логин - admin при входе в админку, переименуйте его на другое имя, ведь именно к этому имени пользователя злоумышленники будут подбирать пароль в первую очередь.

Рекомендуется вообще не использовать имя пользователя в качестве логина, т.к. его можно легко узнать, тем более если имя пользователя отображается у вас на сайте. Для авторизации желательно использовать только email-адрес к которому привязан WordPress. В этом вам помогут плагины из каталога WordPress, просто введите в поисковой строке - "email auth".

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

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

#2: Работайте с сайтом только на надежном компьютере

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

#3: Регулярные обновления движка, плагинов, тем...

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

WordPress начиная с версии 3.7 сам обновляет свое ядро, если сервер это позволяет.

#4: Удалите неиспользуемые плагины и темы

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

#5: Не устанавливайте подозрительные темы и плагины

Перед тем как установить интересующий вас плагин или тему убедитесь в их безопасности.

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

#6: Ограничьте права редакторов сайта

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

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

Привилегии пользователя

#7: Двухфакторная идентификация и captcha при входе в админку

Используйте двухфакторную аутентификацию (2FA) на странице входа. При входе в панель администрирования WordPress попросит вас ввести дополнительный код, который будет выслан вам на телефон. Этот код меняется каждую минуту.

Не забудьте записать и надежно сохранить резервные коды, которые могут пригодится при потере или недоступности телефона

Также установите капчу на саму форму входа.

Будьте внимательны при установки плагинов с recaptcha, т.к. они могут некорректно работать. Поэтому после их установки и активации, не выходя из панели администрирования, зайдите на страницу входа в админку в другом браузере и убедитесь, что при входе никаких проблем не возникает.

Проще всего сделать двухфакторную аутентификацию и капчу при помощи плагинов.

В каталоге плагинов WordPress есть немало тех, что предлагают комплексную защиту, в которую уже входят капча и 2FA.

Плагины для комплексной защиты WordPress
Пример поиска плагинов для обеспечения комплексной безопасности WordPress

#8: Ограничьте количество попыток входа в админку

Помимо использования капчи, защитить форму входа от перебора (брутфорса) можно также путем ограничения попыток набора логина и пароля. Добиться этого можно установив один из плагинов из каталога WordPress.org, например простой в настройке плагин Limit Login Attemps Reloaded.

Применение плагина Limit login attemps reloaded
Применение плагина Limit login attemps reloaded

#9: Ограничения в файле wp-config.php

Следующие директивы приводят к соответствующему регулировании привилегий на уровне конфигурации WordPress. При желании вы можете разместить все или несколько директив в конце файла wp-config.php ограничив тем самым возможности всех пользователей в панели администрирования.

Запрет публикации неэкранированного HTML-кода.

define( 'DISALLOW_UNFILTERED_HTML', true );

Запрет редактирования файлов в панели администратора. Убирает поле "Редактор" в меню панели. Этот способ поможет защитить ваш сайт когда злоумышленник все же сумел получить доступ к панели администрирования, т.к. он не сможет исполнять никакой вредоносный PHP-код и изменять тему вашего сайта. 

define( 'DISALLOW_FILE_EDIT', true );

Запрет на любое редактирование файлов движка из панели администрирования. Эта директива не позволит как либо изменять файлы в файловой системе WordPress (кроме директории загрузок wp-content/uploads), что приведет к невозможности установки и обновлении плагинов и тем для вашего сайта. Вам придется делать это вручную через FTP или SSH.

define( 'DISALLOW_FILE_MODS', true );

Доступ к правке файлов только по FTP.

define('FS_METHOD', 'ftpext');

Если ваш сервер поддерживает FTPs (FTP поверх SSL), то добавьте также следующую директиву.

define('FTP_SSL', true);

Если ваш сервер поддерживает SFTP (передача файлов по SSH). Изменение любых файлов в этом случае будет доступно только по SFTP.

define('FS_METHOD', 'ssh2')

#10: Измените права доступа для файла wp-config.php

Установите права записи файла wp-config.php только для его владельца (веб-сервера), чтобы никто из других пользователей не мог его изменить. Установите следующие биты доступа "400".

chmod 400 /var/www/example.ru/www/wp-config.php

#11: Регулярные резервные копии сайта и БД

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

Делайте резервные копии сайта и БД с частой и постоянной периодичностью, а также надежно их храните, чтобы всегда иметь под рукой свежую копию сайта. Храните резервные копии сайта не только на своем хостинге, но и локально.

#12: Спрячьте версию WordPress

Если вы откроете HTML-код в инструментах для разработчика, то можете увидеть мета тег с именем - "generator", в котором указана текущая версия движка WordPress.

<meta name="generator" content="WordPress 4.9.8" />

Просмотр версии WordPress в исходном коде сайта
Просмотр версии WordPress в исходном коде сайта

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

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

Поместите данный код в конец файла functions.php.

Версию также можно узнать в файле readme.html. Этот файл нужно удалить сразу после установки WordPress.

13#: Измените префикс wp_ для базы данных

В момент установки WordPress обратите внимание на префикс базы данных, по умолчанию предлагается префикс wp_. Рекомендуется изменить префикс на более сложный, т.к. если ваша база данных подвергнется SQL-инъекции, то в первую очередь злоумышленники будут обращаться к таблицам с префиксом wp_.

Поле для смены префикса таблиц в базе данных для WordPress
Поле для смены префикса таблиц в базе данных для WordPress

Чтобы изменить префикс для базы данных с уже установленным WordPress, воспользуйтесь материалом данной статьи.