WordPress – дбаємо про безпеку сайту

347

Від автора: система управління контентом WordPress була, залишається і, думаю, буде однією з найбільш популярних CMS. За різними статистичними даними WordPress є найбільш популярної CMS в рунеті. Вважаю, буржунет також любить цю CMS.

Цей факт разом з тим, що WordPress має відкритий вихідний код, безумовно, привертає до неї увагу хакерів. Саме тому зовсім не зайвим буде додатково подбає про безпеку Вашої улюбленої CMS.

Найбільш поширеною або, точніше, одну з найпоширеніших CMS на теренах рунеті вже досить давно залишається WordPress (далі WP). Тому є кілька причин:

Це безкоштовний продукт.

Досить простий в освоєнні і має інтуїтивно зрозумілий інтерфейс.

Порівняно нескладно створити тему під WP для будь-якої категорії сайту.

Наявність великої кількості розширень та тем.

Підтримка і регулярні оновлення.

За різними даними WP утримує 1 або 2 місце по популярності в рунеті. Так, за даними (за вересень 2011 року) блогу команди Безпечного Пошуку Яндекса частка WP на ринку рунета склала 64%. Друге місце посіла Joomla з часткою 23%

WordPress – дбаємо про безпеку сайту

За даними (за грудень 2012 року) Російського ринку доменів WP дісталося 2-е місце, і його частка склала 35,4%. Перше місце за цим даними взяла Joomla з часткою 40,9%

WordPress – дбаємо про безпеку сайту

Як бачимо, WP надзвичайно популярний, на ньому працює безліч сайтів. Це обставина, очевидно, робить WP найбільш ймовірною метою хакерів. Ну а якщо до цього додати і той факт, що WP має відкритий вихідний код, то стає зрозумілим, що у хакерів, що називається, — всі козирі на руках.

Саме тому аж ніяк не зайвими будуть будь-які поради, що допомагають убезпечити Ваш сайт під управлінням WP. Відразу варто сказати, що застосування цих та інших рад на практиці аж ніяк не дасть Вам гарантію 100% захист Вашого сайту від злому. Але все ж зробить Ваш сайт набагато більш стійким до злому і не дасть зробити можливих простих помилок.

У мережі можна зустріти безліч статей по типу «10 порад…», «10 прийомів…», «N-ое кількість хитрощів», «Яке-то кількість правил…» і т. д. і т. п. «… для захисту/безпеки WP». Статей дуже багато і часом здається, що вони просто передруковуються з незначними доповненнями і змінами. Також деколи здається, що деякі поради їх автори просто не перевіряють або не звертають увагу не деякі нестиковки. Окремі поради можуть бути просто безглузді, деякі — суперечливі і неоднозначні.

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

1. Безпека системи

Практично всі поради починаються з оновлення CMS та її компонентів. Але ж насправді безпека повинна починатися з робочого місця. Велика частка зараження сайтів трапляється саме з вини користувача, керуючого сайтом.

Саме тому важливо дотримуватися наступні прості правила:

На Вашому комп’ютері повинен бути встановлений антивірус з регулярно оновлюваними антивірусними базами. При цьому зовсім незайвим буде періодичне сканування Вашої системи на наявність вірусів.

Не варто зберігати паролі в текстових файлах або документах на жорсткому диску. Для збереження паролів використовувати спеціально призначений для цього софт — менеджери паролів. Їх безліч і Ви можете вибрати будь-який вподобаний.

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

Для роботи з хостингом, на якому розташований сайт, Ви часто використовуєте FTP-менеджер. Кожен вибирає FTP-менеджер, відповідно до власних уподобань, але і тут можна дати кілька порад. По-перше, намагайтеся не зберігати паролі в даних програмах, знову ж — намагайтеся зберігати паролі у менеджерів паролів. За власними спостереженнями я можу зробити висновок, що в якості FTP-клієнта найчастіше використовується Total Commander або FileZilla, і тут візьму на себе сміливість озвучити рада «по-друге» — використовуйте клієнт FileZilla. Total Commander хороший в якості файлового менеджера, але в якості FTP-клієнта все ж рекомендую використовувати саме FileZilla. На одному з сайтів зустрічав ось таку таблицю порівняння

WordPress – дбаємо про безпеку сайту

2. Оновлення

Це стандартна порада, яким, тим не менш, нехтувати не варто. Розробники будь підтримуваної CMS намагаються оперативно закривати знайдені вразливості, випускаючи нові версії. Тому з виходом оновлення WP намагайтеся не зволікати з її оновленням у Вас. Також не варто забувати про оновлення плагінів, які Ви використовуєте.

Тут незайвим буде також сказати про те, що сам дистрибутив WP варто брати тільки з офіційного сайту. Плагіни також, за можливості, варто качати з офіційного сайту. Доречним буде процитувати рекомендацію блогу Безпечного Пошуку Яндекса: використовуйте «мінімум сторонніх скриптів, модулів і розширень. У самих пакетах CMS вразливостей зазвичай небагато, в основному вони припадають на доповнення, причому як сторонньої розробки, так і офіційні». Якщо можна вирішити просту задачу без застосування плагіна, то однозначно плагін не потрібен.

3. Установка WP

При установці WP варто приділити увагу конфігураційного файлу wp-config.php. Деякі обмежуються лише встановленням значень констант, які використовуються для з’єднання з базою даних. Але в цьому ж файлі знаходяться ще 8 констант, в яких зберігаються ключі і солі, використовувані для аутентифікації. Дуже бажано заповнити значення цих констант. Щоб не вигадувати ці значення, розробники пропонують сервіс для їх генерації. Достатньо перейти по ссылке https://api.wordpress.org/secret-key/1.1/salt/ скопіювати вже згенерований ключі і замінити ними відповідний блок коду в конфігураційному файлі:

Також можна потурбуватися про безпеку самого конфігураційного файлу. Зробити це можна декількома способами. Для початку можна спробувати найпростіший — просто перемістіть конфігураційний файл до каталогу рівнем вище. WP спочатку шукає файл wp-config.php в корені Вашого сайту і, якщо його там немає, то намагається знайти файл у каталозі рівнем вище. Якщо після переміщення конфігураційного файлу сайт перестав працювати, тоді спробуйте другий спосіб. В корені сайту (там, де і конфігураційний файл) вже може знаходитися файл .htaccess — відкрийте його в редакторі. Якщо файлу немає, то створіть його. При створенні файлу зверніть увагу на те, що в якості типу файлу має бути вибрано «Усі типи» («All types»)

WordPress – дбаємо про безпеку сайту

У файл .htaccess додамо наступні рядки:

order deny,allow
deny from all
add_filter(“login_errors”, create_function(“$my_login_errors”, “return ‘Невірний логін або пароль’;”));

Тепер при невірно введених даних ми отримаємо один і той же відповідь — «Невірний логін або пароль»

WordPress – дбаємо про безпеку сайту

Начебто все чудово і зловмисник тепер не знає, що ж саме їм було введено невірно… але насправді це і є кілька половинчасте рішення. Справа в тому, що зараз, коли ми вводимо логін і пароль, то у разі якщо логін введено невірно — форма очищається. Якщо ж логін буде введений вірно, то він залишиться у формі

WordPress – дбаємо про безпеку сайту

Цей факт для зловмисника є чітким знаком того, що логін він підібрав. Саме тому варто подбати про очищення полів форми в тому випадку, якщо був введений логін вірно. Як це зробити, Ви дізнаєтеся в таких матеріалах, як я і говорив вище.

5. Приховуємо версію WP

Ще одна порада з розряду половинчастих — це приховування версії WP. За замовчуванням WP показує у вихідному коді встановлену версію. В метатегах Ви можете знайти рядок на зразок такої:

При цьому дана рядок може зустрічатися навіть двічі, в залежності від теми. Звичайно ж, хотілося б приховати версію WP, тим самим трохи ускладнивши завдання зловмисника, адже, як Ви пам’ятаєте, кожної версії притаманні певні проблеми, які розглядаються в наступній версії.

Класичний рада з видалення рядка з версією з метаданих сайту полягає в написанні спеціального хука. Відкриваємо файл functions.php і додаємо в нього наступний код:

remove_action(‘wp_head’, ‘wp_generator’);

Також в шаблоні header.php Вашої теми може бути наступний рядок коду:

Якщо така є, то також видаліть її. Тепер якщо ми подивимося вихідний код, то дійсно в коді більше не буде метатега з версією WP. Начебто відмінно… але все не так просто. Насправді, якщо ми придивимося уважніше до вихідного коду, наприклад, будучи авторизованими, то серед іншого побачимо там ось таку рядок коду

WordPress – дбаємо про безпеку сайту

Як видно, підключеному до файлу стилів додається GET-параметр з версією встановленого движка. Аналогічний GET-параметр може додаватися до модуля файлів скриптів і стилів різних плагінів. Виходить, що всі наші старання по прихованню версії WP були фактично даремно? Насправді немає. Є способи прибрати непотрібний GET-параметр, про яких ми дізнаємося пізніше.

Ну і, якщо Ви вирішили приховати версію встановленої CMS, то не забудьте також видалити з кореня сайту файл readme.html, в якому вказана версія WP… ну або можете змінити її на іншу, тим самим трохи збивши з пантелику потенційного хакера.

Цим радою ми будемо закінчувати поточний урок. Звичайно ж, тут можна було дати ще багато порад, які допомагають значно убезпечити Ваш сайт під управлінням WP, але я намагався вказати саме на поради, які недостатньо розкриті в аналогічних статтях чи просто не згадуються.

На основі Ваших коментарів та запитань я хочу підготувати наступний відеоурок.

Буду Вам надзвичайно вдячний, якщо Ви висловите свої проблеми та труднощі у коментарях до статті, пов’язані з захистом сайтів на движку WordPress.

Які у Вас є труднощі?