Страницы

15 марта 2013

Основы безопасности сайта на Joomla

Теперь, что же можно сделать для обеспечения безопасной работы на CMS Joomla? Для начала убедитесь, что в настройках системы включена опция использования встроенного SEF компонента для генерации "человекопонятных" ссылок. Иначе, кажущаяся на первый взгляд абракадабра в адресной строке, может подсказать хакеру путь к компонентам CMS, да и вообще, сам факт использования Joomla.

Как скрыть информацию про вид и версию CMS?
Для того, чтобы скрыть систему управления контентом, на которой построен сайт, некоторые советуют удалить из HTML-кода следующую запись:
<meta name="generator" content="Joomla! - Open Source Content Management"/>
Для этого, по адресу libraries/joomla/document/html/renderer.php, я удалил строку
$buffer.=$tab.'<meta name="generator"content="'.htmlspecialchars($generator).'"/>'.$lnEnd;

После такой редакции, действительно, в исходном коде сайта исчезла вышеприведенная запись. Буду считать, что это помешает злоумышленнику автоматически искать и определять сайты на CMS Joomla, ибо определить вид системы в частном порядке не составляет труда, например, с помощью браузерного расширения Wappalyzer. Хотя, справедливости ради, замечу, что и это расширение уже снизило вероятность правильного определения системы до 50%. Значит все работает!

Уязвимость системы регистрации пользователей
Считается, что при взлома можно использовать систему регистрации пользователей для сброса-восстановления логина и пароля входа в административную панель Joomla. Некоторые предлагают удалить файл "reset.php" который находиться в директории components/com_users/models, отвечающий за восстановление пароля. Я же, пока, поступил еще проще - снял с публикации модуль регистрации и поставил полный запрет прав доступа к папке "com_users" (000). Все-равно посещаемость сайта не большая, а комментарии можно и без регистрации оставлять.

Установка безопасных прав доступа
На отдельные папки я поставил следующие права:
templates 555
tmp 705
logs 705
на файлы в корневой директории - 444

Кстати, посмотреть права доступа ко всем каталогам и файлам в ряду, можно в последней колонке cPanel - "Perms".

Как поставить пароль на страницу входа в панель управления Joomla?
Обязательно обратите внимание на файл "error.php", который находится в папке "logs" коневого каталога сайта. Там вы можете найти много интересного, проверить пытались ли подобрать логин и пароль для входа в панель, и если да, то с какого ip-адреса.

Чтобы предотвратить последующие попытки взлома, можно запретить доступ на страницу входа в админпанель не авторизованным пользователям, поставив пароль на папке "administrator". Делается это с помощью файлов ".htaccess" и ".htpasswds", которые пишутся вручную или создаются на одном из online-сервисов. И если первый файл нужно поместить в ту папку, к которой он применяется, то второй, в принципе, в каком угодно каталоге. Однако, полезным будет расположить файл с паролями вне папки с содержимым сайта, что позволит защитить его от злоумышленников. Теперь важно определить полный путь к файлу ".htpasswds" на сервере и указать его в параметре "AuthUserFile" файла ".htaccess". Если вы используете панель управления хостингом cPanel, то полный путь до административной папки будет:   
"/home/Ваш логин пользователя/public_html/administrator/"
Но в этом случае, вам даже не придется указывать где-либо путь, так как панель cPanel предоставляет возможность автоматического создания файлов ".htaccess" и ".htpasswds". Сделать это можно в блоке безопасности панели, по ссылке "Защита директорий паролем". Выбрав нужную папку, вы создаете авторизованного пользователя, который будет иметь доступ к данному каталогу. Теперь, чтобы попасть на страницу входа в админпанель Joomla надо будет ввести логин и пароль этого пользователя. По сути, выходит двойная авторизация, сначала вы получаете доступ к странице входа, а затем уже входите в саму админпанель, причем как имена пользователей так и их пароли для этих двух авторизаций могут быть различны.

Как скрыть страницу входа в панель управления Joomla?
Адрес страницы входа в панель управления Joomla стандартный, и очевидным является то, что это не совсем есть хорошо. Есть и такие пользователи, которые даже не меняют логин для входа по умолчанию - "admin". В этом случае остается подобрать лишь пароль, что уже облегчает задачу. Если вы запаролили  страницу входа по вышеописанному методу, то все-равно известно, по какому адресу она находится, и теоретически можно взломать двойную защиту аутентификации.

Поменять адрес входа в панель можно с помощью популярных плагинов, которые позволяют ввести дополнительный ключ в этот адрес. Однако, еще один установленный плагин, это дополнительные возможные уязвимости безопасности, глюки, сбои, конфликты и прочие минусы. Попробую обойтись без них. Проанализировав статьи в интернете на эту тему и немного поэкспериментировав, пришел к выводу, что переименование папки "administrator" или же всех файлов "index.php" в этой папке, если и скроет панель, то войти в нее все-равно не удастся. Но можно еще больше усилить защищенность панели, не меняя ее адреса, дописав в том же файле ".htaccess" такой код, запрещающий доступ со всех ip-адресов, кроме указанного:

order deny, allow
deny from all
allow from 127.0.0.1

Если у вас динамический ip-адрес, можно разрешить доступ с ip-диапазона подсети, прописав 127.0.

Таким образом, я применил двойную защиту страницы входа в панель управления Joomla - через аутентификацию по ip-адресу и авторизованного пользователя. Только после этого можно будет ввести логин и пароль для входа непосредственно в админпанель.

Комментариев нет:

Отправить комментарий