Безпека вашого WordPress-сайту залежить виключно від вашої пильності. Давайте розглянемо п’ять ключових аспектів, що визначають його стійкість до загроз.
Питання безпеки WordPress є актуальними вже давно і регулярно викликають обговорення.
Якщо ви шукаєте CMS і звернулися до спеціаліста, який скептично ставиться до WordPress, то, швидше за все, саме безпека буде головним аргументом проти. Чи означає це, що потрібно відмовитися від WordPress на користь генераторів статичних сайтів чи безголових CMS?
Звісно, ні, адже, як і в будь-якій ситуації, тут є багато нюансів.
Чи справді WordPress є дуже вразливим?
Погляньмо на кілька відомих веб-сайтів, що базуються на WordPress:
- TechCrunch
- The New Yorker
- BBC America
- Bloomberg
- MTV News
- PlayStation Blog
Чому ці компанії, з їхніми величезними ресурсами, не переходять на іншу платформу? Якщо ви вважаєте, що це через застарілий код, то це не так. Для них безпека даних і репутація є важливішими, ніж витрати на міграцію, яка, на мою думку, коштувала б менше 200 000 доларів.
Мабуть, їхні інженери розуміють, що роблять, і не бачать принципових проблем з безпекою WordPress?
Навіть я маю досвід адміністрування WordPress-сайту, який відвідують 3,5-4 мільйони користувачів щомісяця. Скільки разів за останні вісім років траплялися порушення безпеки? Жодного!
Отже… WordPress безпечний?
Можливо, моя відповідь вас здивує, але ось вона:
Я вважаю, що так, оскільки, як і будь-яке питання, тут є багато тонкощів. Для початку, варто зрозуміти, що WordPress (або будь-яка готова CMS) — це не просто шафа, яку поставили і забули.
Це складний програмний комплекс, що залежить від багатьох компонентів:
- PHP — мова, на якій він розроблений
- Сервер, де розміщено сайт
- Веб-сервер (Apache, Nginx і т.д.)
- База даних (MySQL/MariaDB)
- Теми оформлення (набори PHP, CSS і JS файлів)
- Плагіни (набори PHP, CSS і JS файлів)
- І багато інших, залежно від призначення вашого сайту
Тому будь-який збій в одному з цих елементів може бути сприйнятий як вразливість WordPress.
Якщо root-пароль сервера був admin123 і його зламали, чи це проблема безпеки WordPress?
Якщо в PHP виявилася вразливість, або новий плагін мав недолік у коді, то це теж вважатиметься збоєм WordPress. Тобто, проблема виникає не лише з самим WordPress, а й з усім середовищем, у якому він працює.
Не подумайте, що PHP, MySQL чи Apache є ненадійними. Будь-яке програмне забезпечення має вразливості, особливо програмне забезпечення з відкритим вихідним кодом, бо його код є доступним для аналізу кожному.
Хто сказав “безпека”? 😛
З цього аналізу можна зробити висновок:
Ніщо не є безпечним або небезпечним саме по собі. Усе залежить від комбінації компонентів, де загальна надійність визначається найслабшою ланкою. Раніше WordPress вважався “незахищеним” через використання старих версій PHP, спільного хостингу та плагінів з ненадійних джерел.
Водночас, певні помилки роблять WordPress вразливим, і хакери, які знають, як їх використовувати, можуть скористатися ситуацією. Саме про це ми й поговоримо далі. Тож перейдемо до суті.
Основні слабкі місця WordPress, якими користуються хакери
Префікс таблиць WordPress
Встановлення WordPress за 5 хвилин — це дуже зручно, але, як і будь-які автоматичні процеси, це робить нас менш уважними і залишає все за замовчуванням.
За замовчуванням префікс для таблиць WordPress — “wp_”, що робить імена таблиць очевидними:
- wp-users
- wp-options
- wp-posts
Тепер розглянемо SQL-ін’єкції, де зловмисні запити в базу даних вставляються у код WordPress (варто зазначити, що це не є унікальним для WordPress/PHP).
Хоча WordPress має механізми захисту від таких атак, немає гарантій, що вони спрацюють завжди.
Тому, якщо хакеру вдасться запустити запит на кшталт “DROP TABLE wp_users; DROP TABLE wp_posts;”, то всі ваші акаунти, профілі та публікації буде миттєво видалено без можливості відновлення (якщо у вас немає резервних копій, але навіть у цьому випадку ви втратите дані з моменту останнього копіювання).
Проста зміна префікса під час встановлення може значно підвищити безпеку.
Рекомендовано використовувати випадковий префікс, наприклад “sdg21g34_”, бо його важко вгадати. Чим довший префікс, тим краще. Не потрібно його запам’ятовувати, WordPress сам його збереже, і вам більше не потрібно буде про це турбуватися.
Стандартна URL-адреса для входу
Як визначити, що сайт працює на WordPress? Однією з ознак є сторінка входу WordPress, яка з’являється при додаванні “/wp-login.php” до адреси сайту.
Наприклад, мій сайт (http://ankushthakur.com). Чи він на WordPress? Спробуйте додати частину для входу. Ось що ви побачите:
¯_(ツ)_/¯
Так, це WordPress!
Тепер зловмисники можуть використовувати стандартну адресу для різноманітних шкідливих дій.
Рішення просте — змінити URL-адресу входу та повідомити її лише довіреним особам.
Наприклад, сайт http://techukraine.net.com також на WordPress, але, спробувавши перейти за адресою “/wp-login.php”, ви нічого не отримаєте. URL входу прихований і відомий тільки адміністраторам.
Змінити URL-адресу входу нескладно. Можна скористатися плагіном.
Вітаю, ви додали ще один рівень захисту від атак.
Версія PHP і веб-сервера
Як ми вже казали, будь-яке програмне забезпечення містить помилки. Це стосується і PHP.
Навіть якщо ви використовуєте останню версію PHP, ви не можете бути впевнені, що не існує вразливостей, які ще не виявлені. Для того, щоб зменшити ризики, потрібно приховати заголовок “x-powered-by”, який надсилає ваш веб-сервер (не знаєте про заголовки? Прочитайте цю статтю!).
Ось так це виглядає в інструментах розробника вашого браузера:
Як бачите, веб-сайт інформує нас, що він працює на Apache 2.4 і використовує PHP версії 5.4.16.
Це великий обсяг інформації, який ми повідомляємо без потреби, допомагаючи хакерам.
Ці та подібні заголовки потрібно приховати.
На жаль, для цього потрібні технічні знання, адже доведеться редагувати системні файли. Тому краще попросити свого хостинг-провайдера зробити це за вас. Якщо вони не можуть допомогти, зверніться до спеціаліста. Все залежить від вашого хостингу.
Якщо це не спрацює, можливо, настав час змінити хостинг або перейти на VPS і найняти консультанта з безпеки.
Чи варто воно того? Вирішувати вам. 🙂
А ось посилання на інструменти для редагування заголовків безпеки!
Обмеження кількості спроб входу
Один з найдавніших методів злому — це так звана атака по словнику.
Ідея полягає в тому, що зловмисник намагається підібрати пароль, використовуючи величезну кількість комбінацій. Оскільки комп’ютери працюють дуже швидко, такий метод може дати результат за короткий час.
Один із поширених засобів захисту — це затримка перед відображенням повідомлення про помилку. Це змушує зловмисника чекати, тому його атака займе набагато більше часу. Саме тому комп’ютер або програма трохи “думають” перед тим, як сказати “Невірний пароль!”.
В будь-якому випадку, ви повинні обмежити кількість спроб входу на свій WordPress-сайт.
Після певної кількості спроб (наприклад, п’яти) аккаунт має бути заблоковано, і його можна буде відновити лише через електронну пошту власника.
На щастя, це легко зробити, встановивши відповідний плагін.
HTTP проти HTTPS
SSL-сертифікат, на якому наполягає ваш провайдер, є набагато важливішим, ніж ви думаєте.
Це не просто індикатор безпеки у вигляді зеленого замочка в браузері. Використання SSL-сертифіката і перехід усіх URL-адрес на “https” перетворить ваш сайт з відкритої книги на таємничий сувій.
Якщо ви не розумієте, як це працює, прочитайте про атаку “людина посередині”.
Ще один спосіб перехоплення трафіку між вашим комп’ютером та сервером — це аналіз пакетів, який дозволяє збирати дані пасивно, без потреби займати позицію “посередника”.
Для сайтів, що працюють через “HTTP”, паролі та дані кредитних карток передаються у відкритому вигляді.
Джерело: comparitech.com
Страшно? Дуже!
Але коли ви встановлюєте SSL-сертифікат, і всі адреси працюють через “https”, ця конфіденційна інформація перетворюється на абракадабру, яку може розшифрувати лише сервер. Тому не економте на цьому. 🙂
Висновок
Чи означає це, що, врахувавши ці п’ять факторів, ваш сайт буде повністю захищеним?
Ні, звичайно, ні. Як кажуть усі статті про безпеку, ніколи не можна бути на 100% захищеним, але, застосувавши ці прості кроки, ви зможете усунути значну частину потенційних проблем. Можна також розглянути можливість використання SUCURI cloud WAF для додаткового захисту.