У попередній статті «Вразливості сайтів на Joomla та WordPress: порівняльний аналіз і статистика» ми розглянули ситуацію зі стрімким зростанням даних про знайдені вразливості у розширеннях Joomla та плагінах WordPress. У цій статті розглянемо поради стосовно того, що треба робити для мінімізації ризиків зламу та пом’якшенню наслідків зламу. А також розглянемо типові послідовності дії, які можуть допомогти у відновленні сайту після зламу.
Пропоновані поради можуть бути корисні як для сайтів на Joomla та WordPress, так і для сайтів на інших CMS. Меншою мірою вони будуть корисні для всіх інших сайтів.
Жодна з цих порад, чи всі вони разом, та будь-які інші поради по захисту сайту від зламу, не дають 100% гарантії. Якщо не хочете щоб Ваш сайт було зламано, у Вас не повинно бути власного сайту.
Здебільшого поради будуть стосуватись саме Джумла. Вони були сформовані на підставі роботи з цією CMS з 2010 року. Я не програміст і не можу самостійно проаналізувати код та зробити висновки щодо його вразливості чи шкідливості. Але маю багаторічний досвід досить успішної практики у плані підвищення захисту сайтів на Джумла від зламу та їх відновленню після зламу.
Поради будуть корисні вебмайстрам, адміністраторам та власникам сайтів
Відео
- Поради щодо підвищення захисту сайту від зламу – 00:02:17.
- Поради щодо мінімізації негативні наслідки у разі зламу – 00:23:22.
- Налаштування «.htaccess» – 00:33:46.
- Відновлення сайту після зламу (якщо є резервна копія) – 00:39:16.
- Відновлення сайту після зламу (якщо нема резервної копії) – 00:43:00.
Відео краще переглядати з якістю «1080p HD». Цей та інші відеоогляди та уроки можна знайти на моєму YouTube каналі.
Посилання з відео:
- «Вразливості сайтів на Joomla та WordPress: порівняльний аналіз і статистика».
- «Коли, навіщо та як потрібно оновлювати сайт. На прикладі Joomla».
- Хостинг Україна.
- RSFirewall.
- Admin Tools.
- Akeeba Backup.
Код з відео:
<FilesMatch "\.php$">
Order Allow,Deny
Deny from all
</FilesMatch>
<FilesMatch "^index(2|3)?\.php$">
Order Allow,Deny
Allow from all
</FilesMatch>
Options -Indexes -ExecCGI
<IfModule mod_include.c>
Options -Includes
</IfModule>
<IfModule mod_mime.c>
RemoveHandler .php .php3 .php4 .php5 .php7 .php8 .phtml .phar .phps .pl .py .sh .cgi
RemoveType .php .php3 .php4 .php5 .php7 .php8 .phtml .phar .phps .pl .py .sh .cgi
</IfModule>
<FilesMatch "(?i)\.(php[0-9]?|phtml|phar|phps|cgi|pl|py|sh|exe|asp|aspx)(\.|$)">
Require all denied
</FilesMatch>
<FilesMatch "(?i)^(\.htaccess|\.htpasswd|\.user\.ini|php\.ini|web\.config|composer\.(json|lock)|package(-lock)?\.json)$">
Require all denied
</FilesMatch>
<IfModule mod_headers.c>
Header set X-Content-Type-Options "nosniff"
</IfModule>
Захист сайту
Поради щодо підвищення захисту сайту від зламу:
- Повністю видаляйте розширення та шаблони, які не використовуються.
- Регулярно оновлюйте Joomla до останньої стабільної версії.
- Якщо використовуються застарілі розширення, які давно не оновлювались, спробуйте знайти їм заміну.
- Своєчасно оновлюйте всі встановлені компоненти, модулі, плагіни та шаблони.
- Використовуйте хостинг із сучасними підтримуваними версіями PHP, ізоляцією акаунтів та антивірусним сканером.
- Встановіть та налаштуйте спеціалізоване розширення для захисту (WAF), наприклад, Admin Tools Pro або RSFirewall. Якщо є бажання, можна спробувати використовувати обидва розширення.
- Підключіть хмарний Web Application Firewall (WAF) на рівні DNS, наприклад, Cloudflare.
- Використовуйте складні паролі, які більше ніде не використовуєте.
- Увімкніть двофакторну автентифікацію (2FA) для облікових записів супер користувачів (Super User). Як альтернативу можна використовувати захист теки адмінки засобами вебсервера (за допомогою файлу «.htpasswd»). Тобто базова автентифікація (HTTP Basic Auth). За можливістю обмежте доступ до адмінки за IP адресами.
- За можливістю обмежте доступ до FTP, phpMyAdmin та панелі керування хостингом за IP адресам.
- Установіть коректні права доступу до файлової системи: 755 для папок, 644 для файлів та 444 для configuration.php.
- Використовуйте виключно SFTP або SSH для доступу до файлової системи сервера, відмовившись від звичайного FTP.
- Вимкніть потенційно небезпечні функції у налаштуваннях PHP (наприклад, allow_url_fopen, exec, shell_exec, system).
- Забезпечте роботу сайту виключно через захищений протокол HTTPS.
- Змініть стандартну адресу входу в адміністративну панель сайту. Наприклад, за допомогою Admin Tools Pro або RSFirewall.
- Заблокуйте можливість перегляду вмісту каталогів (directory listing) на рівні вебсервера або у файлі .htaccess.
- Заборіть виконання PHP-скриптів у каталогах для завантажень (наприклад, /images/) за допомогою .htaccess або конфігурації Nginx.
- Налаштуйте суворі HTTP-заголовки безпеки (Content Security Policy, X-Frame-Options, HSTS, X-Content-Type-Options). У Joomla є спеціальний плагін для цього.
- Обмежте кількість спроб входу в адмінку для захисту від brute-force атак. Можна додати капчу. Наприклад, за допомогою RSFirewall.
- Вимкніть функцію реєстрації нових користувачів, якщо вона не передбачена логікою роботи проєкту.
- Забезпечте суворий антивірусний контроль та оновлення ОС та ПЗ на пристроях усіх адміністраторів сайту.
Поради щодо мінімізації негативні наслідки у разі зламу.
- Налаштуйте регулярне автоматичне створення повних резервних копій сайту та бази даних (наприклад, за допомогою Akeeba Backup). Налаштуйте автоматичне вивантаження бекапів на віддалене хмарне сховище, фізично не пов'язане з хостингом сайту. Наприклад, на Диск Google.
- Зберігайте архів резервних копій за кілька різних періодів (наприклад, за останні кілька днів, тижнів та місяців).
- Періодично проводьте тестове відновлення сайту з бекапу на локальному сервері, щоб переконатися у працездатності архіву.
- Розміщуйте кожен сайт на окремому хостинг-акаунті для уникнення перехресного зараження сусідніх проєктів.
- Впровадьте систему моніторингу цілісності файлів (File Integrity Monitoring), щоб миттєво фіксувати несанкціоновані зміни в коді. Наприклад, за допомогою Admin Tools Pro.
- Підключіть систему моніторингу аптайму.
- Додайте сайт до Google Search Console для отримання сповіщень про виявлення шкідливого коду пошуковою системою. Але це може відбуватись із затримкою.
- Зберігайте локальні «чисті» копії ваших кастомних шаблонів, скриптів та внесених змін до коду.
- Увімкніть базовий компонент Joomla «Журнал дій» (Action Logs) для відстеження активності в адмінці.
- Залиште активним лише один обліковий запис із правами Super User або мінімізуйте їхню кількість.
- Налаштуйте збереження логів вебсервера (access.log та error.log) за тривалий період для можливості розслідування інциденту.
- Заздалегідь складіть покроковий план реагування на інциденти безпеки, щоб діяти без паніки у разі зламу.
Відновлення сайту
Розглянемо загальну послідовність дій, які можна взяти за основу під час проведення робіт по відновленню сайту після зламу. Для кожного окремого випадку ця послідовність може відрізнятись. Пропоную дві послідовності – для ситуації, коли у Вас є актуальна та «чиста» резервна копія сайту і коли її нема. Обидві послідовності не гарантують того, що сайт буде відновлено без проблем і на ньому не залишаться шкідливі та вразливі файли.
Відновлення сайту після зламу (якщо є резервна копія).
- Закрийте доступ до сайту для відвідувачів через файл «.htaccess» або панель хостингу.
- Створіть резервну копію поточного (зламаного) стану файлів та бази даних для збереження доказів та подальшого аналізу.
- Змініть паролі доступу до панелі керування хостингом, FTP/SFTP, SSH та користувача бази даних.
- Видаліть абсолютно всі файли та папки сайту з вашого сервера.
- Повністю очистіть базу даних (видаліть усі наявні таблиці).
- Відновіть файли та базу даних із найсвіжішої «чистої» резервної копії, яка була створена до моменту ймовірного зламу.
- Одразу оновіть ядро Joomla, а також усі встановлені компоненти, модулі, плагіни та шаблони до останніх актуальних версій.
- Перевірте таблицю «#__users» у базі даних на наявність прихованих або невідомих облікових записів із правами Super User та видаліть їх.
- Перевірте вміст файлів «configuration.php», «index.php» (у корені сайту та у корені кожного шаблону, включаючи шаблони адмінки) та «.htaccess» на відсутність шкідливого коду, порівнявши їх з оригіналами.
- Проскануйте відновлений каталог сайту серверним антивірусом або спеціалізованим скриптом-сканером.
- Повторно змініть паролі для всіх облікових записів Super User у самій Joomla.
- Установіть та налаштуйте компонент захисту (WAF), якщо його не було встановлено раніше. Наприклад, Admin Tools Pro або RSFirewall.
- Відкрийте публічний доступ до сайту.
- Очистіть кеш Joomla, а також кеш на рівні сервера або CDN (наприклад, Cloudflare).
- Надішліть запит на перевірку ресурсу в Google Search Console, якщо сайт був позначений пошуковою системою як небезпечний.
Відновлення сайту після зламу (якщо нема резервної копії).
- Закрийте доступ до сайту для відвідувачів через файл «.htaccess» або панель хостингу.
- Створіть резервну копію поточного (зламаного) стану файлів та бази даних для збереження доказів та подальшого аналізу.
- Змініть паролі доступу до панелі керування хостингом, FTP/SFTP, SSH та користувача бази даних.
- Завантажте офіційний архів вашої поточної версії Joomla та перезапишіть усі системні файли поверх існуючих.
- Перезапишіть файли всіх встановлених сторонніх компонентів, модулів, плагінів і шаблонів чистими копіями з офіційних дистрибутивів.
- Очистіть від стороннього коду «configuration.php», корінцевий «index.php», «index.php» всіх шаблонів, включаючи шаблони адмінки та «.htaccess».
- Знайдіть та видаліть усі файли з розширенням «.php» у каталозі «images», «files», «tmp», «cache», «logs», «administrator/cache», «administrator/logs».
- Перевірте таблицю «#__users» у базі даних та видаліть усі невідомі облікові записи з правами Super User.
- Проаналізуйте таблиці контенту в базі даних на наявність шкідливих «iframe», скриптів або спам-посилань.
- Проскануйте файлову систему серверним антивірусом для пошуку прихованих веб-шеллів та бекдорів.
- Оновіть ядро Joomla та всі розширення до останніх актуальних версій.
- Повторно змініть паролі для всіх легітимних облікових записів Super User у самій Joomla.
- Відкрийте публічний доступ до сайту та надішліть його на перевірку в Google Search Console.
Ще раз підкреслю, що жодна з цих порад, чи навіть всі вони разом, та будь-які інші поради по захисту сайту від зламу, не дають 100% гарантії.
Сподіваюсь, що це відео допомогло Вам підвищити захищеність сайту від зламу, мінімізувати негативні наслідки та відновити його у разі зламу або збою.
Для генерації зображення статті використовувалась модель Nano Banana 2 Pro.
При написанні статті було використано Gemini 3.1 Pro (Expanded thinking) для перекладу текстів попереднього циклу статей про захист сайтів, переформулювання речень та перевірки орфографії.
| Автор статті – Хорошевський Олексій |
|---|
Кандидат технічних наук, викладач Харківського національного університету радіоелектроніки, веб-майстер та SEO-оптимізатор із досвідом роботи понад 15 років. Спеціаліст зі створення сайтів на Joomla та WebSite X5. Автор наукових публікацій, відеокурсів та навчального контенту з веб-розробки та SEO. Веде блог та YouTube-канал, де ділиться своїми знаннями та практичним досвідом. Публікації та робота: |
| Схожі матеріали |
|---|
Корисні посилання:

