На этапе инсталляции системы
1) Обязательно меняйте префиксы таблиц базы данных (advanced дистрибутив MODX), это создаст проблем хакеру использующему SQLi.
По умолчанию при установке MODX префикс указан: modx_ - меняйте его на что-нибудь персональное, например:
- revo_ (не самый оригинальный вариант)
- mmm_
- sd_
- ivan_
- cmf_
- #@!_
Потому, что когда через слабозащищённые модули принимающие информацию вводимую пользователем вам будут пихать SQL инъекции, в первую очередь будут долбить в modx_users
2) Переопределяйте пути к папкам:
- /manager/
- /connectors/
- /core/
Опция переопределения путей имеется в дистрибутиве MODX типа advanced, в traditional такой опции нет. Это именно те места, где хакеры будут искать уязвимые скрипты и будут стараться обращаться к ним напрямую. Большую опасность представляет даже не папка /manager/, а /connectors/.
На уже действующей системе
Можно закрыть к пикантным разделам доступ по IP адресу, если вы заходите всё время только с определённых адресов. Это серьёзно усилит вашу оборону.
Содержимое файла .htaccess тривиально (гуглится надёжно).
RewriteEngine Off Order deny,allow deny from all Allow from 159.198.14.84 # home Allow from 160.198.14.84 # work Allow from 161.198.14.84 # cafe
Соответственно будет защищено всё, что лежит в одной папке с этим файлом и глубже. Такой файлик можно спокойно класть в /manager/, /connectors/ и /core/. Разве что персонально для /core/ можно запретить прямое обращение к php файлам, добавив:
IndexIgnore */* <Files *.php> Order Deny,Allow Deny from all </Files>
эта мера совершенно не помешает в качестве "перестраховаться".
Но если Вы часто обращаетесь к админке своего сайта из разных мест, ездите с ноутбуком по клиентам, конференциям, то задачу можно усложнить. Давать доступ или по IP или по базовой аутентификации через .htpasswd
Для /manager/ и /connectors/
RewriteEngine Off Order deny,allow Deny from all AuthName "htaccess password prompt" # здесь нужно указать абсолютный путь к файлу .htpasswd # он вполне может быть общим для всех сайтов на одном хостинге # файл .htpasswd нужно отдельно генерировать, об этом далее в статье AuthUserFile /home/askapache.com/.htpasswd AuthType Basic Require valid-user Allow from 127.0.0.1 Allow from 192.168.1.1 Satisfy Any
Для /core/
IndexIgnore */* <Files *.php> Order Deny,Allow Deny from all </Files> Order deny,allow Deny from all AuthName "htaccess password prompt" AuthUserFile /home/askapache.com/.htpasswd AuthType Basic Require valid-user Allow from 127.0.0.1 Satisfy Any
У этого подхода две стороны медали.
Плюсы: Вы получаете требуемую мобильность. Дополнительный пароль не надо вводить в местах, ip которых вы внесли в разрешённые.
Минусы: У злоумышленника удалённого от вас - всё таки остаётся возможность подобрать пароль и получить доступ к вашим "интимным местам"
Генерация htpasswd
Если у Вас есть ssh-доступ на сервер (доступ к командной строке сервера), то Вы можете воспользоваться утилитой htpasswd. Синтаксис команды таков:
htpasswd -c /full/path/.htpasswd имя_пользователя
После ввода команды будет запрошен пароль и просьба его повторить. В результате будет создан новый файл .htpasswd или же дополнен старый, содержащий логин и зашифрованный пароль. Если Вы хотите добавить новых пользователей, то следует запустить команду с ключом:
htpasswd -m .htpasswd имя_пользователя
В результате в существующий файл с паролями будет добавлена новая строка с именем пользователя и паролем.
Если у Вас нет доступа по ssh, а вероятно только по ftp, то для генерации файла htpasswdможно воспользоваться любым онлайн генератором, например htaccesstools
Общие советы
Изучите систему управления правами доступа MODX. Давайте контент-менеджерам прав ровно столько, сколько им нужно, не больше, со временем если понадобится - добавите.
И в принципе регулярно проверяйте журналы ошибок на предмет подозрительного и кто у вас там вообще на сайте админами числится, а то бывают случаи появляются админы с e-mail'ами типа: willfuckyourmodxrevolutionagain@gmail.com (хер там, больше не выйдет )))
P.S.
Почему я написал эту статью? В ночь с 5 на 6 марта взломали один из сайтов моих клиентов. Сайт на MODX. Хочу заметить, что этого бы не случилось, если бы они обновляли ПО своего сайта регулярно. На поиск истории взлома, удаление вредоносного кода, обновление ПО и построение дополнительной защиты у меня ушло в сумме 1,5 часа - не так и много по сравнению с вредом, который мог быть нанесён злоумышленником. Не ленитесь - сделайте.
Update 01.04.2014
написал скрипт-обманку пишущий в журнал попытки перебора админок разных CMS.
Удачи!