Парольная защита в Apache

Защита директорий средствами Apache сервера

Содержание

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

 

 

Файл .htaccess

Файл .htaccess - это простой текстовый файл, в котором содержится путь к файлу .htpasswd и текст приветствия для пользователя.

Например:

AuthName "For registered users only"
AuthUserFile /pub/site.com/.htpasswd
AuthType Basic
<Limit GET POST>
  require valid-user
</Limit>

В директиве AuthName указывается текст который показывается пользователю при вводе им логина и пароля.

Директива AuthUserFile содержит путь к файлу с логинами и паролями пользователей .htpasswd. Вы должны указывать здесь полный путь к этому файлу на вашем сервере. Узнать полный путь к вашему сайту на сервере вы можете у вашего хостера. Или попробовать использовать SSI, чтобы узнать это самостоятельно (при условии, что SSI разрешено на вашем сайте). Скопируйте файл ssitest.shtml на ваш сайт и откройте его в браузере. Этот файл должен иметь расширение SHTML (не SHTM) иначе директивы SSI не будут обработаны Apache сервером. SSI команда

<!--#echo var="DOCUMENT_ROOT"-->

должна замениться Apache сервером на полный путь к корню вашего сайта. Если вставить SCRIPT_FILENAME, то вам покажется полный путь к текущему просматриваемому файлу, содержащему эту SSI директиву. Узнав полный путь к файлу .htpasswd - вы указываете его в директиве AuthUserFile.

Узнать более подробно о возможностях файла .htaccess вы можете в этой статье: ".htaccess" и "Как узнать полный путь на сервере?"

Файл .htpasswd

Структура этого файла еще проще. Каждая строчка содержит информацию об одном пользователе Apache сервера.

JohnButler:DsVNh9Oj.WTAs
Client12:cl/4k7z97YxWk
Boss:VT761B6b0Iio2

Первая строка содержит информацию о пользователе 'JohnButler' с паролем 'nightmoon'. Пароль здесь хранится в зашифрованном виде.

Пароль генерируется специальной утилитой htpasswd, входящей в инсталляционный пакет Apache сервера. Но если вы собираетесь управлять большим количеством пользователей, разбивать их по группам, периодически менять им пароли и права, то вам поможет специальная бесплатная программа Htpasswd Generator.

Обратите внимание, что при шифровании пароля задействуется случайная составляющая и поэтому один и тот-же пароль может быть зашифрован поразному.

Возможно для больших веб-сайтов вы захотите ограничить доступ к различным директориям для разных пользователей. Вы можете это сделать, разместив файлы .htaccess в каждой директории которую вы собираетесь защитить и создав несколько файлов с паролями .htpasswd. Каждый файл .htaceess должен ссылаться в директиве AuthUserFile на свой файл паролей .htpasswd.

Загрузка файла на веб-сайт

Важно, чтобы эти файлы не имели расширений и имели правильные имена. Прежние версии Windows работали некорректно с файлами, начинающимися с . (точки) и без расширений. Если это ваш случай, то вы можете использовать локально любое имя файла, а закачав их на сервер по FTP, переименовать их непосредственно на сервере.

Какие программы существуют для работы с файлами .htpasswd, .htgroup и .htaccess?

Существуют несколько программ для работы с этими файлами.

Если у вас мало пользователей, то вы можете использовать утилиту htpasswd из состава Apache сервера для генерирования паролей.

Также можете использовать программу с более мощными возможностями Htpasswd Generator. Она имеет графическую оболочку для редактирования всех трех файлов (.htpasswd, .htgroup и .htaccess). Существует бесплатная Lite версия для новичков и версия Professional для опытных администраторов.

Также рекомендуем вам попробовать мощную программу для управления и настройки Apache серверами ApacheConf.