На сьогоднішній день 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 піклується про своїх користувачів, і тому в адміністративній панелі управління ви можете знайти повідомлення про вихід нової версії. Щойно побачите його — створіть резервну копію сайту на випадок, якщо щось піде не так, і оновлюйте движок.
При купівлі на рік — знижка 20%
Приховуйте версію 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'); ?>" />
Завантажуйте теми і плагіни з надійних ресурсів 📌
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 файлі:
Ви також можете використовувати спеціальні плагіни для зміни префікса бази даних на кшталт Brozzme DB Prefix & Tools Addons.
Обмежуйте кількість спроб доступу 📌
Найчастіше зловмисники роблять величезну кількість спроб входу на ваш сайт, підбираючи пароль. Ви можете налаштувати систему таким чином, щоб 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-сайтів, і чим все закінчилося 💬