Защита MODX Revolution
Последнее обновление May 18th, 2021 | История страницы | Улучшить эту страницу | Сообщить о проблеме
Support the team building MODX with a monthly donation.
The budget raised through OpenCollective is transparent, including payouts, and any contributor can apply to be paid for their work on MODX.
Backers
Budget
$311 per month—let's make that $500!
Learn moreВведение¶
Повышение безопасности любого веб-приложения, включая MODX Revolution, подразумевает аудит всех уровней вашего сайта, включая ваш сервер, все его службы и само приложение. Не заблуждайтесь: здесь как на войне. Если вы не боитесь, значит вы не обращаете внимания. Простой факт наличия веб-сайта в Интернете гарантирует, что вы можете стать целью взлома. У взломщиков разные мотивы, но что совершенно точно - они будут искать и использовать самое слабое звено.
Защита - это огромная тема, поэтому эта страница поможет вам определить, какие векторы атак могут быть наиболее распространенными на вашем сайте, и помочь вам закрыть их.
Все кроме MODX¶
Есть множество аспектов защиты, которые не имеют ничего общего с MODX. Мы упоминаем о них здесь поверхностно, но эта страница посвящена именно тому, как укрепить MODX. Тщательный аудит безопасности будет сосредоточен на всей среде, поэтому не упускайте из виду следующие аспекты:
Ваш компьютер¶
Использование любой версии Windows до Windows Vista - это почти смертельное желание. Усиление защиты старых систем Windows - это титанические усилия, и если вы не будете чрезвычайно опытны и бдительны, ваш компьютер с версией до Vista, скорее всего, будет содержать серьезные бреши в безопасности.
Но не дайте себя обмануть: ЛЮБУЮ операционную систему можно взломать. Не думайте, что вы неуязвимы, если вы работаете на Mac или Linux. Работайте как пользователь с ограниченными разрешениями, обновляйте свою систему и запускайте программное обеспечение для динамического обнаружения вторжений, чтобы защитить вас от клавиатурных шпионов или вирусов, захватывающих снимки экрана. Никогда не сохраняйте свои пароли или другую информацию для входа в виде обычного текста, используйте безопасное программное обеспечение, такое как LastPass, для хранения ваших паролей.
НИКОГДА не используйте общедоступный компьютер: насколько вы знаете, этот компьютер сохраняет каждое имя пользователя и пароль, которые вы вводите.
Ваше подключение¶
Предcтавьте, что кто-то следит за тем, что вы делаете, каждый раз, когда вы подключены к общедоступной сети Wi-Fi.
По возможности используйте только проводные соединения (без Wi-Fi). Никогда не используйте общедоступный Wi-Fi и никогда не используйте беспроводное соединение, в котором используется шифрование, отличное от WPA2. Перехватывать пакеты, проходящие через маршрутизатор, слишком просто. Обладая лишь скромными навыками взлома, кто-то может читать ваши имена пользователей и пароли, когда они путешествуют по кофейне.
Ваш сервер¶
Независимо от того, насколько безопасны все остальные элементы, это может не значить ничего, если ваш сервер недостаточно защищен. Например, если ваш FTP пароль взломан, вы ничего не сможете сделать, чтобы гарантировать целостность своего сайта. Отключите все ненужные службы и, если возможно, полностью смените FTP в пользу SFTP. Рассмотрите возможность полного отключения аутентификации по паролю в пользу логинов с ключом SSH и если вы используете SSH-ключ, убедитесь, что вы используете сложную парольную фразу.
Убедитесь, что на вашем сервере установлен хороший брандмауэр и определенная форма обнаружения вторжений, которая динамически обнаруживает попытки взлома. ModSecurity - это модуль безопасности для веб-сервера Apache
, который помогает предотвратить ряд злонамеренных атак.
Регулярно обновляйте свой сервер и его технологии! Если в какой-либо части вашего сервера будет обнаружено какое-либо слабое звено, это может быть трещина в дамбе, которая затопит весь ваш сайт миром боли. Держите свой сервер актуальным!
Пароли и логины¶
Выбирайте длинные случайно сгенерированные пароли и регулярно их обновляйте. Более длинные пароли обычно сложнее с математической точки зрения, чем короткие, даже если в ваших паролях используются специальные символы. Используйте соль для ваших паролей с легко запоминающейся фразой для увеличения длины пароля - хороший метод для снижения шансов на успех атаки методом грубой силы. Опять же, вы ДОЛЖНЫ надежно хранить свои пароли в каком-то зашифрованном формате. Гораздо лучше записывать пароли в блокноте, который вы храните в запертом картотеке, чем хранить их в виде обычного текстового файла на вашем компьютере.
Очень важно: никогда не используйте один и тот же пароль дважды Часто взломы оказываются успешными, потому что одна служба скомпрометирована и пароль расшифрован, а пользователь неосознанно или лениво использовал тот же пароль для других сайтов или служб. НЕ ЛЕНИТЕСЬ!!!
Поддерживайте чистоту¶
Удалите со своего сайта все ненужное. Удалите все неиспользуемые изображения или javascript файлы. Особенно плохи любые устаревшие PHP-скрипты или, не дай бог, любые резервные копии или zip-файлы внутри корня вашего сайта. Думайте о своем сайте как о падающем дирижабле: если он вам не нужен, выбросьте его, прежде чем вы рухнете и сгорите. Если вы, например, не используете конкретный Плагин, Сниппет или Шаблон, удалите его файлы со своего сервера. То, что он не активирован, не означает, что его нельзя использовать!
Резервные копии¶
Одна из самых важных вещей, которые вы можете сделать для своего веб-сайта - это настроить инкрементное резервное копирование вне сайта. Нет никакой гарантии, что вас не взломают, поэтому лучшее, что вы можете сделать - это обеспечить как минимум резервные копии для восстановления вашего сайта, если и когда он подвергнется атаке.
Социальный инжиниринг¶
Многие взломы включают в себя старый добрый обман: кто-то звонит или пишет вам по электронной почте и запрашивает информацию под ложным предлогом. Не дайте себя обмануть! Вы УВЕРЕНЫ, что это ваш клиент спрашивает ваш пароль? Или это кто-то, кто зашел в их электронную почту? Ознакомьтесь с книгой Кевина Митника Ghost in the Wires: он смог получить исходный код многих корпораций просто позвонив нужному человеку по телефону.
Укрепление MODX¶
Вы заметите, что это только одна небольшая часть процесса защиты. Помните: MODX - это только один аспект вашей среды, поэтому не пренебрегайте предыдущим разделом!
Изменение путей по умолчанию¶
В отличие от Evolution, MODX Revolution позволяет довольно легко изменять имена различных каталогов и перемещать ядро за пределы корневого веб-каталога. Обратите внимание, что только ядро может (и должно) перемещаться за пределы корневого веб-каталога, потому что другие каталоги должны быть доступны через Интернет. Изменение имен каталогов имеет решающее значение, если вы не хотите, чтобы ваш сайт подвергался компрометации и не попадал в список избранного для каждого хакерского бота.
Расширенная установка позволяет вам указывать имена и местоположения различных каталогов во время установки, но на некоторых хостах он не будет успешно установлен.
Прежде чем делать что-либо из этого, сделайте резервную копию своего сайта и своей базы данных!
core¶
Это, пожалуй, самый важный путь для изменения. Переместите основной каталог из корневого каталога веб-сайта. Вы же не хотите, чтобы кто-то ковырялся в браузере и использовал любые потенциальные слабые места. Одно простое место для размещения - это просто одна папка над корнем вашего документа, то есть /core/
вместо /public_html/core/
. После того, как вы переместите его, вам нужно будет обновить следующие детали конфигурации:
-
core/config/config.inc.php
(измените$modx_core_path
переменную) -
/config.core.php
(в корне сайта) -
/connectors/config.core.php
-
/manager/config.core.php
- Таблица базы данных
modx_workspaces
(это необходимо только в более старых версиях MODX) - это лучше всего сделать, повторно запустив установку, как вы могли бы сделать при переносе MODX сайта с одного сервера на другой
Важно: Если вы переместите и / или переименуете ядро, вам также придется изменить путь к процессорам ($modx_processors_path
) в файле config.inc.php
, если он не определен относительно каталога ядра, поскольку каталог процессоров находится в основном каталоге.
Вы, вероятно, захотите продолжить и обновить другие пути, но просто имейте в виду, что как только вы закончите, вам следует перезапустить установку, чтобы убедиться, что все ваши пути корректны.
manager¶
Путь к Менеджеру - второй по важности шаг к изменениям. В конце концов, если кто-то увидит, что у вас есть хорошая страница входа в MODX по адресу https://yoursite.ru/manager/, не понадобится гений, чтобы понять, что вы используете MODX и грубые попытки взлома могут начаться.
Выберите случайно сгенерированный буквенно-цифровой фрагмент текста для использования в качестве нового каталога Менеджера. Для максимальной совместимости следует использовать только строчные буквы. Затем обновите файл core/config/config.inc.php
до следующего вида:
$modx_manager_path = '/home/youruser/public_html/r4nd0m/';
$modx_manager_url = '/r4nd0m/';
Перемещение Менеджера позволит избежать того, чтобы боты могли легко определить ваш MODX сайт, но все же возможно, что кто-то в конечном итоге сможет найти ваш новый каталог Менеджера (нелегко, но вполне возможно). Для еще более тщательного решения вы можете поместить URL-адрес Менеджера в совершенно другой домен, например $modx_manager_url`` = https://othersite.ru/r4nd0m/;
Это потребует, чтобы у вас было несколько доменов на вашем сервере, но преимущество здесь в том, что это действительно отсекает попытки взломать ваш сайт, потому что не будет ясно, связаны ли эти два домена, но потребуется гораздо больше работы системного администратора, чтобы заставить этот тип настройки работать.
Вы также можете заблокировать доступ к Менеджеру, настроив свой сервер и / или его брандмауэр, чтобы разрешить доступ к URL-адресу Менеджера с определенных IP-адресов. Например, если к вашему сайту имеют доступ только сотрудники в офисе, вы можете настроить сервер так, чтобы он отклонял запросы с IP-адресов за пределами офиса. Другой способ - поместить пароль .htaccess
в каталог Менеджера. Это будет означать, что пользователям придется вводить 2 отдельных пароля перед входом в Менеджер MODX. Возможно, это не удобно, но так надежнее.
connectors¶
Как и в случае с каталогом Менеджера выберите случайное буквенно-цифровое имя для каталога коннекторов, а затем обновите файл core/config/config.inc.php
, чтобы отразить новое местоположение, например
$modx_connectors_path = '/home/youruser/public_html/0therp4th/';
$modx_connectors_url = '/0therp4th/';
Как и в случае с Менеджером, он также потенциально может находиться в отдельном домене, однако, поскольку Менеджер использует коннекторы в качестве конечных AJAX точек, он должен находиться в том же домене, что и Менеджер, если вы также не разрешаете кроссдоменные запросы.
assets¶
URL-адрес ресурсов может быть изменен, но это изменение с самым низким приоритетом, поскольку любой, кто посещает ваш сайт, сможет изучить исходный HTML-код и увидеть пути к этому каталогу. Но все равно хорошо поменять, просто чтобы запутать любые попытки понимания, какой сайт перед взломщиком.
$modx_assets_path = '/home/youruser/public_html/4ssetsh3r3/';
$modx_assets_url = '/4ssetsh3r3/';
Опять же - это потенциально может существовать в другом домене (например, оптимизированном для обслуживания статического контента). Поскольку дополнительные пользователи устанавливают здесь свой javascript код для внутренних Компонентов, обычно он должен использовать один и тот же домен (источник), если вы не настроили кроссдоменные запросы. Вы можете использовать Источники файлов в MODX для размещения ваших внешних ресурсов или загрузок где угодно, поэтому обычно лучше всего хранить ресурсы в том же домене, что и Менеджер.
Отслеживание путей¶
После изменения всех этих путей сохраните новые местоположения в надежном месте (как и ваши пароли), а затем повторно запустите утилиту установки MODX, чтобы убедиться, что все установлено правильно.
Это сделает ваш сайт более безопасным, но обновление вашего сайта станет более сложным: вам придется объединять различные каталоги компонентов вместе для каждого следующего обновления MODX.
Изменение страницы авторизации¶
Вы также можете замаскировать страницу входа в систему своего Менеджера, чтобы не было очевидно, что вы используете MODX. См. Страницу в Пользовательские темы системы управления для получения дополнительной информации.
Изменение префиксов по умолчанию у базы данных¶
Лучше всего это сделать при первой установке MODX, но всегда полезно избегать значений по умолчанию и выбирать собственный префикс базы данных для ваших таблиц вместо префикса modx_
по умолчанию. Если хакер каким-то образом может выдавать произвольные команды SQL с помощью атаки SQL-инъекцией, использование настраиваемых префиксов таблиц значительно усложнит атаку.
Использование уникального имени для админа¶
Если ваше имя администратора сложно угадать, это замедлит любую попытку взлома методом перебора. Случайно сгенерированный набор символов обеспечит наиболее безопасное имя пользователя. Никогда не используйте имя, которое легко угадать (НИКОГДА не используйте имя пользователя, например admin
, manager
или имя, которое соответствует имени сайта - их слишком легко угадать). Помните, что большая часть взлома - это социальная инженерия - вы хотите, чтобы кто-то практически не мог угадать ваше имя администратора.
Принудительная политика паролей¶
Удалите со своего сайта всех неактуальных пользователей (например, если вы создали логин для разработчика при первой настройке сайта, обязательно деактивируйте этого пользователя после того, как его / ее работа будет завершена). Убедитесь, что каждый пользователь использует сложный пароль.
Настройка отдельной 404 страницы¶
Не указывайте в качестве 404 страницы просто вашу главную страницу. Настройте специальную страницу 404 (используйте Системную переменную error_page). Мы не хотим, чтобы наш сайт привлек к себе чрезмерное внимание, потому что сканер считает, что у вас есть страница на вашем сайте, а у вас ее нет. Например, если сканер ищет известную уязвимость на https://yoursite.com/malicious/hack, и запрос возвращается как HTTP 200
, то сканер может подумать, что у вас действительно есть этот уязвимый файл на вашем сайте, и он привлечет другие взломы или сканирование. Вы можете использовать надстройку браузера "Веб-разработчик" (или аналогичные) для просмотра заголовков страниц и проверки того, что 404-е на самом деле являются 404-ю.
Использование SFTP доступа¶
Никогда не используйте простой FTP
, это небезопасно! Если ваш сервер не поддерживает SFTP
или подключение через защищенную оболочку, вам лучше найти другой хост.
Добавление SSL сертификата в Менеджер¶
Отправлять имена пользователей и пароли открытым текстом - это глупо: любой глупый хакер с долей самоотверженности может их перехватить. Если безопасность является приоритетом, вы должны всегда обращаться к своему Менеджеру MODX через безопасное соединение (то есть через HTTPS). Пока вы это делаете, вы также можете решить обслуживать весь свой сайт через HTTPS
.
Если вы не знаете, как настроить сертификат, обратитесь к своему хостинг-провайдеру.
Есть разные варианты сертификатов.
Использование общего SSL сертификата¶
Некоторые хостеры предлагают общий SSL-сертификат для каждого сервера. Часто это уродливые URL-адреса, такие как server321.myhost.com/~myuser/manager/
, но они могут быть быстрым и простым решением.
Использование самоподписного сертификата¶
Самоподписные сертификаты не пользуются доверием браузеров (по уважительной причине), но это может быть жизнеспособным вариантом. Хотя это не доказывает вам, что вы разговариваете с правильным сервером, это разрешает шифрование связи. Подробнее о самозаверяющих сертификатах здесь.
Использование надлежащего сертификата¶
Подлинные сертификаты выдаются центрами сертификации, которые обычно взимают с вас деньги в зависимости от уровня проверки. Проверка домена - это простейший метод, который просто подтверждает, что у вас есть доступ к домену, для которого вы запрашиваете сертификат, обычно по электронной почте или путем загрузки файла на сервер. Расширенные сертификаты или сертификаты, подтверждающие организацию, также подтверждают, что вы являетесь тем, кем себя называете, и, как результат, обеспечивают повышенную безопасность для ваших посетителей.
Многие хостинг-провайдеры недавно начали предлагать бесплатные SSL-сертификаты с проверкой домена, которые можно установить одним нажатием кнопки.
Использование SSL для Менеджера¶
После того, как вы подключили свой сайт для использования HTTPS
, вам нужно заставить Менеджер использовать SSL
. Во-первых, вы должны подтвердить, что оба http://yoursite.com/ И https://yoursite.com/ работают должным образом. Обязательно проверьте наличие предупреждений о смешанном содержимом, которые означают, что на странице есть файлы, которые загружаются через незащищенное соединение.
Убедившись, что HTTPS
работает, теперь вы можете изменить файл .htaccess
(это верно для веб-сервера Apache
, для NGINX
и других нужно исправить соответствующий конфигурационный файл), чтобы все подключения к диспетчеру выполнялись через порт 443 (т.е. через безопасное соединение).
Внутри папки вашего Менеджера (которую вы к настоящему времени изменили из каталога по умолчанию /manager/
) вы должны отредактировать файл /manager/.htaccess
, чтобы установить безопасное соединение.
Вот пример файла .htaccess
, который нужно поместить в каталог вашего Менеджера:
RewriteEngine On
RewriteBase /
RewriteCond %{SERVER_PORT} 80
RewriteRule ^(.*)$ https://example.com/manager/$1
Проверьте это, попытавшись перейти по незащищенному URL-адресу, например http://yoursite.com/manager - если он не перенаправляет на HTTPS
, вам придется поправить .htaccess
.
Мониторинг вашего сайта и сервера¶
После того, как вы укрепите свой сайт и сервер, вам будет полезен регулярный мониторинг. Доступны некоторые бесплатные услуги. Лучшие из них будут отслеживать определенные файлы и сообщать обо всех внесенных в них изменениях. Если ваш index.php
внезапно изменился, это может означать, что кто-то злонамеренно его изменил.
Support the team building MODX with a monthly donation.
The budget raised through OpenCollective is transparent, including payouts, and any contributor can apply to be paid for their work on MODX.
Backers
Budget
$311 per month—let's make that $500!
Learn more