Від автора: система управління контентом WordPress була, залишається і, думаю, буде однією з найбільш популярних CMS. За різними статистичними даними WordPress є найбільш популярної CMS в рунеті. Вважаю, буржунет також любить цю CMS.
Цей факт разом з тим, що WordPress має відкритий вихідний код, безумовно, привертає до неї увагу хакерів. Саме тому зовсім не зайвим буде додатково подбає про безпеку Вашої улюбленої CMS.
Найбільш поширеною або, точніше, одну з найпоширеніших CMS на теренах рунеті вже досить давно залишається WordPress (далі WP). Тому є кілька причин:
Це безкоштовний продукт.
Досить простий в освоєнні і має інтуїтивно зрозумілий інтерфейс.
Порівняно нескладно створити тему під WP для будь-якої категорії сайту.
Наявність великої кількості розширень та тем.
Підтримка і регулярні оновлення.
За різними даними WP утримує 1 або 2 місце по популярності в рунеті. Так, за даними (за вересень 2011 року) блогу команди Безпечного Пошуку Яндекса частка WP на ринку рунета склала 64%. Друге місце посіла Joomla з часткою 23%
За даними (за грудень 2012 року) Російського ринку доменів WP дісталося 2-е місце, і його частка склала 35,4%. Перше місце за цим даними взяла Joomla з часткою 40,9%
Як бачимо, WP надзвичайно популярний, на ньому працює безліч сайтів. Це обставина, очевидно, робить WP найбільш ймовірною метою хакерів. Ну а якщо до цього додати і той факт, що WP має відкритий вихідний код, то стає зрозумілим, що у хакерів, що називається, — всі козирі на руках.
Саме тому аж ніяк не зайвими будуть будь-які поради, що допомагають убезпечити Ваш сайт під управлінням WP. Відразу варто сказати, що застосування цих та інших рад на практиці аж ніяк не дасть Вам гарантію 100% захист Вашого сайту від злому. Але все ж зробить Ваш сайт набагато більш стійким до злому і не дасть зробити можливих простих помилок.
У мережі можна зустріти безліч статей по типу «10 порад…», «10 прийомів…», «N-ое кількість хитрощів», «Яке-то кількість правил…» і т. д. і т. п. «… для захисту/безпеки WP». Статей дуже багато і часом здається, що вони просто передруковуються з незначними доповненнями і змінами. Також деколи здається, що деякі поради їх автори просто не перевіряють або не звертають увагу не деякі нестиковки. Окремі поради можуть бути просто безглузді, деякі — суперечливі і неоднозначні.
У даній статті я хотів би озвучити найбільш слушні з таких рад. При цьому поки що я просто вкажу на половинчастість вирішення деяких з них. У подальших навчальних матеріалах я, звичайно ж, покажу, як доопрацювати той чи інший рада, позбувшись його половинчастості.
1. Безпека системи
Практично всі поради починаються з оновлення CMS та її компонентів. Але ж насправді безпека повинна починатися з робочого місця. Велика частка зараження сайтів трапляється саме з вини користувача, керуючого сайтом.
Саме тому важливо дотримуватися наступні прості правила:
На Вашому комп’ютері повинен бути встановлений антивірус з регулярно оновлюваними антивірусними базами. При цьому зовсім незайвим буде періодичне сканування Вашої системи на наявність вірусів.
Не варто зберігати паролі в текстових файлах або документах на жорсткому диску. Для збереження паролів використовувати спеціально призначений для цього софт — менеджери паролів. Їх безліч і Ви можете вибрати будь-який вподобаний.
Використовуйте складні паролі, що складаються не менше ніж з 6 символів. При цьому цей пароль не повинен бути зі словника, тобто це не повинно бути значуще слово, це повинен бути набір символів. В ідеалі, пароль повинен містити букви верхнього і нижнього регістрів, цифри та інші символи.
Для роботи з хостингом, на якому розташований сайт, Ви часто використовуєте FTP-менеджер. Кожен вибирає FTP-менеджер, відповідно до власних уподобань, але і тут можна дати кілька порад. По-перше, намагайтеся не зберігати паролі в даних програмах, знову ж — намагайтеся зберігати паролі у менеджерів паролів. За власними спостереженнями я можу зробити висновок, що в якості FTP-клієнта найчастіше використовується Total Commander або FileZilla, і тут візьму на себе сміливість озвучити рада «по-друге» — використовуйте клієнт FileZilla. Total Commander хороший в якості файлового менеджера, але в якості FTP-клієнта все ж рекомендую використовувати саме FileZilla. На одному з сайтів зустрічав ось таку таблицю порівняння
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»)
У файл .htaccess додамо наступні рядки:
order deny,allow
deny from all
add_filter(“login_errors”, create_function(“$my_login_errors”, “return ‘Невірний логін або пароль’;”));
Тепер при невірно введених даних ми отримаємо один і той же відповідь — «Невірний логін або пароль»
Начебто все чудово і зловмисник тепер не знає, що ж саме їм було введено невірно… але насправді це і є кілька половинчасте рішення. Справа в тому, що зараз, коли ми вводимо логін і пароль, то у разі якщо логін введено невірно — форма очищається. Якщо ж логін буде введений вірно, то він залишиться у формі
Цей факт для зловмисника є чітким знаком того, що логін він підібрав. Саме тому варто подбати про очищення полів форми в тому випадку, якщо був введений логін вірно. Як це зробити, Ви дізнаєтеся в таких матеріалах, як я і говорив вище.
5. Приховуємо версію WP
Ще одна порада з розряду половинчастих — це приховування версії WP. За замовчуванням WP показує у вихідному коді встановлену версію. В метатегах Ви можете знайти рядок на зразок такої:
При цьому дана рядок може зустрічатися навіть двічі, в залежності від теми. Звичайно ж, хотілося б приховати версію WP, тим самим трохи ускладнивши завдання зловмисника, адже, як Ви пам’ятаєте, кожної версії притаманні певні проблеми, які розглядаються в наступній версії.
Класичний рада з видалення рядка з версією з метаданих сайту полягає в написанні спеціального хука. Відкриваємо файл functions.php і додаємо в нього наступний код:
remove_action(‘wp_head’, ‘wp_generator’);
Також в шаблоні header.php Вашої теми може бути наступний рядок коду:
Якщо така є, то також видаліть її. Тепер якщо ми подивимося вихідний код, то дійсно в коді більше не буде метатега з версією WP. Начебто відмінно… але все не так просто. Насправді, якщо ми придивимося уважніше до вихідного коду, наприклад, будучи авторизованими, то серед іншого побачимо там ось таку рядок коду
Як видно, підключеному до файлу стилів додається GET-параметр з версією встановленого движка. Аналогічний GET-параметр може додаватися до модуля файлів скриптів і стилів різних плагінів. Виходить, що всі наші старання по прихованню версії WP були фактично даремно? Насправді немає. Є способи прибрати непотрібний GET-параметр, про яких ми дізнаємося пізніше.
Ну і, якщо Ви вирішили приховати версію встановленої CMS, то не забудьте також видалити з кореня сайту файл readme.html, в якому вказана версія WP… ну або можете змінити її на іншу, тим самим трохи збивши з пантелику потенційного хакера.
Цим радою ми будемо закінчувати поточний урок. Звичайно ж, тут можна було дати ще багато порад, які допомагають значно убезпечити Ваш сайт під управлінням WP, але я намагався вказати саме на поради, які недостатньо розкриті в аналогічних статтях чи просто не згадуються.
На основі Ваших коментарів та запитань я хочу підготувати наступний відеоурок.
Буду Вам надзвичайно вдячний, якщо Ви висловите свої проблеми та труднощі у коментарях до статті, пов’язані з захистом сайтів на движку WordPress.
Які у Вас є труднощі?