17 способов защитить сайт на WordPress. На сегодняшний день WordPress – это одна из самых популярных и распространенных систем управления контентом в мире. На основе этого удобного и простого движка строится множество блогов, сайтов, порталов. Но такая простота и распространенность привлекают внимание не только честных пользователей, но и злоумышленников.
Именно поэтому защищенность и безопасность WordPress – это один из главнейших аспектов работы над вашим веб-сайтом. Защита WordPress от взлома включает в себя множество способов, которые важно применять всем, кто не хочет, чтобы их сайт пострадал.
Сегодня мы рассмотрим ряд простейших, но в то же время очень важных способов защиты сайта на WordPres.
1. Используйте хороший логин.
Защита сайта на WordPress начинается с элементарного — создания хорошего логина. Устанавливая WordPress, пользователи часто используют логин, который программа установки предлагает по умолчанию, а именно – admin. Это то, что проверяют боты, ищущие дыры в безопасности вашего сайта, в первую очередь. Используя этот логин, вы уже предоставляете половину необходимой информации для хакеров, и им остается только подобрать пароль.
Если вы уже установили платформу и работаете над вашим сайтом, то вряд ли вам захочется удалять установку и начинать всё с чистого листа, чтобы использовать более надежный логин. Выход есть:
Шаг 1 – Создание нового пользователя
Войдите в административную панель WordPress и создайте новую учётную запись с более сложным логином, наделенную полным доступом ко всем функциям сайта, то есть правами администратора.
В главном меню слева выберите Пользователи >> Добавить нового.
Введите всю необходимую информацию для нового пользователя, определив его роль как «Администратор» и нажмите «Добавить нового пользователя».
Шаг 2 – Удаление пользователя admin
После этого выйдите из системы управления, войдите под новой учетной записью и удалите пользователя admin из системы одним из способов:
Способ 1 – В главном меню слева выберите Пользователи >> Все пользователи. Наведите на имя пользователя admin, и вы увидите функцию «Удалить».
Способ 2 — В главном меню слева выберите Пользователи >> Все пользователи. Найдите пользователя admin, отметьте его галочкой и из выпадающего меню «Действия» выберите «Удалить». После этого нажмите на опцию «Применить» под списком пользователей. Эта опция удобна, если вам необходимо удалить сразу несколько пользователей.
Так же вы можете изменить имя пользователя admin через запрос к базе данных:
UPDATE wp_users SET user_login = ‘новый_логин’ WHERE user_login = ‘admin’;
У данного способа есть минус: автор для постов, написанных пользователем admin, не будет изменен. Для того, чтобы это исправить, необходимо сделать еще один запрос к базе данных:
UPDATE wp_posts SET post_author = ‘новый_логин’ WHERE post_author = ‘admin’;
2. Используйте сложный и уникальный пароль.
Защита админки WordPress, конечно, невозможна без сложного хорошего пароля. Важно, чтобы он был уникальным и включал в себя цифры, буквы разных регистров, знаки пунктуации, символы и прочее. Пароли типа: pass, 1q2w3e4r5t6y, 87654321, qwerty, abc123, 111111, 1234, дата вашего рождения и т.д. – не являются надежными, но многие пользователи продолжают их использовать. Пример хорошего пароля: pcVaOF8r39. Конечно, вам сложно будет запомнить такой пароль, но для этого существует ряд программ, которые хранят и генерируют пароли, а также могут быть интегрированы в интерфейс вашего браузера (например, Password Agent, KeyPass, Roboform и т.д.)
Если вы все же хотели бы помнить свои пароли наизусть, рекомендуем создавать комбинированный пароль из хорошо знакомого вам названия/слова с несколькими большими буквами/цифрами в случайных местах и несколькими специальными символами в начале или конце. Такой пароль также будет сложен для подбора, но его будет достаточно легко запомнить.
Не забывайте регулярно обновлять свои пароли.
3. Обновляйте версию WordPress.
WordPress заботится о своих пользователях, и поэтому в административной панели управления вы можете найти уведомления о выходе новой версии. Рекомендуем совершить обновление, как только вы увидите его, поскольку одной из самых распространенных брешей в защищенности вашего сайта является использование устаревшей версии платформы.
4. Скрывайте версию WordPress.
WordPress по умолчанию добавляет номер текущей версии в исходный код своих файлов и страниц. И поскольку довольно часто не всегда удается вовремя обновлять версию WordPress, это может стать слабым местом вашего веб-сайта. Зная, какая у вас версия WordPress, хакер может принести много вреда.
С помощью файла functions.php можно запретить вывод информации о версии вашей платформы. Для этого вам необходимо открыть файл functions.php, расположенный в корневой папке текущей темы вашего веб-сайта (wp-content/themes/текущая_тема_wordpress), и добавить следующий код:
remove_action(‘wp_head’, ‘wp_generator’);
Или же можно добавить следующий код в файл functions.php:
/* Hide WP version strings from scripts and styles
* @return {string} $src
* @filter script_loader_src
* @filter style_loader_src
*/
function fjarrett_remove_wp_version_strings( $src ) {
global $wp_version;
parse_str(parse_url($src, PHP_URL_QUERY), $query);
if ( !empty($query[‘ver’]) && $query[‘ver’] === $wp_version ) {
$src = remove_query_arg(‘ver’, $src);
}
return $src;
}
add_filter( ‘script_loader_src’, ‘fjarrett_remove_wp_version_strings’ );
add_filter( ‘style_loader_src’, ‘fjarrett_remove_wp_version_strings’ );
/* Hide WP version strings from generator meta tag */
function wpmudev_remove_version() {
return »;
}
add_filter(‘the_generator’, ‘wpmudev_remove_version’);
Помимо вышесказанного, в папке любой темы WordPress, вы найдете header.php файл. В нём также указывается версия вашей установки, что для хакера является очень интересным, как упоминалось ранее. Удалив следующую строку из файла, вы избавитесь от этой лишней информации:
<meta name=”generator” content=”WordPress <?php bloginfo (’version’); ?>” />
5. Скачивайте темы и плагины с надежных ресурсов.
WordPress является настолько распространенным, что всё больше разработчиков создают для него готовые темы и плагины. В то время как большинство из них облегчат работу с вашим сайтом и расширят его функциональность, некоторые могут скрывать в себе весьма неприятные последствия в виде вирусов и открывать двери для хакеров. Используйте только проверенные ресурсы для скачивания тем и плагинов, например, wordpress.org, а также обращайте внимание на все появляющиеся предупреждения о вредоносности файлов. Как и в случае с самим WordPress, важно вовремя обновлять плагины до последних версий.
6. Не храните ненужные файлы.
Неактивные расширения могут представлять серьезную угрозу для безопасности вашего сайта. Поэтому смело удаляйте все неиспользуемые плагины и темы.
7. Регулярно проверяйте свой локальный компьютер на наличие вирусов.
Осуществление различных шагов по обеспечению безопасности сайта на WordPress – это хорошо, но и за компьютером необходимо следить. У вас должен быть установлен постоянно обновляемый антивирус. В противном случае, вы рискуете заразить ваш веб-сайт, загрузив на него вирусные файлы.
8. Делайте резервные копии сайта.
Не все атаки злоумышленников возможно предупредить, но всего лишь одна успешная атака может уничтожить все усилия по работе над вашим сайтом. Советуем делать регулярные резервные копии веб-сайта. Многие хостинговые компании предоставляют опцию серверных резервных копий и в случае чего, вы сможете восстановить сайт из копии, которая доступна на сервере.
Но рекомендуем не ограничиваться такими серверными резервными копиями, поскольку важно позаботиться о бекапах и с вашей стороны. Вы можете вручную создавать копии вашего сайта с определенной периодичностью или перед важными обновлениями, но также существует ряд плагинов, которые помогут автоматически создавать копии WordPress. Вы можете ознакомиться с различными вариантами здесь: wordpress.org/plugins/tags/backup
Установив плагин WordPress Database Backup, вы дополнительно сможете обезопасить базу данных вашего сайта. Настройки плагина позволяют установить опцию ежедневной отправки резервной копии базы данных на ваш контактный почтовый ящик.
9. Используйте защищенное соединение.
Если вы предпочитаете загружать ваши файлы с помощью FTP-клиента, используйте защищенный протокол соединения к серверу SFTP.
10. Создайте .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 сайты:
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 ^(.*)$ index.php [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 ^(.*)$ index.php [F,L]
Для этой же цели можно использовать ряд WordPress плагинов, которые вы сможете найти здесь: wordpress.org/plugins/tags/xss
Код, который блокирует доступ к директории /wp-content:
Order deny,allow
Deny from all
<files ~ «.(xml|css|jpe?g|png|gif|js)$»>
Allow from all
</files>
Эта папка является одной из самых важных, поскольку содержит темы, плагины, изображения и прочий контент.
Код, защищающий от хотлинкинга:
RewriteEngine On
RewriteCond %{HTTP_REFERER} !^http://(.+\.)?yourdomain\.com/ [NC]
RewriteCond %{HTTP_REFERER} !^$
RewriteRule .*\.(jpe?g|gif|bmp|png)$ /images/nohotlink.jpg [L]
Хотлинкинг – это вставка изображения с вашего сервера на чужой сайт\блог. Трафик же при этом идет непосредственно на ваш сервер.
При помощи кода, указанного выше, вы можете заставить сервер проверить, откуда именно пришел запрос: если со страниц вашего веб-сайта, то сервер отдает изображение пользователю без проблем; если же с чужого веб-сайта – то показывает изображение с ошибкой.
11. Измените префикс таблиц базы данных.
Защита WordPress от хакеров также усилится, если убрать первоначальный префикс wp_ — это усложнит поиск для злоумышленников. Рассмотрим несколько способов:
Способ 1 – Подходит для новых установок через Softaculous
Если ваш хостинг-провайдер предоставляет вам возможность использования скрипта Softaculous для установки WordPress, то изменить префикс вы можете во время первоначальной установки: в секции Advanced Options вам необходимо будет внести требуемые изменения.
Способ 2 – Для уже работающих сайтов и свежих установок WordPress
Если ваш WordPress давно установлен и сайт работает, то вы можете поменять префикс базы данных с помощью программы phpMyAdmin.
Выберите необходимую базу данных из списка и сделайте следующий запрос к базе данных:
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_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.
12. Ограничивайте количество попыток доступа.
Чаще всего злоумышленники делают огромное количество попыток входа на ваш сайт, подбирая пароль. Вы можете настроить систему таким образом, чтобы IP-адрес был заблокирован на несколько часов после определенного количества неудавшихся попыток входа.
Для этого вы можете использовать дополнительные плагины, например, Login LockDown или Limit Login Attempts. В настройках этих плагинов, вы можете самостоятельно установить количество попыток входа и время блокировки.
Дополнительно существует возможность убрать отображение сообщения о том, что введенный логин и пароль неверен. Ведь это тоже информация, которая может помочь злоумышленнику.
Чтобы убрать вывод этого сообщения, необходимо открыть файл functions.php, расположенный в папке текущей темы вашего веб-сайта (wp-content/themes/текущая_тема_WordPress) и добавить такой код:
add_filter(‘login_errors’,create_function(‘$a’, «return null;»));
13. Удалите readme.html и license.txt.
Файлы readme.html и license.txt присутствуют в корневой папке любой установки WordPress. Вам эти файлы ни к чему, а хакерам они могут облечить их злодеяния. Например, чтобы выяснить текущую версию вашего WordPress и много чего другого полезного для взлома веб-сайта. Рекомендуем удалить их сразу же после установки WordPress.
14. Используйте SSL-сертификат.
Для передачи защищенной информации и конфиденциальности обмена данными, рекомендуем использовать SSL-протокол. Особенно это актуально для интернет-магазинов, если вы не хотите, чтобы личные данные о ваших клиентах передавалась незащищенным путем.
Прежде всего вам необходимо будет приобрести SSL-сертификат и установить его для вашего доменного имени.
После этого вы сможете установить обязательное использование SSL-протокола при входе в панель управления вашим сайтом. Для этого откройте wp-config.php файл, расположенный в корневой папке вашего веб-сайта, и добавьте следующую строку:
define(‘FORCE_SSL_ADMIN’, true);
15. Измените файл 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 пользователей. Они усложняют процесс взлома пользовательских паролей.
16. Используйте двухфакторную аутентификацию учетных записей.
Для усиления безопасности ваших паролей все чаще используется метод нескольких видов аутентификации. После того, как вы вводите пароль на сайте, вам высылается запрос на новый одноразовый пароль, который вы получаете на контактный номер телефона или электронную почту (возможен переход по определенной ссылке из письма). Поэтому даже если ваш основной пароль был взломан, хакеру не удастся войти в аккаунт без доступа к вашему телефону или электронной почте.
Одни из самых популярных плагинов двухфакторной верификации WordPress – это Google Authenticator и Clef Two-Factor Authentication.
17. Используйте плагины, обеспечивающие безопасность.
Помимо всех перечисленных способов обезопасить свой веб-сайт, существует так же большое количество специальных плагинов, разработанных для WordPress. Вы можете найти их здесь: wordpress.org/plugins/tags/security
О некоторых плагинах хочется упомянуть отдельно:
Это плагин безопасности WordPress, который позволяет сканировать ваш веб-сайт с целью поисков вредоносного кода, брешей и лазеек, оставленных хакерами, показывая аналитику сайта и трафика в реальном времени. Также существует возможность настройки автоматического сканирования и многое другое.
Этот плагин проверяет ваш веб-сайт на различные уязвимости в безопасности и предлагает ряд методов по их устранению. Например, пароли, разные права доступа к файлам, защита баз данных, защита информации о версии WordPress, защита администратора и прочее.
Этот плагин позволяет обезопасить пользовательские аккаунты и логины, базы данных и файловую систему, предотвратить брутфорс атаки (атаки, связанные с подбором пароля), сканировать сайт и прочее.
Также рекомендуем плагин для защиты админки на WordPress LoginLockDown, который защищает от подбора пароля и логина.
Также не лишним будет удалить/переименовать в папке wp-admin файл install.php, а также закрыть pingback и почистить основательно wp_head и в .htaccess лучше положить такой код и перенести админку.
Как бы грустно это ни звучало, но защита WordPress — вещь сложная, и описанные в этой статье способы не гарантируют на 100%, что ваш сайт будет полностью защищен от каких-либо действий мошенников. Однако, пренебрегать ими не стоит, так как они значительно уменьшат возможность взлома сайта злоумышленниками.