Безопасность сайта |
![]() |
Добавил(а) microsin |
В сети, без сомнения, очень много материала по теме, поэтому здесь записал только то, что пригодилось самому. [Основные уязвимости] Сначала о том, как предотвратить возможный взлом сайта на Joomla. Перечислю основные причины уязвимости. Причина №1: файл конфигурации доступен по записи Причина №2: открытые по записи директории [На что стоит обратить внимание при хостинге] Не буду распространяться о тривиальных вещах типа "нужно использовать хорошие пароли, защищенный шелл, правильно настраивать права на каталоги и файлы" и т. д. Расскажу про несколько неожиданные вещи, те грабли, на которые сам наступил. Обычно (стандарт де-факто) платный хостинг использует веб-сервер Apache. При его использовании меня всегда удивляло обилие файлов .htaccess, которые лежали в большинстве уже имеющихся по умолчанию каталогов сайта. Кроме того, в установке Joomla почти во всех каталогах лежат практически пустые файлы-заглушки index.htm. Поначалу я не обращал на эти файлы внимания, пока не начал создавать систему каталогов для размещения файлового архива. В мои планы входило только следующее: Я, как обычно, подключался клиентом ftp (вездесущий Total Commander), беспечно создавал каталоги и клал туда файлы. Но один раз, введя в браузере ссылку не на файл, а просто на каталог, я с удивлением обнаружил, что Apache услужливо предоставляет средство просмотра всех папок и файлов моего архива!.. Это совсем не входило в мои планы - в папках я мог положить также и приватную информацию, которую нежелательно видеть посторонним. И только теперь мне стало ясно назначение файлов-заглушек .htaccess и index.htm - они блокируют просмотр содержимого папки http-сервера. Блокировка у этих файлов несколько отличается друг от друга. В файл .htaccess нужно прописывать параметры доступа, и он позволяет гибко настроить доступ к содержимому папки. Но чаще достаточно просто положить в папку файл index.htm, который будет показываться, когда пользователь наберет ссылку в браузере, указывающую на папку. Если файл index.htm в папке есть, то содержимое папки показано не будет, отобразится только код файла index.htm. Можно оставить этот файл пустым (тогда браузер просто покажет белое поле), а можно выполнить что-то более полезное - например, показать сообщение типа "Извините, доступ сюда запрещен" или сделать простую переадресацию [1] на главную страничку сайта. [Простой способ фильтрации по IP с помощью файла .htaccess] Можно некоторые особенно важные ссылки (например, доступ в админку) блокировать по IP-адресу. Например, можно в папке, где лежит файл админки (administrator/index.php) создать файл .htaccess с таким содержимым: Deny from all Allow from 78.46 allow from 32.101.72.112 Если Ваш IP, с которого Вы пытаетесь открыть админку по ссылке наподобие http://имя_домена/administrator/index.php (т. е. файл, который находится в каталоге administrator, где лежит этот файл .htaccess), не соответствует этим правилам (IP не начинается на 78.46, или не равен 32.101.72.112), то Apache сразу заблокирует доступ с сообщением "Forbidden You don't have permission to access /administrator/index.php on this server.". [AdminExile] Ссылку по умолчанию на логин в админку (http://имя_домена/administrator) в целях безопасности лучше заменить на секретную, чтобы затруднить взлом и подбор пароля злоумышленником. Это позволяет сделать плагин System - AdminExile. Работает это следующим образом: - Ссылка http://имя_домена/administrator теперь отключена. Чтобы попасть на страницу логина в админку, в адресной строке браузера нужно набрать специальную секретную ссылку, она настраивается через секретное слово URL Access Key. Только после ввода секретной ссылки отобразится стандартная форма логина и пароля в панель управления Joomla (Админка). Очевидно, что при такой защищенной авторизации практически невозможно получить нелегальный доступ к админке сайта Joomla, так как нужно знать, кроме логина и пароля администратора, еще и секретную ссылку, и ввести её дважды. Настраивается плагин AdminExile стандартным способом, через меню Расширения -> Плагины. Зайдите в свойства плагина AdminExile, и блоке Настройки -> Параметры плагина -> URL Access Key укажите секретное слово, которое будет участвовать в формировании секретной ссылки. Например, если указать слово sekretnyvhod, то получите секретную ссылку http://имя_домена/administrator/index.php?sekretnyvhod. Проверьте также параметр Redirect URL, он должен быть установлен в {HOME} - при этом все неправильные попытки входа будут редиректиться на главную страницу сайта. [Ссылки] 1. Автопереадресация на другой URL. |