Аутентификация



Защита сайта средствами сервера Apache является одним из самых простых и в то же время достаточно надежных способов.

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

Аутентификация — процесс, с помощью которого проверяется, что некто является именно тем, за кого он себя выдает. Как правило, проверка включает в себя ввод имени и пароля.

Самый простой и доступный способ защиты — базовая аутентификация.

При обращении посетителя в защищаемый каталог сервер Apache в ответ на запрос посылает заголовок с кодом 401 ("authentication required header").

Браузер посетителя принимает заголовок с кодом 401 и выводит окно с полями для ввода имени пользователя и пароля. После ввода имени и пароля эти данные отсылаются назад серверу, который проверяет имя пользователя и пароль. Если все верно, то посетитель получает доступ к ресурсу. Кэширование параметров аутентификации (имя, пароль, область действия) обычно осуществляет только в пределах одного сеанса.

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

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

Web-сервер Apache поддерживает еще один вид защиты — digest-аутентификацию. При digest - аутентификации пароль передается не в открытом виде, а в виде хеш-кода, вычисленного по алгоритму необратимого шифрования MD5. Поэтому пароль, перехваченный при сканировании трафика, практически невозможно подобрать, особенно если он имеет большую длину. Для использования digest-аутентификации на сервере должен быть установлен специальный модуль — mod_auth_digest.

Для того чтобы защитить сайт, нужно выполнить следующую последовательность действий: создать файл с паролями, переписать его на сервер, создать файл .htaccess с директивами аутентификации и тоже переписать его на сервер в защищаемый каталог.

Создание файла с паролями
Файл с паролями создается утилитой htpasswd.exe. Если на локальной машине установлен Web-сервер Apache, то данная утилита находится в подкаталоге bin корневого каталога сервера.

Для работы с утилитой htpasswd.exe необходим интерфейс работы с командной строкой. Интерфейсом работы с командной строкой обладают такие программы, как Far, Windows Commander и т. п. Рассмотрем работу с командной строкой с помощью утилиты cmd, которая входит в поставку Windows 2000/ХР. В меню Пуск выберите команду Выполнить, введите в строку ввода cmd и нажмите кнопку ОК. В результате будет открыто окно утилиты cmd.

Далее необходимо перейти в каталог, где находится утилита htpasswd.exe. Если сервер Apache установлен в каталог c:/Apache2, тогда следует ввести команду:
cd    ../../apache2/bin

После того как осуществлен переход в каталог bin, следует ввести команду Для создания файла с паролем:
htpasswd    -cm    .htpasswd    admin

Здесь: ключи утилиты htpasswd.exe. Ключ с указывает на необходимость создания нового файла с паролями. Если файл с таким именем уже существует, он будет перезаписан. Ключ m определяет шифрование по алгоритму MD5;
htpasswd — имя файла с паролями (можно использовать любое имя);
admin— имя посетителя, для которого создается пароль.

В ответ на введенную команду утилита htpasswd.exe предложит ввести пароль и его подтверждение.

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

Для того чтобы в тот же файл .htpasswd добавить сведения еще об одном пользователе, следует убрать ключ -с из команды запуска утилиты htpasswd.exe:
htpasswd     -m    .htpasswd    admin

Если файл с паролями не был создан, то, возможно, некоторые ключи утилиты не поддерживаются в текущей операционной системе. Например, иногда не поддерживается ключ -т. Чтобы посмотреть ключи и параметры работы утилиты, следует ввести команду htpasswd.ехе /?.

Итак, файл с паролями создан. Теперь необходимо переместить его на сервер. Файлы с паролями желательно располагать выше корневого каталога сайта, где к нему нельзя получить доступ из окна браузера.
Если это невозможно, то файлы с паролями следует обязательно защитить, например, с помощью директив файлов .htaccess:
deny from    all 

Созданный файл .htaccess с директивами запрета доступа следует поместить в тот каталог, где находится файл с паролями.

Файл с паролем создан и защищен от несанкционированного доступа. Теперь необходимо создать файл .htaccess, который будет определять параметры аутентификации.

Пример файла .htaccess
AuthType    Basic
AuthName    "Access denied. Only for administrator!"    AuthGroupFile    /usr/host/mysite/group    AuthUserFile    /usr/host/mysite/.htpasswd    require    group    admins

Для защиты каталога используются директивы:

AuthType — тип используемой аутентификации. Для базовой аутентификации эта директива должна иметь значение Basic;
AuthName— имя области действия аутентификации. Текст, помогающий посетителю понять, куда он пытается получить доступ. Например, может быть написано: " Access denied. Only for administrator!";
AuthGroupFile — путь к файлу групп, если он существует;
AuthUserFile — путь к файлу с паролями (.htpasswd);
Require — одно или несколько требований, которые должны быть выполнены для получения доступа к закрытой области.
Рассмотрим директивы AuthUserFile И AuthGroupFile подробнее. В них прописываются абсолютные пути к соответствующим файлам от корня сервера. Относительные пути работать не будут!

Если защита доступа тестируется на локальной машине в операционной системе Windows и в путях к файлам есть пробелы, то пути к файлам следует заключить в двойные кавычки, например:
AuthUserFile    "с:/web sites/.htpasswd"

Директива Require определяет, кому разрешен доступ к закрытой области. Например:

require valid-user — разрешен доступ всем прошедшим проверку;
require user admin moder contenter — разрешен Доступ только посетителям с именами admin, moder и contenter. Естественно, они должны пройти аутентификацию;
require group admins — разрешен доступ всем пользователям из группы admins.
Если к защищаемой области сайта должна иметь доступ большая группа людей, то удобно объединить пользователей в группы и разрешать доступ, определяя принадлежность посетителя к группе.

Формат файла групп очень прост. Это текстовый файл, каждая строка кото¬рой описывает отдельную группу. Первым в строке должно идти название группы с двоеточием. А затем через пробел перечисляются посетители, входящие в группу.

Пример файла групп:
admins:     admin moder    contenter 
users:     guest    user    maxim

В Группу admins входят посетители c именами admin, moder и contenter, а в группу users — посетители с именами guest, user и maxim.

Разрешение доступа всем пользователям, прошедшим авторизацию:
AuthType    Basic
AuthName    "Accesd denied.  Only for administrator!"     AuthUserFile    /usr/host/mysite/.htpasswd    require    valid-user
AuthType    Basic
AuthName    " Accesd denied.  Only for administrator!"    AuthUserFile    /usr/host/mysite/.htpasswd    require    user    admin    root

AuthType     Basic
AuthName    " Accesd denied. Only for administrator!"
AuthUserFile    /usr/host/mysite/.htpasswd
AuthGroupFile    /usr/host/mysite/group
require    group     admins

AuthType    Basic
AuthName    " Accesd denied. Only for administrator!"
AuthUserFile    /usr/host/mysite/.htpasswd
require    valid-user 
Добавлено: 13 Сентября 2013 02:31:57 Добавил: Андрей Ковальчук Нравится 0
Добавить
Комментарии:
Нету комментариев для вывода...