Веб-разработка

Защита сайта на MODX Revolution: core, manager, права и пакеты

Что сделать сразу после установки MODX, чтобы закрыть сайт от массовых атак: структура папок, доступы, пакеты и резервные копии.

Защита сайта на MODX Revolution: core, manager, права и пакеты

Сразу после установки MODX Revolution сделайте главное: удалите папку setup, закройте каталог core от доступа из браузера (в MODX 2.x — по возможности вынесите его за пределы публичной папки), переименуйте папки manager и connectors, задайте сложный пароль администратору и обновите ядро и все дополнения до актуальных версий. После этого настройте права на файлы, HTTPS и резервные копии.

MODX считается более защищённой системой, чем самые популярные CMS: у неё меньше доля рынка, а значит меньше массовых атак, и нет «магазина» из тысяч сомнительных плагинов. Но в России MODX очень распространён, особенно среди корпоративных сайтов и лендингов, поэтому боты регулярно ищут стандартный адрес /manager/, оставленную папку установки и старые версии дополнений с известными уязвимостями.

Базовая защита MODX — это в основном правильная структура папок, отказ от стандартных имён и дисциплина обновлений. Ниже — порядок, которого мы в Pear Advert придерживаемся при запуске и приёмке сайтов на MODX.

Официальное руководство MODX по защите сайта (Hardening MODX)
Официальное руководство MODX по защите сайта (Hardening MODX)

1. Удалите setup и проверьте версию

Папка setup нужна только во время установки и обновления. Если она осталась на сервере, установщик можно запустить повторно. При установке MODX предлагает удалить её автоматически — отметьте этот пункт, а затем всё равно проверьте через файловый менеджер, что папки нет. Официальное руководство по защите также рекомендует удалить с сервера инструменты администрирования базы данных и любые служебные скрипты, оставшиеся после установки.

Затем посмотрите версию системы в панели управления. Сейчас актуальна ветка MODX 3; ветка 2.x ещё встречается на многих сайтах, но новые возможности и исправления выходят прежде всего для третьей версии. Обновляйтесь до последнего выпуска своей ветки, а переход со 2.x на 3.x планируйте отдельно: часть дополнений для 2.x в третьей версии не работает.

2. Core: вынести или закрыть

В каталоге core лежат ядро системы, кеш, конфигурация с паролем к базе данных (core/config/config.inc.php) и пакеты. Он не должен открываться из браузера ни при каких условиях.

  • MODX 2.x. Core можно перенести за пределы публичной папки сайта (например, на уровень выше public_html) и переименовать. После переноса нужно поправить пути в файлах config.core.php в корне сайта, в папках manager и connectors, а также в самом config.inc.php. Удобнее всего это делать при расширенной установке, указав путь к core заранее.
  • MODX 3.x. Официальная документация прямо говорит, что в третьей версии core больше нельзя переместить или переименовать: этого не позволяет интеграция с Composer и автозагрузка классов. Вместо переноса закройте доступ к каталогу на уровне веб-сервера. Для Apache в MODX есть готовый файл core/ht.access — переименуйте его в .htaccess. Для Nginx добавьте правило, которое запрещает доступ к /core/ и отдаёт ошибку 404.

Проверьте результат: откройте в браузере адрес site.ru/core/config/config.inc.php — вы должны получить ошибку, а не пустую страницу с кодом 200 и тем более не содержимое файла.

3. Переименуйте manager и connectors

Адрес /manager/ — первое, что проверяют боты, а каталог connectors выдаёт сайт на MODX даже без захода в панель. Документация рекомендует один из вариантов:

  • переименовать папку панели управления в случайный набор строчных латинских букв и цифр (заглавные буквы лучше не использовать для совместимости);
  • вынести панель управления на отдельный поддомен, например cms.site.ru;
  • ограничить доступ к панели по IP-адресам.

Проще всего переименовать папки во время расширенной установки: на шаге настройки контекстов указываются путь и URL для manager и connectors. На уже работающем сайте нужно переименовать папки и поправить переменные $modx_manager_path, $modx_manager_url, $modx_connectors_path и $modx_connectors_url в файле core/config/config.inc.php, после чего очистить кеш (удалить содержимое core/cache). Делайте это только с резервной копией под рукой: опечатка в пути закроет доступ к панели.

Ещё один простой шаг из официального руководства — при установке задать префикс таблиц базы данных, отличный от стандартного modx_.

4. Права на файлы и конфигурацию

Права выставляйте по принципу минимально необходимых:

Что Рекомендуемые права Комментарий
Папки сайта 755 Запись только владельцем
Обычные файлы 644 Без права записи для остальных
core/config/config.inc.php 440 или 444 после установки Только чтение: здесь пароль к базе
core/cache, core/packages, assets 755 (запись для пользователя сайта) MODX пишет туда кеш, пакеты и загрузки

Права 777 недопустимы даже временно. Если без них не работает установка пакетов, проблема в том, от какого пользователя запущен PHP на хостинге, — это решается настройкой сервера, а не открытием файлов всем.

5. Пользователи, пароли и группы

MODX имеет гибкую систему прав: группы пользователей, роли и политики доступа. Используйте её, а не раздавайте всем права администратора:

  • Не называйте администратора admin или по имени домена. Пароль — от 14 символов, из менеджера паролей.
  • Создайте для редакторов отдельную группу с политикой доступа, в которой нет установки пакетов, редактирования системных настроек, сниппетов и плагинов.
  • Проверьте системные настройки, отвечающие за вход: минимальную длину пароля (password_min_length), число неудачных попыток входа (failed_login_attempts) и время блокировки (blocked_minutes).
  • Включите безопасные cookie сессии (session_cookie_secure, session_cookie_httponly) после перехода на HTTPS.
  • Отзывайте доступы подрядчиков сразу после окончания работ и раз в квартал проверяйте список пользователей.

Встроенной двухфакторной аутентификации в MODX нет, её добавляют дополнениями. Перед установкой такого пакета проверьте, что он поддерживает вашу версию MODX и обновлялся в последние годы.

Защита MODX начинается с правильной структуры папок и прав на сервере
Защита MODX начинается с правильной структуры папок и прав на сервере

6. Пакеты и дополнения

Дополнения в MODX устанавливаются через «Установщик» (управление пакетами) из официального репозитория MODX.com или других поставщиков, например modstore.pro. Правила безопасности такие:

  • Подключайте только известных поставщиков пакетов и не загружайте вручную архивы транспортных пакетов из неизвестных источников.
  • Регулярно нажимайте проверку обновлений в Установщике и обновляйте пакеты — особенно формы, загрузчики файлов и галереи.
  • Удаляйте неиспользуемые пакеты, сниппеты, плагины и шаблоны. Официальное руководство подчёркивает: удалять стоит даже отключённые элементы, а не просто деактивировать их.
  • Перед обновлением пакета или ядра делайте резервную копию и по возможности проверяйте обновление на тестовой копии.

7. Формы и защита от спама

Формы обратной связи на MODX чаще всего строятся на сниппетах FormIt или AjaxForm. У FormIt есть встроенные хуки защиты: spam (проверка адреса по базе спамеров), math (простая математическая капча) и подключаемая reCAPTCHA. Добавьте скрытое поле-ловушку для ботов и включите проверку на стороне сервера, а не только в браузере.

Не разрешайте загрузку файлов через формы без строгого списка допустимых расширений и ограничения размера. Через непроверенный загрузчик на сервер может попасть исполняемый PHP-файл.

Документация MODX по дополнениям и управлению пакетами
Документация MODX по дополнениям и управлению пакетами

8. HTTPS, 404 и заголовки

Подключите SSL-сертификат и настройте постоянный редирект с HTTP на HTTPS на уровне веб-сервера: для Apache удобно использовать файл ht.access из корня дистрибутива, переименовав его в .htaccess. В системных настройках проверьте, что адрес сайта и ссылки формируются с https://.

Документация MODX отдельно советует создать настоящую страницу 404 и указать её в системной настройке error_page, а не перенаправлять несуществующие адреса на главную: иначе сканеры уязвимостей считают, что на сайте есть любые файлы, и продолжают атаку. Дополнительно попросите хостинг включить заголовки Strict-Transport-Security, X-Content-Type-Options: nosniff и X-Frame-Options: SAMEORIGIN.

9. Резервные копии и журнал

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

Для контроля используйте журнал действий менеджеров в панели (в нём видно, кто и что изменял) и журнал ошибок core/cache/logs/error.log. Незнакомые пользователи, новые плагины, которых вы не ставили, и PHP-файлы в папке assets — признаки взлома.

Типичные ошибки

  • Папка setup осталась на сервере после установки или обновления.
  • Каталог core открывается из браузера, потому что не переименован файл ht.access.
  • Панель доступна по адресу /manager/ с логином admin.
  • Все редакторы работают под учётной записью администратора.
  • Ядро и пакеты не обновлялись годами.
  • Отключённые, но не удалённые плагины и сниппеты с уязвимым кодом.
  • Несуществующие страницы перенаправляются на главную вместо ответа 404.
  • Права 777 на core и assets.

Чек-лист первичной защиты

  1. Удалить папку setup и служебные скрипты.
  2. Обновить MODX до последней версии своей ветки.
  3. В 2.x вынести core за пределы публичной папки, в 3.x закрыть его через .htaccess или правило Nginx.
  4. Проверить, что config.inc.php не открывается из браузера.
  5. Переименовать manager и connectors или вынести панель на поддомен.
  6. Использовать нестандартный префикс таблиц базы данных.
  7. Выставить права 755/644, конфигурацию — только чтение.
  8. Сменить логин и пароль администратора на сложные.
  9. Создать группы и политики доступа для редакторов.
  10. Настроить ограничения попыток входа и безопасные cookie.
  11. Обновить пакеты и удалить неиспользуемые элементы.
  12. Защитить формы хуками FormIt и полем-ловушкой.
  13. Перевести сайт на HTTPS и настроить настоящую страницу 404.
  14. Настроить ежедневные резервные копии с внешним хранением.
  15. Регулярно смотреть журнал действий менеджеров и журнал ошибок.

Частые вопросы

Почему в MODX 3 нельзя перенести core, как раньше?

В третьей версии зависимости ядра подключаются через Composer и автозагрузку, и пути к core жёстко заложены в эту схему. Поэтому разработчики рекомендуют не переносить каталог, а закрыть к нему доступ правилами веб-сервера. Результат для безопасности тот же: файлы core не открываются из браузера.

Можно ли переименовать manager на уже работающем сайте?

Да. Переименуйте папку, поправьте пути и URL в core/config/config.inc.php и очистите кеш. Обязательно сделайте резервную копию: ошибка в пути временно закроет доступ к панели.

Нужен ли отдельный пакет безопасности?

Для большинства сайтов достаточно шагов из этой статьи и защиты на стороне хостинга. Пакеты для двухфакторной авторизации или ограничения входа полезны, но ставьте их только от известных поставщиков и с поддержкой вашей версии MODX.

Стоит ли переходить с MODX 2 на MODX 3?

Да, переход стоит запланировать: развитие системы сосредоточено на третьей версии. Но сначала проверьте совместимость всех используемых пакетов и выполните обновление на тестовой копии сайта.

Если не хочется самому переносить папки и разбираться с политиками доступа, мы проведём аудит безопасности вашего сайта на MODX и настроим защиту без простоя.

Читайте также

Pear Advert · поддержка и защита сайтов

Защитим ваш сайт на MODX

Закроем core, переименуем панель управления, обновим ядро и пакеты, настроим права, HTTPS и резервные копии.

  • Аудит безопасности и отчёт с приоритетами
  • Обновления, бэкапы и мониторинг доступности
  • Очистка от вирусов и восстановление после взлома

Ответим в течение рабочего дня

Читать дальше

Статьи по теме

Начать проект

Давайте сделаем крутой проект вместе

Расскажите о задаче — мы бесплатно проанализируем нишу, предложим решение и назовём сроки со стоимостью. Без навязчивых звонков.

Телефон

8 (926) 837 76 68

Почта

info@pear-advert.ru

Офис

Москва, ул. Гиляровского, 57с1

Оставьте заявку

Ответим в течение рабочего дня

Выберите тип проекта

Данные используются только для ответа на заявку и хранятся не дольше трёх лет.