Joomla-Безопасность Нельзя создать 100 процентную защиту для сайта – это мнение по сути является верным. Пускай и так, но лучше быть максимально защищенным от наиболее распространенных атак и вирусов, чем ничего не делать. В этом материале раскроем свойства защиты файла htaccess для сайта: запрет доступа к админ-части Joomla, скрытие отображение расположения модулей и кое-что еще

В предыдущих материалах Блога можно было познакомится с приемами заметания следов , а также с первыми шагами защиты CMS Joomlа, в которых уже упоминались свойства файла htaccess для предотвращения хакерских атак:
########## Начинаем запись правил чтобы заблокировать основные эксплойты
#
# Блокируем любой скрипт пытающийся получить значение mosConfig через URL
RewriteCond %{QUERY_STRING} mosConfig_[a-zA-Z_]{1,21}(=|%3D) [OR]
# Блокируем любой скрипт пытающийся отправить любое дерьмо чере base64_encode по URL
RewriteCond %{QUERY_STRING} base64_encode.*(.*) [OR]
# Блокируем любой скрипт который содержит тег < script> в URL
RewriteCond %{QUERY_STRING} (<|%3C).*script.*(>|%3E) [NC,OR]
# Блокируем любой скрипт, который пытается установить глобальную переменную PHP через URL
RewriteCond %{QUERY_STRING} GLOBALS(=|[|%[0-9A-Z]{0,2}) [OR]
# Блокируем любой скрипт пытающийся изменить _REQUEST переменную через URL
RewriteCond %{QUERY_STRING} _REQUEST(=|[|%[0-9A-Z]{0,2}) [OR]
# Блокируем любой скрипт, который пытается установить CONFIG_EXT (баг в com_extcal2)
RewriteCond %{QUERY_STRING} CONFIG_EXT([|%20|%5B).*= [NC,OR]
# Блокируем любой скрипт, который пытается установить sbp or sb_authorname чере URL (баг simpleboard)
RewriteCond %{QUERY_STRING} sbp(=|%20|%3D) [OR]
RewriteCond %{QUERY_STRING} sb_authorname(=|%20|%3D)
# Отправляем все заблокированный запросы на главную с ошибкой 403 Forbidden!
RewriteRule ^(.*)$ index.php [F,L]
#
########## Заканчиваем запись правил чтобы заблокировать основные эксплойты

Это хорошо, если такие правила присутствуют в Вашем файле, но вот как еще можно с помощью файла htaccess повысить безопасность сайта?

Принцип «Двойного доступа»

Данный принцип построен на взаимной и тесной работе двух файлов — .htaccess и .htpasswd которая создаст дополнительную защиту административной части сайта посредством сервера Apache.

После проделанных мероприятий, которые подробно рассмотрим ниже, при попытке входа в админ-панель сайта, пользователь увидит «лжеокно» ввода логина и пароля. Почему лжеокно? Потому, что это окно ввода не является окном CMS Joomla, а от сервера Apache. Не станем более кружить вокруг да около, а перейдем к ингредиентам, которые нужны для создания защиты:
1. Явки и пароли доступа к FTP сайта;
2.Файл .htaccess. Если такого файла нет в наличии, можно создать пустой документ с именем .htaccess;
3. Файл .htpasswd. Только что созданный пустой текстовый файл с названием .htpasswd — подойдет;
4. Программа для генерации паролей по алгоритму MD5.

Если все перечисленные выше ингредиенты для приготовления защиты под рукой, приступим. Что нам предстоит сделать? Создать файл с зашифрованными по алгоритму MD5 паролями — .htpasswd и файл .htaccess с необходимыми нам данными и поместить эти файлы в папку «administrator».

Файл .htpasswd и генерация логина и пароля в шифре MD5

Прежде чем перейти к работе с только что созданным файлом htpasswd нужно описать его роль в этой защите. И так, этот файл будет содержать информацию для сравнения. То есть, после того как пользователь ввел данные в окне сервера Apache они (логин и пароль) будут проверятся с содержанием файла htpasswd и если они совпадают, то пользователь получает доступ к административной части сайта.

Для генерации логина и пароля перейдем к он-лайн сервису — генератор файлов .htaccess и .htpasswd (аналогичное можно сделать при помощи программы — htpasswd.exe или на этой странице Блога ) где необходимо ввести будущие права доступа к нашему сайту. В качестве примера, в поле логин я ввел admin и пароль 12345. В поле «путь к файлу .htpasswd» необходимо ввести название папки, которую нужно закрыть. В нашем случаи – это папка administrator.

Генерация логина и пароля в MD5 для файла .htpasswd

Генерим. Перед нами открывается окно со следующими данными:

Генерация логина и пароля в MD5 для файла .htpasswd

Содержание окна под заголовком «Файл .htaccess:» необходимо разместить в нашем файле htaccess а строка под названием «Файл .htpasswd:» (введенный логин – admin и пароль 12345 /зашифрованный он имеет вид aaAN1ZUwjW7to /) предназначена для файла htpasswd.

Файл .htaccess

Строки, которые мы получили в результате генерации устанавливаем в файл .htaccess.
AuthUserFile /DocumentRoot/administrator/.htpasswd – размещение файла .htpasswd, а DocumentRoot — это прямой путь Хоста, который можно посмотреть в configuration.php сайта
AuthGroupFile /dev/null
AuthName «Запароленная зона»
AuthType Basic
<limit GET POST>
require valid-user
</limit>

Что они обозначают? Вот о этом подробнее.
AuthUserFile administrator/.htpasswd (путь к файлу .htpasswd);
AuthGroupFile /dev/null (необходимо в том случаи, когда доступ необходим для группы людей);
AuthName «Запароленная зона» (сообщение, которое будет выводиться пользователю в окне ввода логина и пароля. Этот текст предназначен для того, чтобы пользователю было понятно, куда он пытается получить доступ);
AuthType Basic (это тип аутентификации. В нашем случае, нужно оставлять базовую аутентификацию);
require valid-user (означает, что доступ разрешен всем, кто прошел проверку. Если указать required admin, то доступ будет открыт только пользователям с именем админ и тд.).

Ну вот, защита приготовлена. Теперь самое время проверить ее работу. В адресной строке браузера набираем путь к административной части нашего сайта и в появившимся окне вводим логин – admin и пароль 12345. Да, да! Именно пароль 12345, а не набор символов — aaAN1ZUwjW7to После введенных данных перед нами откроется стандартное окно для входа CMS Joomla, в котором снова нужно будет ввести уже данные доступа для самой уже системы.

Аутентификация сайта посредством Apache

Создание защиты доступа в админку через Панель управления Хостинга

Сегодня, большинство Хостинг компаний предоставляют возможность создания аналогичной (за своей работой) защиты с помощью Панели управления. Попробуем настроить защиту сайта непосредственно в Панели управления (на примере — ISPmanager).

В категории «World Wide Web» панели ISPmanager находим — Ограничение доступа, жмем. Перед нами открывается пустое окно, в котором необходимо Создать (в правой верхней части экрана) условия для ограничения.

Защита доступа в админку через Панель управления  хостинга

На первой стадии предстоит ввести путь к папке, которую предстоит закрыть (в нашем примере – это папка administrator), второй – указать пользователей, которые будут иметь доступ к этой папке. Для этого снова смотрим в правую верхнюю часть экрана и находим кнопку — «Пользователи», нажав на которую переходим на пустую страницу.

Защита доступа в админку через Панель управления хостинга

Пустая? Ведь у нас еще нет пользователей и вот, чтобы их создать (указать их логин и пароль) – снова справа вверху жмем «Создать».

Защита доступа в админку через Панель управления хостинга

Скрываем просмотр модулей шаблона через ?tp=1 с помощью файла .htaccess

Для определения места расположения модуля на страницы в адресной строке браузера, к домену сайта нужно добавить ?tp=1 Но это также позволяет определить, что сайт управляется Joomla(ой), что сразу открывает перед «недоброжелателем» план взлома сайта. Попробуем спрятать эту «подсказку» с помощью файла .htaccess

Многие могут возразить, что скрыть вывод позиции модулей можно многими путями, но поскольку в этом материале мы познаем возможности файла .htaccess, то попытаемся устранить эту «подсказку» именно этим путем. Да и этот путь устранения очень прост, поскольку в файл необходимо добавить вот такие строки:
##### Start ?tp=1 prevention######
RewriteCond %{QUERY_STRING} tp=(.*)
RewriteRule ^(.*)$ index.php [F,L]
##### End ?tp=1 prevention ######

Ну вот, теперь любопытству «недоброжелателя» придется искать другие способы, поскольку после ввода ?tp=1 ему будет открываться главная страница сайта.