Перейти к содержимому

Приложение 5: Повысьте безопасность вашей установки XOOPS

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

Комплектный модуль protector - это брандмауэр XOOPS. Если вы не установили его во время начального мастера, установите его на экране Admin → Modules сейчас.

Откройте панель администратора Protector и просмотрите предупреждения, которые она отображает. Устаревшие директивы PHP, такие как register_globals, больше не существуют (PHP 8.2+ удалили их), поэтому вы больше не будете видеть эти предупреждения. Текущие предупреждения обычно относятся к разрешениям каталогов, параметрам сеанса и конфигурации пути доверия.

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

  • 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/ вне корня документа

Заголовок раздела «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);

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

XOOPS 2.7.0 вводит две константы домена файла cookie в mainfile.php:

// Используйте список публичных суффиксов (PSL) для вычисления регистрируемого домена.
define('XOOPS_COOKIE_DOMAIN_USE_PSL', true);
// Явный домен файла cookie; может быть пустым, полным хостом или регистрируемым доменом.
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 правильно разбить составные TLD (co.uk, com.au и т.д.) вместо того, чтобы случайно установить файл cookie на эффективный TLD.

mainfile.dist.php поставляется с этими двумя флагами, установленными на false для производства:

define('XOOPS_DB_LEGACY_LOG', false); // отключить устаревшее логирование использования SQL
define('XOOPS_DEBUG', false); // отключить уведомления о отладке

Оставьте их отключены на производстве. Включите их временно в среде разработки или подготовки, когда вы хотите:

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

После завершения установки:

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

Оставление отключенного, но присутствующего каталога установщика - это низкая серьезность, но избегаемый риск.

7. Держите XOOPS и модули в актуальном состоянии

Заголовок раздела «7. Держите XOOPS и модули в актуальном состоянии»

XOOPS следует обычному расписанию исправлений. Подпишитесь на репозиторий GitHub XoopsCore27 для уведомлений о выпусках и обновите сайт и любые модули третьих сторон, когда будет выпущен новый релиз. Обновления безопасности для 2.7.x публикуются на странице “Releases” репозитория.