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

Сегодня мы рассмотрим простые, и в то же время лучшие практики безопасности WordPress.
Используйте хороший логин 📌
Защита сайта на WordPress начинается с элементарного — создания хорошего логина.
Устанавливая WordPress, пользователи часто используют логин, который программа установки предлагает по умолчанию, а именно — admin. Это то, что проверяют боты, ищущие дыры в безопасности вашего сайта, в первую очередь. Используя этот логин, вы уже предоставляете половину необходимой информации для хакеров, и им остается только подобрать пароль.
Если вы уже установили платформу и работаете над вашим сайтом, то вряд ли вам захочется удалять установку и начинать всё с чистого листа, чтобы использовать более надежный логин. Выход есть:
Шаг 1 — Создание нового пользователя
Войдите в административную панель WordPress и создайте новую учётную запись с более сложным логином, наделенную полным доступом ко всем функциям сайта, то есть правами администратора.
В главном меню слева выберите Пользователи >> Добавить нового.

Введите всю необходимую информацию для нового пользователя, определив его роль как «Администратор» и нажмите «Добавить нового пользователя».

Шаг 2 — Удаление пользователя admin
После этого выйдите из системы управления, войдите под новой учетной записью и удалите пользователя admin из системы одним из способов:
Способ 1 — В главном меню слева выберите Пользователи >> Все пользователи. Наведите на имя пользователя admin, и вы увидите функцию «Удалить».

Способ 2 — В главном меню слева выберите Пользователи >> Все пользователи. Найдите пользователя admin, отметьте его галочкой и из выпадающего меню «Действия» выберите «Удалить». После этого нажмите на опцию «Применить» под списком пользователей. Эта опция удобна, если вам необходимо удалить сразу несколько пользователей.

Используйте сложный и уникальный пароль 📌
В WordPress защита админки, конечно, невозможна без сложного хорошего пароля. Важно, чтобы он был уникальным и включал в себя цифры, буквы разных регистров, знаки пунктуации, символы и прочее. Пароли типа: pass, 1q2w3e4r5t6y, 87654321, qwerty, abc123, 111111, 1234, дата вашего рождения и т.д. — не являются надежными, но многие пользователи продолжают их использовать. Пример хорошего пароля: pcVaOF8r39. Конечно, вам сложно будет запомнить такой пароль, но для этого существует ряд программ, которые хранят и генерируют пароли, а также могут быть интегрированы в интерфейс вашего браузера (например, Password Agent, KeyPass, Roboform и т.д.)
Если вы все же хотели бы помнить свои пароли наизусть, рекомендуем создавать комбинированный пароль из хорошо знакомого вам названия/слова с несколькими большими буквами/цифрами в случайных местах и несколькими специальными символами в начале или конце. Такой пароль также будет сложен для подбора, но его будет достаточно легко запомнить.
Не забывайте регулярно обновлять свои пароли.
Статья по теме:
Обновляйте версию WordPress 📌
На WordPress безопасность сайта очень зависит от свежести версии всего, что вы используете. И в первую очередь — свежести версии самого движка. Ведь одной из самых распространенных брешей в защищенности вашего сайта является использование устаревшей версии платформы.
WordPress заботится о своих пользователях, и поэтому в административной панели управления вы можете найти уведомления о выходе новой версии. Как только увидите его — создайте резервную копию сайта на случай, если что-то пойдет не так, и обновляйте движок.

Скрывайте версию WordPress 📌
WordPress по умолчанию добавляет номер текущей версии в исходный код своих файлов и страниц. И поскольку довольно часто не всегда удается вовремя обновлять версию WordPress, это может стать слабым местом вашего веб-сайта. Зная, какая у вас версия WordPress, хакер может принести много вреда.
С помощью файла functions.php можно запретить вывод информации о версии вашей платформы. Для этого вам необходимо открыть файл functions.php, расположенный в корневой папке текущей темы вашего веб-сайта (wp-content/themes/текущая_тема_wordpress), и добавить следующий код:
function remove_wp_version() {
remove_action('wp_head', 'wp_generator');
}
add_action('init', 'remove_wp_version');
Помимо вышесказанного, в папке любой темы WordPress вы найдете header.php файл. В нём также указывается версия вашей установки, что для хакера является очень интересным, как упоминалось ранее. Удалив следующую строку из файла, вы избавитесь от этой лишней информации:
<meta name="generator" content="WordPress <?php bloginfo('version'); ?>" />
При покупке на год — скидка 20%
Скачивайте темы и плагины с надежных ресурсов 📌
WordPress является настолько распространенным, что всё больше разработчиков создают для него готовые темы и плагины. В то время как большинство из них облегчат работу с вашим сайтом и расширят его функциональность, некоторые могут скрывать в себе весьма неприятные последствия в виде вирусов и открывать двери для хакеров.
Используйте только проверенные ресурсы для скачивания тем и плагинов, например, wordpress.org, а также обращайте внимание на все появляющиеся предупреждения о вредоносности файлов. Как и в случае с самим WordPress, важно вовремя обновлять плагины до последних версий.

Используйте плагины безопасности 📌
Как мы упомянули в предыдущем пункте, из-за того что WordPress является самым популярным движком в мире, для нее существует очень большое количество специальных плагинов. Плагины безопасности вы можете найти прямо в официальном каталоге WordPress: wordpress.org/plugins/tags/security
И о некоторых из них хочется поговорить отдельно.
Imunify360

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

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

Этот плагин позволяет обезопасить пользовательские аккаунты и логины, базы данных и файловую систему, предотвратить брутфорс атаки (атаки, связанные с подбором пароля), сканировать сайт и прочее.
Также рекомендуем плагин для защиты админки на WordPress LoginLockDown, который защищает от подбора пароля и логина.
Не храните ненужные файлы 📌
Неактивные расширения могут представлять серьезную угрозу для безопасности вашего сайта. Поэтому смело удаляйте все неиспользуемые плагины и темы. Например, вы устанавливали WooCommerce-плагины, чтобы потестировать и выбрать тот, который будете использовать. После выбора не забудьте удалить все ненужные.
Регулярно проверяйте свой локальный компьютер на наличие вирусов 📌
Осуществление различных шагов по обеспечению безопасности сайта на WordPress — это хорошо, но и за компьютером необходимо следить. У вас должен быть установлен постоянно обновляемый антивирус. В противном случае, вы рискуете заразить ваш веб-сайт, загрузив на него вирусные файлы.
Делайте резервные копии сайта 📌
Не все атаки злоумышленников возможно предупредить, но всего лишь одна успешная атака может уничтожить все усилия по работе над вашим сайтом. Именно поэтому советуем делать регулярные резервные копии сайта.
Многие хостинговые компании предоставляют опцию серверных резервных копий и, в случае чего, вы сможете восстановить сайт из копии, которая доступна на сервере. Например, мы делаем резервные копии аккаунтов на WordPress-хостинге каждые три дня.
Также лучше вручную создавать копии вашего сайта с определенной периодичностью или перед важными обновлениями. Для этого существует ряд плагинов, которые помогут создавать копии WordPress. Вы можете ознакомиться с различными вариантами здесь: wordpress.org/plugins/tags/backup
Установив плагин WordPress Database Backup, вы дополнительно сможете обезопасить базу данных вашего сайта. Настройки плагина позволяют установить опцию ежедневной отправки резервной копии базы данных на ваш контактный почтовый ящик.
Статья по теме:
Используйте защищенное соединение 📌
Еще один простой способ, как сделать сайт WordPress безопасным — если вы предпочитаете загружать ваши файлы с помощью FTP-клиента, используйте защищенный протокол соединения к серверу SFTP.
Создайте .htaccess файл 📌
.htaccess файл — это главный конфигурационный файл веб-сервера, который находится в корневой папке вашего веб-сайта. Если у вас нет этого файла, просто создайте его с помощью текстового редактора. Расширения у файла нет, поэтому вам достаточно будет назвать новый файл .htaccess.
Это вид стандартного WordPress файл .htaccess:

Важно: Все изменения в .htaccess необходимо вносить только после #END WordPress.
Добавляя в этот файл различные вариации кода, можно значительно обезопасить ваш сайт:
Код, блокирующий доступ к вашему wp-config.php файлу, который содержит важную информацию, необходимую для соединения к серверу MySQL и базе данных:
<Files wp-config.php>
order allow, deny
deny from all
</Files>
Код, который ограничит доступ к самому .htaccess файлу:
<files .htaccess>
order allow, deny
deny from all
</files>
Таким же образом можно защитить любой другой файл, просто заменив в коде «.htaccess» на название необходимого файла.
Код, который ограничивает доступ пользователей с определенным IP-адресом к вашему сайту:
order allow,deny
allow from all
deny from X.X.X.X
Так вы можете запретить доступ подозрительных пользователей, спамеров и ботов, поскольку их IP-адреса часто повторяются. Тем самым вы также снизите нагрузку на сервер.
Код, который дает доступ к вашему сайту только пользователям с определенным IP-адресом:
order deny,allow
deny from all
allow from X.X.X.X
Код, который ограничивает доступ к админ-панели управления вашего сайта (это удобно, если у вас статический IP-адрес, и вы можете установить доступ только для себя):
AuthUserFile /dev/null
AuthGroupFile /dev/null
AuthName "Access Control"
AuthType Basic
order deny, allow
deny from all
allow from X.X.X.X
Код, запрещающий отслеживание HTTP заголовков:
RewriteEngine On
RewriteCond %{REQUEST_METHOD} ^TRACE
RewriteRule .* - [F]
Код, защищающий от SQL-инъекций — самый распространенный вид атак на WordPress сайты:
RewriteEngine On
RewriteCond %{QUERY_STRING} (\<|%3C).*script.*(\>|%3E) [NC,OR]
RewriteCond %{QUERY_STRING} GLOBALS(=|\[|\%[0-9A-Z]{0,2}) [OR]
RewriteCond %{QUERY_STRING} _REQUEST(=|\[|\%[0-9A-Z]{0,2})
RewriteRule ^(.*)$ - [F,L]
Код, который не даст просмотреть папки на вашем сервере, набрав их полный путь:
Options -Indexes
Например, набрав в браузере http://yourdomain.com/wp-includes, вы увидите всё содержимое папки «wp-includes», что, конечно же, не является безопасным. С этим кодом пользователи увидят ответ от сервера — 403 Forbidden.
Альтернативным методом скрытия подпапок, является создание пустого index.php файла в каждой директории. Таким образом, при открытии http://yourdomain.com/wp-includes браузер отобразит пустую страницу.
Код, который защищает от использования XSS-инъекций и попытки модифицировать переменные GLOBALS и _REQUEST:
Options +FollowSymLinks
RewriteEngine On
RewriteCond %{QUERY_STRING} (\<|%3C).*script.*(\>|%3E) [NC,OR]
RewriteCond %{QUERY_STRING} GLOBALS(=|\[|\%[0-9A-Z]{0,2}) [OR]
RewriteCond %{QUERY_STRING} _REQUEST(=|\[|\%[0-9A-Z]{0,2})
RewriteRule ^(.*)$ - [F,L]
Для этой же цели можно использовать ряд WordPress плагинов, которые вы сможете найти здесь: wordpress.org/plugins/tags/xss
Код, защищающий от хотлинкинга:
RewriteEngine On
RewriteCond %{HTTP_REFERER} !^https?://(.+\.)?yourdomain\.com/ [NC]
RewriteCond %{HTTP_REFERER} !^$
RewriteRule .*\.(jpe?g|gif|bmp|png)$ /images/nohotlink.jpg [L]
Хотлинкинг — это вставка изображения с вашего сервера на чужой сайт\блог. Трафик же при этом идет непосредственно на ваш сервер.
При помощи кода, указанного выше, вы можете заставить сервер проверить, откуда именно пришел запрос: если со страниц вашего веб-сайта, то сервер отдает изображение пользователю без проблем; если же с чужого веб-сайта — то показывает изображение с ошибкой.
Измените префикс таблиц базы данных 📌
На WordPress защита от взлома также усилится, если убрать первоначальный префикс wp_ — это усложнит поиск для злоумышленников. Рассмотрим несколько способов:
Способ 1 — Подходит для новых установок через Softaculous
Если ваш хостинг-провайдер предоставляет вам возможность использования скрипта Softaculous для установки WordPress, то изменить префикс вы можете во время первоначальной установки: в секции Advanced Options вам необходимо будет внести требуемые изменения.

Способ 2 — Для уже работающих сайтов и свежих установок WordPress
Если ваш WordPress давно установлен и сайт работает, то вы можете поменять префикс базы данных с помощью программы phpMyAdmin.
Выберите необходимую базу данных из списка и сделайте следующий SQL-запрос:
RENAME table `wp_commentmeta` TO `newprefix_commentmeta`;
RENAME table `wp_comments` TO `newprefix_comments`;
RENAME table `wp_links` TO `newprefix_links`;
RENAME table `wp_options` TO `newprefix_options`;
RENAME table `wp_postmeta` TO `newprefix_postmeta`;
RENAME table `wp_posts` TO `newprefix_posts`;
RENAME table `wp_termmeta` TO `newprefix_termmeta`;
RENAME table `wp_terms` TO `newprefix_terms`;
RENAME table `wp_term_relationships` TO `newprefix_term_relationships`;
RENAME table `wp_term_taxonomy` TO `newprefix_term_taxonomy`;
RENAME table `wp_usermeta` TO `newprefix_usermeta`;
RENAME table `wp_users` TO `newprefix_users`;
где «newprefix_» необходимо заменить на новый префикс, который вы хотите использовать вместо префикса «wp_».

После этого вы увидите новый префикс в таблицах базы данных:

Чтобы убедиться, что все изменения прошли успешно и префикс wp_ больше не используется в таблице _options и _usermeta, вам необходимо будет сделать еще один запрос к базе данных:
SELECT * FROM `newprefix_options` WHERE `option_name` LIKE '%wp_%'
SELECT * FROM `newprefix_usermeta` WHERE `meta_key` LIKE '%wp_%'
В результате вы можете найти ряд префиксов, которые вам необходимо будет переименовать вручную с помощью кнопки Изменить:


Количество изменений, которые вам необходимо будет внести, может различаться. Но все префиксы wp_ вы должны изменить на ваш новый префикс для нормального функционирования веб-сайта.
После этого не забудьте также внести изменения префикса в wp-config.php файле:

Вы также можете использовать специальные плагины для изменения префикса базы данных: Change DB prefix или Change table prefix.
Ограничивайте количество попыток доступа 📌
Чаще всего злоумышленники делают огромное количество попыток входа на ваш сайт, подбирая пароль. Вы можете настроить систему таким образом, чтобы IP-адрес был заблокирован на несколько часов после определенного количества неудавшихся попыток входа.
Для этого вы можете использовать дополнительные плагины, например, Login LockDown или Limit Login Attempts. В настройках этих плагинов, вы можете самостоятельно установить количество попыток входа и время блокировки.
Дополнительно существует возможность убрать отображение сообщения о том, что введенный логин и пароль неверен. Ведь это тоже информация, которая может помочь злоумышленнику.
Чтобы убрать вывод этого сообщения, необходимо открыть файл functions.php, расположенный в папке текущей темы вашего веб-сайта (wp-content/themes/текущая_тема_WordPress) и добавить такой код:
add_filter('login_errors', function($a) {
return null;
});
Удалите readme.html и license.txt 📌
Файлы readme.html и license.txt присутствуют в корневой папке любой установки WordPress. Вам эти файлы ни к чему, а хакерам они могут облегчить их злодеяния. Например, чтобы выяснить текущую версию вашего WordPress и много чего другого полезного для взлома веб-сайта. Рекомендуем удалить их сразу же после установки WordPress.
Используйте SSL-сертификат 📌
Защитите свой сайт WordPress — используйте SSL-протокол, чтобы шифровать данные, которые передаются между сервером с сайтом и посетителем сайта. Особенно это актуально для интернет-магазинов, ведь кроме личных данных вроде электронной почты ваши клиенты вводят данные своих банковских карт.
Прежде всего вам необходимо будет приобрести SSL-сертификат и установить его для вашего доменного имени.
После этого вы сможете установить обязательное использование SSL-протокола при входе в панель управления вашим сайтом. Для этого откройте wp-config.php файл, расположенный в корневой папке вашего веб-сайта, и добавьте следующую строку:
define('FORCE_SSL_ADMIN', true);
85 % пользователей не будут покупать через веб-сайт, если они не уверены, что их данные передаются безопасно.
Защитите свой сайт с SSL-сертификатом и не теряйте клиентов!

Измените файл wp-config.php 📌
Добавив такой код в wp-config.php файл, вы так же сможете укрепить защиту вашего веб-сайта:
Ограничение на изменения темы и плагинов:
define('DISALLOW_FILE_EDIT', true );
Отключение возможности установки и удаления плагинов:
define('DISALLOW_FILE_MODS', true );
Добавление salt-ключей или так называемых ключей безопасности: сначала необходимо будет найти такие строки в wp-config.php файле:

Вы увидите, что ключи уже установлены и их можно поменять. Либо вы увидите строки такого типа: ‘put your unique phrase here’, что говорит о том, что ключи пока не установлены:
/**#@+
* Authentication Unique Keys and Salts.
*
* Change these to different unique phrases!
* You can generate these using the {@link https://api.wordpress.org/secret-key/1.1/salt/ WordPress.org secret-key service}
* You can change these at any point in time to invalidate all existing cookies. This will force all users to have to log in again.
*
* @since 2.6.0
*/
define('AUTH_KEY', 'put your unique phrase here');
define('SECURE_AUTH_KEY', 'put your unique phrase here');
define('LOGGED_IN_KEY', 'put your unique phrase here');
define('NONCE_KEY', 'put your unique phrase here');
define('AUTH_SALT', 'put your unique phrase here');
define('SECURE_AUTH_SALT', 'put your unique phrase here');
define('LOGGED_IN_SALT', 'put your unique phrase here');
define('NONCE_SALT', 'put your unique phrase here');
Просто перейдите по ссылке api.wordpress.org/secret-key/1.1/salt/, где будут сгенерированны новые ключи. Скопируйте их и вставьте в wp-config.php файл.
Такие salt-ключи используются для усиления защищенности информации, хранящейся в cookie пользователей. Они усложняют процесс взлома пользовательских паролей.
Делайте блог на хостинге с предустановленным WordPress!
Наша теплая поддержка на связи 24/7

Используйте двухфакторную аутентификацию учетных записей 📌
Для усиления безопасности ваших паролей все чаще используется метод нескольких видов аутентификации. После того, как вы вводите пароль на сайте, вам высылается запрос на новый одноразовый пароль, который вы получаете на контактный номер телефона или электронную почту (возможен переход по определенной ссылке из письма). Поэтому даже если ваш основной пароль был взломан, хакеру не удастся войти в аккаунт без доступа к вашему телефону или электронной почте.
Одни из самых популярных плагинов двухфакторной верификации WordPress — это Google Authenticator и Two-Factor Authentication.
Это все советы по безопасности WordPress на сегодня.
Как бы грустно это ни звучало, но защитить сайт WordPress от хакеров — задача сложная, и описанные в этой статье способы не гарантируют на 100%, что ваш сайт будет полностью защищен от каких-либо действий мошенников. Однако эти советы, как защитить WordPress от взлома, точно значительно уменьшат ваши риски. Поэтому не пренебрегайте ими и всегда имейте свежую резервную копию сайта.
Пишите в комментариях, сталкивались ли вы с вирусами или взломом WordPress-сайтов, и чем все закончилось 💬