22021
422

Як захистити админку Вордпрес…

Річард Кларк: Якщо витрачати більше часу на каву, ніж на IT-безпеку, ваш сайт…

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

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

У даній статті ми розглянемо лише один аспект безпеки сайтів. Розповімо, як захистити сайт на Вордпрес від злому шляхом підбору пароля адміністратора. Чому Вордпрес? А тому, що ця система керування контентом – одна з найбільш популярних. Що ж стосується інших подібних систем – там слід діяти за аналогією з системою Вордпрес.

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

Кричуща проблема такої CMS, як Вордпресс, полягає в тому, що в стандартному постачанні відсутні засоби захисту від підбору пароля адміністратора. Як мінімум, не завадило б розробникам обмежити кількість спроб введення пароля. Ось чому зловмисники створили цілу індустрію злому, і, будьте впевнені, якщо ви веб-майстер не зробить жодних дій щодо запобігання злому, результат буде плачевним. Спеціальні роботи, виготовлені злоумишленінкамі, рано чи пізно підберуть логін і пароль адміністратора, навіть якщо цей пароль буде відносно складним. Ось чому слід вжити заходів для предотврашенія підбору пароля до адміністративної панелі вашого сайту.

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

  • обмежити кількість спроб введення пароля за певний інтервал часу;
  • заборонити короткі і прості паролі;
  • заборонити використовувати в паролі загальновідомі слова і транслітерації відомих слів;
  • оснастити форму введення пароля тестом Тьюрінга (т.зв. капча);
  • вимагати в обов’язковому порядку періодично змінювати пароль, наприклад, один раз на 6 місяців.

Однак, всі вищенаведені заходи вимагають істотних зусиль з боку програміста і вебмастера, а будь-яка праця має свою вартість. Набагато легше, а, головне, дешевше, захистити адмінку сайту шляхом введення «білого» списку IP-адрес. Цей спосіб і називається «обмеження доступу по IP».

Цей метод базується на тому, що всі адміністратори і менеджери сайту користуються адміністративною панеллю, як правило, з одних і тих саме комп’ютерів і пристроїв. Ці пристрої підключені до мережі Інтернет через мережі провайдерів, у кожного з яких існує обмежений перелік підмереж IP. Як наслідок, авторизований персонал сайту відвідує адміністративні ресурси з IP-адрес, які перебувають у певному переліку підмереж. Перелік цей рідко буває довшим за 10 рядків, а найчастіше це взагалі одна підмережа, якщо інтернет-провайдер є невеликою компанію.

Тут ми не будемо вдаватися в технічні подробиці, і, якщо читач не знайомий з теорій, то ми порекомендуємо йому просто виконати відповідні маніпуляції механічно, не вникаючи в теорію. У вас вийде!

Все, що потрібно зробити – це додати декілька рядків коду в два файли, причому ці файли мають ідентичне ім’я - «.htaccess». Точка в імені файлу означає, що цей файл не бачимий для звичайних команд перегляду папки. Крім того, саме таке ім’я файлу передбачено для керування сервером, на якому функціонує сайт. Один з двох файлів розташований в кореневій папці сайту, другий – в папці «/wp-admin». Причому, якщо в цій папці немає такого файлу, його потрібно створити. Стосовно файлу «.htaccess» в корені сайту, то він обов’язково повинен там присутній, в іншому випадку сайт не працюватиме правильно.

При коригуванні файлу «.htaccess» необхідно дотримуватися запобіжних заходів, оскільки практично будь-яка помилка призводить до того, що сайт припинить функціонувати. Перед тим, як робити коригування, переконайтеся, що у вас є бекап-копія сайту і його бази даних.

Виправляти вміст файлів зручніше за допомогою підключення FTP-клієнтом до сервера хостингу, на якому розташований сайт. Можна, звичайно, скористатися редактором файлів, наявному в панелі хостингу. Але цей спосіб менш безпечний.

Перелік дій щодо коригування файлів такий:

  1. Створити на локальному ПК чотири папки для бекапування та обробки файлів «.htaccess»: «admin_save_area», «admin_work_area», «root_save_area», «root_work_area».
  2. Підключитися до сервера хостингу по протоколу FTP або SFTP. Зробити поточною кореневу папку сайту.
    Скріншот екрану при коригуванні файлу за допомогою FTP-клієнта
  3. По черзі скопіювати файл «.htaccess» з кореня сайту на сервері в дві папки – «root_save_area» і «root_work_area».
  4. По черзі скопіювати файл «.htaccess» з папки «/wp-admin» в дві папки – «admin_save_area», «admin_work_area».
  5. Відредагувати файли в папках «root_work_area» і «admin_work_area» (про те, що саме треба редагувати, див. далі).
  6. Закачати файли з папок «root_work_area» і «admin_work_area» на сервер, в кореневу папку і в папку «/wp-admin» відповідно.
  7. Перевірити працездатність сайту. Якщо сайт не працює, повернутися до п. 3. Якщо ж після багаторазових спроб зовсім нічого не вийде, то краще за все закачати на сервер файли з папок «admin_save_area», «root_save_area» і звернутися до професійного веб-спеціаліста.

Тепер розповімо про те, який саме код необхідно додати в наші файли. У цьому коді буде вказано дозвіл на відвідування адмін-панелі з певної групи IP-адрес. Яку саме адресу або групу адрес необхідно додати в перелік дозволених адрес та/або підмереж? Це легко дізнатися за допомогою будь-якого сервісу визначення зовнішнього IP адреси, наприклад, за допомогою сайту 2ip.ua. Ідемо на цей сайт і бачимо нашу зовнішну IP-адресу:

Скріншот екрану із зовнішньою IP-адресою користувача.

Істотно, що посилання з сервісом визначення зовнішнього IP має клацати не веб-майстер, а той, кому потрібно надати доступ. Наприклад, якщо веб-майстер Сергій хоче надати доступ в адмін-панель оператору Володимиру, отже відкривати посилання 2ip.ua має не Сергій, а Володимир, після чого Володимир має повідомити Сергію свою IP-адресу, у вигляді цифр або у вигляді скриншота, це вже не важливо.

Тепер, коли ми знаємо адресу, яку слід додати до переліку дозволених IP-адрес, можна формувати код у файлах. Досвід експлуатації сайтів засвідчує, що відкривати краще не одну адресу, а підмережу з 256 адрес, як мінімум. Це пов’язано з тим, що у багатьох провайдерів Інтернету зовнішня IP-адреса постійно змінюється в межах підмережі. Тому, якщо ми відкриємо підмережу замість однієх адреси, то кількість корегувань значно скоротиться. З іншого боку, особливого збитку безпеці ми не завдамо.

Отже, мы маємо надати права доступу до адмінпанелі сайту з усіх IP-адрес, починаючи з адреси «77.111.244.0» і закінчуючи адресою «77.111.244.255». Ось який код слід додати в файл «.htacccess», розташований в корені сайту:

Блок коду в кореневому файлі .htaccess

Order Deny,Allow
Deny from all
Allow from 77.111.244.0/24

Тепер розглянемо файл «/wp-admin/.htaccess». Блок коду в цьому файлі слід доповнити специфікацією винятку для особливих запитів типу AJAX. Обговорення цієї технології виходить за межі даної статті, тому просто розташуйте цей код:

Блок коду в файлі /wp-admin/.htaccess

Order allow,deny
Allow from all
Satisfy any

Order Deny,Allow
Deny from all
Allow from 77.111.244.0/24

Отже, ми заборонили доступ до адмінпанелі сайту для всіх адрес, за винятком тих, які належать одній підмережі. А що ж робити, якщо нам треба відкрити багато підмереж? Відповідь проста: використовувати кілька операторів Allow, по одному для кожної із потрібних підмереж.

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