Перейти до вмісту

Додаток 5: Підвищте безпеку установки XOOPS

Після встановлення XOOPS 2.7.0 виконайте наведені нижче дії, щоб посилити сайт. Кожен крок є необов’язковим окремо, але разом вони значно підвищують базову безпеку встановлення.

1. Встановіть і налаштуйте модуль Protector

Section titled “1. Встановіть і налаштуйте модуль Protector”

Модуль protector, що входить у комплект, є брандмауером XOOPS. Якщо ви не встановили його під час початкового майстра, встановіть його з екрана Адміністратор → Модулі зараз.

Відкрийте панель адміністратора Protector і перегляньте попередження, які вона відображає. Застарілі директиви PHP, такі як register_globals, більше не існують (PHP 8.2+ їх видалено), тому ви більше не бачитимете цих попереджень. Поточні попередження зазвичай стосуються дозволів каталогу, налаштувань сеансу та конфігурації довірчого шляху.

2. Заблокуйте mainfile.php і secure.php

Section titled “2. Заблокуйте mainfile.php і secure.php”

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

  • mainfile.php0444 (власник, група, інші лише для читання)
  • xoops_data/data/secure.php0444

mainfile.php визначає константи шляху (XOOPS_ROOT_PATH, XOOPS_PATH, XOOPS_VAR_PATH, XOOPS_URL, XOOPS_COOKIE_DOMAIN, XOOPS_COOKIE_DOMAIN_USE_PSL) і прапори виробництва. secure.php містить облікові дані бази даних:

  • У 2.5.x облікові дані бази даних використовувалися в mainfile.php. Тепер вони зберігаються в xoops_data/data/secure.php, який завантажується mainfile.php під час виконання. Зберігання secure.php у xoops_data/ — каталозі, який рекомендується перемістити за межі кореня документа — значно ускладнює для зловмисників доступ до облікових даних через HTTP.

3. Перемістіть xoops_lib/ і xoops_data/ за межі кореня документа

Section titled “3. Перемістіть xoops_lib/ і xoops_data/ за межі кореня документа”

Якщо ви ще цього не зробили, перемістіть ці два каталоги на один рівень вище кореневої веб-сторінки та перейменуйте їх. Потім оновіть відповідні константи в mainfile.php:

define('XOOPS_ROOT_PATH', '/home/you/www');
define('XOOPS_PATH', '/home/you/zubra_mylib');
define('XOOPS_VAR_PATH', '/home/you/zubra_mydata');
define('XOOPS_TRUST_PATH', XOOPS_PATH);

Розміщення цих каталогів поза коренем документа запобігає прямому доступу до дерева vendor/ Composer, кешованих шаблонів, файлів сеансу, завантажених даних і облікових даних бази даних у secure.php.

Section titled “4. Конфігурація домену cookie”

XOOPS 2.7.0 містить дві константи домену cookie в mainfile.php:

// Use the Public Suffix List (PSL) to derive the registrable domain.
define('XOOPS_COOKIE_DOMAIN_USE_PSL', true);
// Explicit cookie domain; may be blank, the full host, or the registrable domain.
define('XOOPS_COOKIE_DOMAIN', '');

Рекомендації:

  • Залиште XOOPS_COOKIE_DOMAIN пустим, якщо ви обслуговуєте XOOPS з одного імені хоста або з IP-адреси.
  • Використовуйте повний хост (наприклад, www.example.com), щоб призначити файли cookie лише цьому імені хосту.
  • Використовуйте домен, який можна зареєструвати (наприклад, example.com), якщо ви хочете, щоб файли cookie надавали спільний доступ між www.example.com, blog.example.com тощо.
  • XOOPS_COOKIE_DOMAIN_USE_PSL = true дозволяє XOOPS правильно розділяти складені домени верхнього рівня (co.uk, com.au, …) замість випадкового встановлення файлу cookie на діючому домені верхнього рівня.

5. Виробничі прапори в mainfile.php

Section titled “5. Виробничі прапори в mainfile.php”

mainfile.dist.php поставляється з цими двома прапорами, встановленими на false для виробництва:

define('XOOPS_DB_LEGACY_LOG', false); // disable legacy SQL usage logging
define('XOOPS_DEBUG', false); // disable debug notices

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

  • виявляти застарілі виклики бази даних (XOOPS_DB_LEGACY_LOG = true);
  • поверхневі повідомлення E_USER_DEPRECATED та інші результати налагодження (XOOPS_DEBUG = true).

Після завершення встановлення:

  1. Видаліть будь-який перейменований каталог install_remove_* з кореневого веб-сайту.
  2. Видаліть усі сценарії install_cleanup_*.php, створені майстром під час очищення.
  3. Переконайтеся, що каталог install/ більше не доступний через HTTP.

Залишення вимкненого, але наявного каталогу інсталятора є низьким ризиком, але якого можна уникнути.

7. Тримайте XOOPS і модулі в актуальному стані

Section titled “7. Тримайте XOOPS і модулі в актуальному стані”

XOOPS дотримується звичайної каденції патчів. Підпишіться на репозиторій XoopsCore27 GitHub, щоб отримувати сповіщення про випуски, і оновлюйте свій сайт і будь-які сторонні модулі щоразу, коли надходить новий випуск. Оновлення системи безпеки для версії 2.7.x публікуються на сторінці випусків сховища.