За обновлениями можно следить в telegram-канале https://t.me/quasiart
Люди думают, что безопасность — это существительное, что-то, что можно купить. На самом же деле безопасность — это абстрактное понятие, как счастье.
James Gosling

Разработчики MODX Revolution постоянно ведут работу над улучшением безопасности создаваемой ими системы. Тем не менее, со стороны создателя сайта тоже должны быть приложены определённые усилия, чтобы безопасность сайта оставалась на должном уровне.

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

1 Перемещение ядра

Начиная с версии 2.4 MODX выводит на главной странице панели предупреждение, если каталог ядра находится в открытом доступе. Несмотря на это, данный совет является актуальным для любого веб-проекта — ядро приложения должно располагаться в максимально недоступном для злоумышленников месте.

Чем грозит расположение каталога ядра в доступном месте?

  • Злоумышленник может узнать версию MODX (https://site.ru/core/docs/changelog.txt) и использовать данную информацию для поиска соответствующих уязвимостей.
  • Злоумышленник может получить информацию об установленных дополнениях (https://site.ru/core/packages/).
  • Злоумышленник может скачать пакеты дополнений (https://site.ru/core/packages/core.transport.zip), особенно обидно, если они платные.
  • Если вдруг возникнет такая проблема в работе сервера, когда php-файлы перестанут исполняться, а вместо этого станут отображаться «как есть», то злоумышленнику ничего не стоит узнать доступы к базе данных. 

Каталог ядра MODX в открытом доступе
Каталог ядра MODX в открытом доступе

Решение

Давайте рассмотрим это на простом примере. Допустим, сайт расположен по следующему адресу:

/home/user/vasya/www/site.ru/public_html/

В этом каталоге можно увидеть файлы index.php, .htaccess, config.core.php и каталоги assets, connectors, core. 

Как видим, ядро MODX лежит здесь:

/home/user/vasya/www/site.ru/public_html/core/

Проблема в том, что каталог core находится на одном уровне с файлами, доступными обычным посетителям сайта. Самый простой вариант решения проблемы — перенос каталога с ядром MODX выше по дереву файловой системы. Сделать это проще всего по SSH или с помощью файлового менеджера, предоставляемого хостингом или панелью управления вроде ISP Manager. Итак, после перемещения каталога ядра его новым расположением будет следующий путь:

/home/user/vasya/www/site.ru/core/

Важно после данных манипуляций обновить файлы конфигурации MODX, указав в них новый путь до ядра MODX. Список файлов следующий:

  • config.core.php
  • connectors/config.inc.php
  • core/config/config.inc.php
  • manager/config.inc.php

Как раз недавно я случайно наткнулся с данной проблемой на одном сайте, который работал на какой-то CMS (если это творение вообще можно назвать CMS), написанной на коленках во время концерта Стаса Михайлова. 

Корявая CMS
Доступы к БД в открытом виде

2 Изменение адреса панели

Обычно административная панель сайта на MODX находится по адресу https://site.ru/manager. Немного замести следы пребывания MODX помогает перемещение админки, а сделать это проще простого — достаточно переименовать сам каталог (например, из manager в admin или abrakadabra), а затем указать новый путь в одном файле конфигурации:

  • core/config/config.inc.php

3 Обновляйте дополнения

Даже если функционал текущих версий дополнений полностью устраивает, это ещё не значит, что нет причин для обновлений. Как известно, новые версии ПО несут с собой не только новые возможности, но и различные исправления ошибок (хотя новые ошибки тоже обычно идут в комплекте). 

4 Обновляйте MODX

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

5 Разделяй и властвуй

Если над сайтом работает несколько человек, то крайне рекомендуется настроить для каждого пользователя минимально необходимые права доступа. Ведь нет никакого смысла в том, чтобы контент-менеджер имел доступ к настройкам системы или сниппетам с чанками.

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

Вывод

Безопасный сайт — это хорошо.