
Безпека Joomla не зводиться до одного плагіна або зміни адреси /administrator. Надійний захист будується шарами: актуальна CMS, оновлювані розширення, багатофакторна автентифікація, унікальні паролі, мінімальні права користувачів, резервні копії та безпечне серверне середовище.
Відкритий вихідний код Joomla сам по собі не робить CMS «вразливою». Реальний ризик частіше виникає через застарілий код, слабкі облікові дані, зайві розширення, заражений комп’ютер або недостатню ізоляцію на хостингу.
Базовий захист Joomla
Більшості проблем із безпекою можна запобігти ще до встановлення додаткових захисних розширень. Почніть із самої CMS, адміністративних облікових записів і стороннього коду.
- Оновлюйте Joomla та розширення. Вразливість, для якої вже випущено виправлення, залишається небезпечною доти, доки сайт не оновлено. Стежте за оновленнями ядра, шаблону, компонентів, модулів і плагінів. Перед великим оновленням зробіть резервну копію, перевірте сумісність розширень і, якщо сайт критично важливий, спочатку протестуйте зміни на копії.
- Увімкніть MFA для адміністративних облікових записів. Joomla має вбудовану багатофакторну автентифікацію. Вона захищає обліковий запис навіть у ситуації, коли пароль став відомий зловмиснику. Для Super Users MFA варто вважати базовим заходом, а резервні коди після налаштування зберігати окремо від основного пароля.
- Використовуйте унікальні паролі. Значно небезпечніше використовувати той самий пароль для Joomla, хостингу, пошти та інших сервісів. Для кожного важливого облікового запису потрібен окремий довгий пароль, а зберігати їх зручніше в надійному менеджері паролів.
- Не використовуйте Super User для щоденної роботи. Joomla має розвинену ACL. Користувачеві потрібно надавати лише ті права, які необхідні для його завдань. Редактору матеріалів не потрібні можливості встановлення розширень, а менеджеру контенту — доступ до всієї конфігурації сайту.
- Видаляйте розширення, які не використовуються. Вимкнене розширення все одно залишається кодом на сервері. Якщо компонент, модуль або плагін більше не використовується й не оновлюється, його краще видалити після резервного копіювання та перевірки залежностей.
- Завантажуйте розширення з довірених джерел. «Nulled»-версії платних шаблонів і компонентів можуть відрізнятися від оригіналу вбудованим кодом. Перевіряйте офіційний сайт розробника, документацію, підтримку вашої версії Joomla та механізм оновлень.
Захист хостингу та файлів
Навіть добре налаштована Joomla не зможе компенсувати слабкий пароль панелі хостингу, скомпрометований файловий обліковий запис або небезпечну серверну конфігурацію.
- Захистіть панель хостингу. Увімкніть MFA, якщо вона доступна, і використовуйте окремі паролі для панелі керування, бази даних та файлового доступу.
- Використовуйте захищений файловий доступ. Якщо хостинг дозволяє, краще використовувати SFTP або SSH замість звичайного FTP. Непотрібні файлові облікові записи краще видалити.
- Ізолюйте сайти один від одного. Якщо в одному обліковому записі розміщено кілька проєктів, зараження одного сайту не повинно автоматично давати доступ до всіх інших. Можливості ізоляції залежать від конфігурації хостингу.
- Не копіюйте права файлів без розуміння сервера. У старих посібниках часто наводять 755 для каталогів, 644 для файлів і 444 для
configuration.php. Такі значення можуть бути нормальними в одній конфігурації та створювати проблеми в іншій. Орієнтуйтеся на рекомендації хостингу, спосіб роботи PHP, власника файлів і розділ System Information → Folder Permissions. - Використовуйте HTTPS на всьому сайті. SSL/TLS захищає облікові дані та вміст з’єднання між браузером і сервером. Після ввімкнення HTTPS перевірте редирект HTTP → HTTPS і відсутність mixed content.
Резервні копії та контроль змін
Резервна копія — це не лише спосіб виправити невдале оновлення. У разі серйозного зламу вона може виявитися найшвидшим шляхом до відновлення сайту.
Backup усередині того самого облікового запису корисний, але в разі повного захоплення акаунта зловмисник може видалити і сайт, і копії. Тому для важливого проєкту бажано мати хоча б одну резервну копію поза поточним хостингом і зберігати кілька точок відновлення: зараження іноді виявляється не в день проникнення.
Періодично звертайте увагу на ознаки, які можуть вказувати на небажані зміни:
- невідомі адміністративні облікові записи;
- неочікувані встановлення розширень;
- масові зміни файлів;
- підозрілі Cron-завдання;
- сплеск вихідної пошти;
- нові редиректи або невідомі сторінки в пошуковій видачі.
Joomla підтримує системне журналювання та Action Logs, але серверні логи теж важливі. Саме поєднання журналів Joomla, PHP і вебсервера часто допомагає зрозуміти, що сталося й коли.
Що не варто вважати основним захистом
Деякі заходи можуть бути корисними як додатковий шар, але не повинні підміняти базову безпеку.
- Приховування або зміна адреси /administrator. Це може зменшити кількість автоматичних спроб входу, але залишається security by obscurity. Такий захід не замінює сильний пароль, MFA та оновлення.
- Basic Auth або додатковий захист URL. Його можна розглядати як ще один шар захисту адміністративної частини, якщо це зручно у вашій конфігурації, але не як єдиний бар’єр.
- Плагін безпеки. Захисне розширення може додати корисні функції, але не виправить застарілу Joomla, слабкі паролі, небезпечний хостинг або заражений комп’ютер адміністратора.
- Антивірус на комп’ютері. Він може бути частиною загального захисту пристрою, але конкретний бренд сам по собі не робить сайт безпечним. Важливіше оновлювати ОС і браузер, не встановлювати підозріле ПЗ та особливо добре захищати основну електронну пошту.
Паролі можуть бути викрадені не через Joomla, а з пристрою власника сайту. Тому безпеку адміністративного комп’ютера й пошти потрібно розглядати як частину захисту самого сайту.
Що робити, якщо сайт уже зламано
Якщо з’явилися невідомі файли, користувачі, редиректи або сторінки в пошуку, недостатньо видалити перший знайдений PHP-файл. Потрібно шукати джерело компрометації та перевіряти, чи не залишилося інших точок доступу.
- Не обмежуйтеся видаленням одного знайденого шкідливого файла.
- Якщо можливо, збережіть копію зараженого стану для аналізу.
- Змініть паролі Joomla, хостингу, бази даних, файлового доступу та пов’язаної пошти з чистого пристрою.
- Перевірте користувачів Joomla, встановлені розширення, шаблони, Cron-завдання та інші серверні налаштування.
- Порівняйте файли Joomla та розширень із чистими дистрибутивами з довірених джерел.
- Перевірте базу даних на невідомих користувачів, код, посилання та інші підозрілі зміни.
- Відновіть чисту резервну копію або перевстановіть уражені компоненти з офіційних джерел.
- Оновіть Joomla та всі використовувані розширення до підтримуваних версій.
- Після відновлення повторно перевірте сайт і продовжуйте стежити за логами та неочікуваними змінами.
Мінімальний чекліст безпеки Joomla
- Joomla оновлена до підтримуваної версії.
- Усі використовувані розширення підтримуються й оновлені.
- Розширення, які не використовуються, видалені.
- Для Super Users увімкнена MFA.
- Паролі Joomla, хостингу, пошти та файлового доступу унікальні.
- Є резервна копія поза поточним хостингом.
- HTTPS працює на всьому сайті.
- Права користувачів зведені до необхідного мінімуму.
- Хостинг і основна пошта додатково захищені MFA, якщо вона доступна.
- Логи та неочікувані зміни періодично перевіряються.
Підсумки
Надійний захист Joomla — це система, а не «чарівний плагін». Що менше зайвого коду, що швидше встановлюються оновлення і що краще захищені адміністративні облікові записи, хостинг та резервні копії, то складніше перетворити одну помилку на повне захоплення сайту.
Безпеку краще налаштовувати до інциденту, а не після появи невідомих файлів і сторінок у пошуку.