Защити свою Joomla!
Случаи неправомерного доступа к сайту на Joomla следует пресекать на нескольких уровнях.
Пароли
Прежде всего – снизить вероятность хищения и использования злоумышленниками паролей для доступа в админку, ftp, панели управления хостингом. Правило простое: не следует хранить пароли в браузерах и ftp-клиентах. Для сокрытия адреса админки использовать AdminExile.
Так, один из моих сайтов брутфорсили через стандартный модуль входа, висящий во фронт-енде. Когда убрал модуль, начали ломиться в админку (сокрытие стояло, но секретная ссылка была простая – содержала имя домена, и ее подобрали). О брутфорсе узнал по мылу от компонента RSForm
(подробности о нем – чуть ниже). Поэтому секретную ссылку делаем по-настоящему секретной, а логин администратора меняем.
Уязвимости скриптов
Сам по себе движок обновляем после выхода очередной версии, это не сложно, но настоящую опасность представляют сторонние расширения. Для людей, знакомых с php и SQL, не составит труда проверить то, как обрабатываются данные перед тем, как будет сформирован и отправлен в БД запрос, существуют ли уязвимости в скриптах, нет ли дыр в логике, особенно в части разграничения уровня доступа. На античате устраивают подобную проверку кода, и стоит это немалые деньги.
Обычным администраторам Joomla остается лишь периодически следить за обновлениями и устанавливать лишь необходимый минимум, а также установить компоненты RSFirewall
и SEF
. SEF
поможет отрубить некоторые SQL-инъекции, а также частично скрыть определение движка по URL и метатегам. На античате так и написано: ищем уязвимые сайты по url их страниц.
sh404SEF
также имеет систему анти-флуда, которая поможет снизить нагрузку на сервер при dos-атаке и отрубить брутфорс. Если это не ddos-атака, и не используются прокси-сервера, конечно.
У RSFirewall
есть фишка – он запоминает состояние файлов на момент сканирования и способен предупреждать в случае их изменения.
Также поможет изучение статистики счетчиков посещений. Однажды я обнаружил нецелевой трафик любителей скачать бесплатно игры и кряки по адресам, которых не должно быть именно по счетчику. Статичные html-файлы лежали в одной из директорий сервера, а ссылки на них проставлялись на различных форумах.
В другой раз – ссылки на подобные файлы были уже вшиты в шаблон сайта index.php, вместе со ссылками на другие сайты, как на мои, расположенные на этом же shared-хостинге, так и другие, причем на этом же хостинге. У сторонних сайтов стояли обратные ссылки на мои. Вот такая вот сетка сайтов, устроенная любителем стричь бабло с платных СМС. Причина была не по моей вине, а хостинга, по их словам использовалась уязвимость в gd2
.
Поэтому делайте бекапы, следите за сайтами, а при взломе – уведомляйте хостера, проблема может быть не только у вас. Также добавьте сайт в вебмастер Яндекса, они пришлют уведомление о вредоносном коде на сайте. Гугл, кстати, мне не прислал. Вручную проверять можно через Вирустотал.
Защищаемся с помощью .htaccess
Копируем во все дирректории первого уровня (cache
, components
, images
, includes
, language
, libraries
, logs
, media
, modules
, plugins
, templates
, tmp
, tmp_path
, xmlrpc
, а также в свои созданные), кроме установочной и /administrator/
файл .htaccess
следующего содержания:
- .htaccess
<Files ~ ".(php)$"> Deny from all </Files>
Так мы отрубим выполнение всех php-скриптов, и шел, даже если его залили, не запустится. В корне сайта, а также в /administrator/
в .htaccess
пишем:
- .htaccess
<Filesmatch ".(php)$"> order deny,allow deny from all </Filesmatch> <Filesmatch "^index.php"> order allow,deny allow from all </Filesmatch> <Filesmatch "^index2.php"> order deny,allow allow from all </Filesmatch>
Суть та же, но разрешим выполнение index.php
и index2.php
, они – входные точки в Joomla.
После таких манипуляций может полететь капча (а я-то думаю: почему никто не регистрируется, позже меня в социальной сети просветили). Поэтому в директории, где лежит капча (это можно узнать, посмотрев атрибут src капчи), добавляем исключение, например:
- .htaccess
<Files "mycaptcha.php"> Allow from all </Files>
Также следует добавить исключения для других своих скриптов, например, для файла process.php, если прикручена система оплаты a1agregator. Чтобы запретить администрирование злоумышленникам даже в случае кражи пароля, ограничиваем доступ по ip, более подробно об этом, а также о настройке владельцев файлов читаем тут.