Защита форума Invision Power Board 2.1 с помощью .htaccess и .htpasswd

Статья рассказывает о дополнительной защите файлов и папок форума Invision Power Board средствами ограничений через файл .htaccess и организации проверки доступа с файлом .htpasswd.

1. Защита папок форума от внедрения файлов злоумышленниками.

В форуме IPB существуют папки, права доступа CHMOD к которым 777 (drwxrwxrwx). Например папка /uploads/, хранящая и пополняющаяся аватарами и прикрепляемыми файлами пользователей всегда доступна для записи. Именно эта папка чаще всего подвергается внедрению программ злоумышленников, эксплоитов. Как правило, эксплоиты пишутся злоумышленниками на языке PHP и Perl. Теперь рассмотрим простое, но надежное средство защиты от внедрения подобных программ.

Создадим файл .htaccess в папке /uploads/ со следующим содержимым:

<Files ~ "\.(php|php3|php4|pl|cgi)$">
    deny from all
</Files>

В первой строке мы запретили доступ к файлам с расширением *.php, *.pl, *.cgi и т.д. Можно добавлять любые другие типы файлов.
Строкой "deny from all" мы запретили доступ к файлам, с расширениями, которые указали выше.

Всё. Теперь для проверки можно загрузить по FTP в папку /uploads/ любой файл с расширением *.php (или с тем, что указывали в .htaccess). При заходе по адресу: http://domain.ru/forum/uploads/file_name.php (ссылку изменить на свои данные) сервер сообщит нам о запрете доступа к файлам такого типа.

Подобный защитный файл .htaccess универсален. Его можно с успехом применить в папках с правами доступа 777, таких как: /style_images/, /style_emotions/. Подобным .htaccess файлом можно ограничивать доступ к файлам в любой папке на сервере вне зависимости от прав папки и её принадлежности к форуму IPB.

2. Защита Админцентра форума дополнительной авторизацией с помощью .htaccess и .htpasswd.

Создание файла с паролями .htpasswd.

Файл с паролями создается утилитой htpasswd.exe. Если у вас на компьютере установлен сервер Apache, то данная утилита находится в директории с установленным Apache в подкаталоге bin. Используя интерфейс работы с Командной строкой, найдём файл htpasswd.exe в каталоге в веб-сервером Apache. Например, Apache установлен в папку Z:\usr\local\apache, то в Командной строке нужно ввести путь к папке /bin/. Для этого перейдем на диск Z, а затем пишем команду: "cd /usr/local/apache/bin".

Развернуть картинку с примером

Теперь нужно дать команду на создание файла с паролем. Вводим в командную строку следующее: "htpasswd -cm .htpasswd admin". В данном случае "admin" — логин администратора или пользователя, который будет запрашиваться. "-cm" — это ключи для утилиты. Ключ "с" — указывает, что необходимо создать новый файл с паролями. Если файл с таким именем уже существует, то он будет перезаписан. Ключ "m" — определяет шифрование по алгоритму MD5.

В ответ, должен появиться запрос на ввод пароля и его повтор. Если все правильно, то в завершении появится сообщение: "Adding password for user admin". В директории /bin/ появится файл .htpasswd, в котором будет находиться строка с именем пользователя и хеш-кодом его пароля.

Развернуть картинку с примером

Файл с логином и паролем создан. Далее рассмотрим пример файла .htaccess для защиты Админцентра форума.

Составление файла .htaccess.

Имея в распоряжении готовый файл .htpasswd с информацией о пользователе, мы можем написать ограничения в файл .htaccess в корневой папке с форумом. Рассмотрим пример по защите файла admin.php — Админцентра форума:

<Files admin.php>
    AuthName "Доступ только для администратора."
    AuthType Basic
    AuthUserFile /home/user/domain.ru/html/.htpasswd
    require valid-user
</Files>

В строку, начинающейся с "AuthUserFile" написать абсолютный путь до файла .htpasswd на сервере (относительный работать не будет).

Всё. Теперь, при запросе к файлу http://domain.ru/forum/admin.php (ссылку изменить на свои данные) сервер будет запрашивать авторизацию пользователя, информация (логин и пароль) о котором хранится в файле .htpasswd.

Развернуть картинку с примером

Примечание. На некоторых серверах требуется так же установить защиту на файл .htpasswd. На всякий случай в одной директории с файлом .htpasswd создаем файл .htaccess следующего содержания:

<Files .htpasswd>
    deny from all
</Files>

3. Готово!

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

Подобные варианты защиты с помощью файлов .htaccess и .htpasswd можно использовать не только к форуму IPB, но и к любым файлам и папкам на сервере. Успехов!


www.stabrovsky.ru/ipb/manual — Руководство составлено в помощь начинающим администраторам форумов IPB 2.1!