Навигация по сайту

Популярные статьи

Як захистити сайт на Joomla | Блог - аудит безпеки і захист сайтів

  1. Використовуйте згенерований префікс таблиць
  2. Придумайте ім'я адміністратора - не "admin»
  3. Не використовуйте FTP
  4. Видаліть директорію «installation /»
  5. Оновлюйте ядро, встановлені плагіни і теми
  6. Не використовуйте підтримуються версії Joomla: 1.0х, 1.5х, 1.6х і 1.7х
  7. Перевірте використовувані плагіни в списку вразливих
  8. Використовуйте надається .htaccess файл
  9. Використовуйте ЧПУ-посилання
  10. Захистіть панель адміністрування
  11. Захистіть конфігураційний файл configuration.php
  12. Налаштуйте права доступу для ключових файлів і директорій
  13. Забороніть вільну реєстрацію користувачів
  14. Перенесіть директорії «logs /» і «tmp /» за межі сайту
  15. Використовуйте плагіни безпеки
  16. Блокуйте небезпечні запити
  17. Використовуйте механізми для активного аудиту

Шановні читачі, ця стаття присвячена захисту та налаштування безпеки не менш популярною CMS - Joomla. Всі рекомендації будуть ставитися до актуальної на даний момент гілці 3.3х. Багато з наших порад працюватимуть і на попередніх версіях.

В процесі установки CMS необхідно звернути увагу на деякі апсекти, правильне виконання яких дозволить істотно підвищити захищеність вашого сайту.

Використовуйте згенерований префікс таблиць

Розробники третьої версії Joomla (а також гілці 2.5) вбудували деякі механізми, які мінімізують виконання векторів атаки, актуальних для попередніх версій. Раніше все таблиці в базі даних створювалися з використанням префікса jos_, що значно полегшувало виконання sql-ін'єкцій. Тепер установник сам генерує цей префікс, вам же залишається тільки прийняти його.

Тепер установник сам генерує цей префікс, вам же залишається тільки прийняти його

Установка joomla - генерація префікса

Не варто замінювати його на щось вгадувати, наприклад, на ім'я вашого домену.

Придумайте ім'я адміністратора - не "admin»

Далі необхідно придумати ім'я адміністратора сайту і пароль. В якості логіна використовуйте щось на зразок «director-asa2». Якщо ви вкажете класичне «admin», то підібрати параметри доступу буде значно простіше.

Якщо ви вкажете класичне «admin», то підібрати параметри доступу буде значно простіше

Установка joomla - ім'я адміністратора

При установці пароля зверніть увагу на відсутність індикатора стійкості. Для вибору надійного значення краще скористайтеся одним з онлайн сервісів по генерації паролів.

Не використовуйте FTP

Використання ftp-протоколу - це потенційна загроза безпеці. Причина - передача пароля і даних в «відкритому» вигляді (нешифрований протокол).

Для адміністрування сайту рекомендуємо використовувати SSH або SFTP. В цьому випадку весь сеанс зв'язку зашифрований. Більшість хостингів надають таку можливість.

За замовчуванням використання FTP відключено. В якості альтернативи можете скористатися одним з плагінів в офіційному репозиторії extensions.joomla.org, наприклад, ProFiles.

org, наприклад, ProFiles

Установка joomla - не використовувати FTP

Видаліть директорію «installation /»

Після завершення установки система запропонує видалити директорію installation. Виконайте цю вимогу, так як її наявність дозволить зловмиснику «затерти» ваш сайт новою установкою. Якщо ви видалили директорію безпосередньо на файлову систему (а не скористалися кнопкою в установнику), не забудьте також видалити файл joomla.xml, який містить точну версію вашої CMS.

Не варто думати, що по закінченню установки можна забути про заходи безпеки. Як правило, в базовій комплектації система найменш схильна до компрометації. Ризики зростають при розширенні функціональності, додавання користувачів і т.д.

Оновлюйте ядро, встановлені плагіни і теми

Базовий принцип всіх CMS - своєчасне оновлення ядра системи і встановлених плагінів. Про наявність оновленні ви можете дізнатися на головній сторінці панелі управління.

Про наявність оновленні ви можете дізнатися на головній сторінці панелі управління

Налаштування joomla - перевірка оновлень

Для підвищення відмовостійкості вашого сайту рекомендується робити резервні копії при установки нових версій ядра CMS. Для цього скористайтеся плагіном Akeeba Backup версії не нижче 4.0.5.

Не використовуйте підтримуються версії Joomla: 1.0х, 1.5х, 1.6х і 1.7х

Якщо ви давно використовуєте Joomla, то можливо версія вашої системи вже офіційно не підтримується (це стосується всієї гілки 1х) або скоро перестане підтримуватися (гілка 2.5 офіційно закінчується 31 грудня 2014 року). Ми рекомендуємо задуматися про міграцію на актуальну версію 3.3х. На офіційному сайті joomla.org представлені керівництва для переходу зі старих версій.

Так само існують плагіни для автоматичного апгрейда CMS (Migrate Me).

Налаштування joomla - розширення migrate me

Перевірте використовувані плагіни в списку вразливих

Думаю не секрет, що ви знаєте про потенційну загрозу безпеці, яку несе кожен встановлюється плагін. Щоб мінімізувати цей ризик слід виконувати прості правила:

  • використовувати розширення тільки з офіційного репозиторію extensions.joomla.org
  • перед установкою перевіряти наявність розширення в списку вразливих - http://vel.joomla.org/index.php/live-vel

Використовуйте надається .htaccess файл

Дистрибутив CMS Joomla версії 3.3х поставляється разом з файлом htaccess.txt, який містить правила для захисту від широко відомих векторів атак на цю CMS. Вам необхідно перейменувати цей файл в .htaccess, щоб він використовував для захисту можливості веб-сервера Apache, або вставте такі рядки в уже існуючий файл:

RewriteEngine On
RewriteCond% {QUERY_STRING} base64_encode [^ (] * \ ([^)] * \) [OR]
RewriteCond% {QUERY_STRING} (<|% 3C) ([^ s] * s) + cript. * (> |% 3E) [NC, OR]
RewriteCond% {QUERY_STRING} GLOBALS (= | \ [| \% [0-9A-Z] {0,2}) [OR]
RewriteCond% {QUERY_STRING} _REQUEST (= | \ [| \% [0-9A-Z] {0,2})
RewriteCond% {QUERY_STRING} mosConfig_ [a-zA-Z _] {1,21} (= |% 3D) [OR]
RewriteRule. * Index.php [F]

Дані правила будуть працювати, якщо на сервері встановлений модуль mod_rewrite.

Використовуйте ЧПУ-посилання

Багато сканери, які експлуатують уразливості в joomla, отримують списки сайтів з google. Для цього використовується техніка Google XAK, а конкретно для нас може використовуватися ось такий запит inurl: index.php? Option = com_jce. Пошуковик видасть перелік сайтів, на яких встановлений плагін JCE.

Щоб ускладнити роботу сканерів і одночасно поліпшити SEO нашого сайту слід використовувати ЧПУ-посилання:

Налаштування joomla - включити ЧПУ

Це можна зробити перейшовши в панелі управління «Загальні настройки» -> «Сайт» -> «Налаштування SEO».

Захистіть панель адміністрування

Панель управління сайтом для CMS Joomla розташована за адресою site.com/administrator/. Якщо сайт використовує стандартні настройки, то будь-який користувач, знаючи логін і пароль, може керувати сайтом. Покладатися тільки на унікальність логіна і стійкість пароля мало.

Починаючи з версії 3.2.0 в CMS впроваджена можливість використання двофакторної аутентифікації. Ми настійно рекомендуємо включити цю опцію. У цьому випадку крім пароля користувачеві потрібно знати ще й унікальний ключ.

Налаштування joomla - включення двофакторної аутентифікації

Включити і налаштувати цю опцію можна в розділі «Користувачі» -> «Менеджер користувачів» -> Ім'я вашого користувача -> «Двухфакторная аутентифікація». Скористайтеся одним з механізмів: Google Authenticator або YubiKey (ми протестували Google Authenticator - все запрацювало з першого разу).

Ось так буде виглядати форма входу в панель адміністрування:

Ось так буде виглядати форма входу в панель адміністрування:

Налаштування joomla - двухфакторная аутентифікація

Для зміни адреси форми входу можна скористатися плагіном AdminExile. З його допомогою можна встановити ключ, який надасть доступ для входу в панель адміністрування (наприклад, site.com/administrator/index.php?myadmin). Якщо його не вказати, то відбудеться автоматичне редирект на головну сторінку вашого сайту.

Налаштування joomla - плагін adminexile

Цей же плагін дозволить встановити список ip-адрес, яким надано дозвіл на доступ в панель управління, і захистить від брутфорса. Встановлюйте плагін версією не нежі 2.3.6.

Захистіть конфігураційний файл configuration.php

Файл configuration.php розташований в кореневій директорії Joomla (http://example.com/configuration.php). У ньому містяться параметри підключення до бази даних, ключ шифрування, префікс таблиць, параметри ftp (при використанні).

Якщо файл буде доступний для зловмисників, то у них з'являється реальний шанс отримати повний доступ до вашого сайту. На дуже багатьох хостингах встановлена панель управління базою даних - phpMyAdmin. Використання параметрів з файлу configuration.php дозволить пройти авторизацію в цій панелі.

Основна причина доступності файлу - небезпечна конфігурація. Досить часто адміністратор сайту створює резервні копії виду:

  • сonfiguration.php.old
  • сonfiguration.php1
  • сonfiguration.php.test
  • сonfiguration.php ~

При використанні таких імен файли перестають оброблятися як php-скрипти. При прямому запиті (наприклад, http://example.com/сonfiguration.php.old) зловмисник отримає весь вміст.

Не зберігайте резервні копії конфігураційного файлу в межах вашого сайту. Для додаткового захисту помістіть наступний код в файл .htaccess, розташований в корені сайту:

<Files ~ «^ configuration \.»>
Order allow, deny
Deny from all
Satisfy all
</ Files>

Так ви заблокуєте доступ до цього файлу (і всім його копій) засобами веб-сервера.

Налаштуйте права доступу для ключових файлів і директорій

Як правило, при проведенні атаки зловмисник намагається записати свій код в уже існуючі файли системи. Таким чином він хоче доповнити ці файли прихованим функціоналом. Для того щоб максимально ускладнити його завдання необхідно виставити певні права на ключові файли і директорії. Для CMS Joomla:

  • 444 на site.ru/index.php
  • 444 на site.ru/configuration.php
  • 444 на site.ru/templates/ваш шаблон / index.php
  • 555 на директорію site.ru/templates/ваш шаблон /

Не забудьте тимчасово змінити права на 644 для файлу configuration.php, коли будете вносити зміни в панелі адміністрування.

Забороніть вільну реєстрацію користувачів

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

Для відключення перейдіть в панель «Користувачі» -> «Менеджер користувачів» -> «Налаштування».

Налаштування joomla - заборона на реєстрацію

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

Перенесіть директорії «logs /» і «tmp /» за межі сайту

Службові директорії logs і tmp за умовчанням знаходяться в кореневій директорії сайту. Ми рекомендуємо перенести їх за межі «видимості». Як правило це на один рівень вище їх поточного становища на файлову систему.

Спочатку перемістіть директорії, а потім встановіть відповідний шлях в панелі адміністрування ( «Загальні настройки»).

Налаштування joomla - перенесення логів

Налаштування joomla - перенесення логів

Налаштування joomla - перенесення tmp

Використовуйте плагіни безпеки

Досить багато розширень для підвищення безпеки CMS представлено в офіційному репозиторії. Є серед них як платні, так і безкоштовні рішення. Спробуйте почати з «Admin Tools«. Його основні можливості:

  • екстрений переклад сайт в оффлайн режим
  • список ip-адрес, яким надано дозвіл на доступ в панель адміністрування
  • редагування префікса таблиць в базі даних
  • Web Application Firewall
  • менеджер розширень файлів
  • додатковий захист панелі адміністрування за допомогою .htaccess

Налаштування joomla - розширення admin tools

Блокуйте небезпечні запити

Для захисту від найбільш небезпечних типів вразливостей (sql-ін'єкцій і lfi) ви можете скористатися плагіном Marco's SQL Injection.

Для захисту від найбільш небезпечних типів вразливостей (sql-ін'єкцій і lfi) ви можете скористатися плагіном Marco's SQL Injection

Налаштування joomla - розширення marcos

Основні можливості розширення:

  • фільтрація і блокування sql-ін'єкцій і lfi в запитах GET, POST, REQUEST
  • повідомлення адміністратора по електронній пошті
  • білий список компонентів, для яких не застосовувати захист
  • блокування ip-адреси зловмисника

Використовуйте механізми для активного аудиту

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

На жаль аналогічного рівня сканера для Joomla в даний час немає. Joomscan від OWASP можна не брати до уваги. Продукт не оновлювався з травня 2013 року, список уразливих плагінів також далекий від сьогоднішнього дня.

Для зовнішнього аудиту безпеки скористайтеся нашим SaaS-рішенням: weBBez . Безпосередньо для CMS Joomla ми вміємо:

  • шукати копії конфігураційного файлу
  • здійснювати пошук уразливих плагінів
  • виявляти помилки адміністрування CMS
  • здійснювати пошук сигнатур Joomla-вірусів на вашому сайті

Висновок. Для захисту вашого сайту на основі cms Joomla рекомендується виконати наступні кроки і рекомендації:

  • використовуйте згенерований префікс таблиць
  • придумайте ім'я адміністратора - не "admin»
  • не використовуйте FTP
  • видаліть директорію «installation /»
  • оновлюйте ядро, встановлені плагіни і теми
  • не використовуйте підтримуються версії Joomla: 1.0х, 1.5х, 1.6х і 1.7х
  • перевірте використовувані плагіни в списку вразливих
  • використовуйте наданий .htaccess файл
  • використовуйте ЧПУ-посилання
  • захистіть панель адміністрування
  • захистіть конфігураційний файл configuration.php
  • налаштуйте права доступу для ключових файлів і директорій
  • забороніть вільну реєстрацію користувачів
  • перенесіть директорії «logs /» і «tmp /» за межі сайту
  • використовуйте плагіни безпеки
  • блокуйте небезпечні запити
  • використовуйте механізми для активного аудиту

Посилання на згадані програмні продукти і сервіси:

  • Joomla - http://joomla.org
  • офіційний репозиторій - http://extensions.joomla.org
  • ProFiles - http://extensions.joomla.org/extensions/core-enhancements/file-management/24160
  • Akeeba Backup - http://extensions.joomla.org/extensions/access-a-security/site-security/backup/1606
  • Migrate Me - extensions.joomla.org/extensions/migration-a-conversion/joomla-migration/24238
  • список уразливих розширень - http://vel.joomla.org/index.php/live-vel
  • AdminExile - http://extensions.joomla.org/extensions/access-a-security/site-security/login-protection/15711
  • Admin Tools - http://extensions.joomla.org/extensions/access-a-security/site-security/site-protection/14087
  • Marco's SQL Injection - http://extensions.joomla.org/extensions/access-a-security/site-security/site-protection/12731
  • Joomscan - http://sourceforge.net/projects/joomscan/
  • phpMyAdmin - http://www.phpmyadmin.net/home_page/index.php
  • WPScan - http://wpscan.org/
  • weBBez - http://webbez.ru/

Php?
Php?