Авторизация доступа средствами Web-сервера | Вебмастер DataLife Engine

Авторизация доступа средствами Web-сервера

Защита сайта средствами самого сервера Apache является одним из самых простых и в тоже время достаточно надежных способов. В этом случае Вам не нужно досконально продумывать стратегию безопасности, осуществлять ее проектирование и реализацию в коде. К тому же, для того, чтобы создать хорошую систему защиты нужно обладать достаточной квалификацией в этом вопросе. Используя встроенную защиту WEB-сервера Apache, Вы значительно упрощаете себе задачу — все, что Вы должны сделать — это выполнить несложную последовательность действий и Ваш сайт будет в достаточной мере защищен.

Базовая аутентификация

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

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

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

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

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

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

WEB-сайт и FTP-доступ к нему.

Права на создание файлов .htpaccess и организацию защиты с помощью них.

Утилита генерации паролей htpasswd.exe

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

В конфигурационном файле Apache (он именуется httpd.conf, а просматривать и редактировать его могут только администраторы web-сервера) есть параметр AccessFileName. Там указано имя файла, найдя который той или иной папке, Apache выполнит по отношению к ней указания, содержащиеся в этом файле. По традиции это имя — .htaccess, и именно таким оно установлено на всех серверах хостинга. В файл .htaccess можно поместить команды ограничения доступа к той папке, в которой это файл находится.

Выглядят эти команды так. Вначале указывается название защищенной зоны — AuthName. Именно это название будет впоследствии выводиться в запросе посетителю (рис. 1).

AuthName «Введите пароль»

AuthType Basic
ris2

Рис. 1. Запрос на вход в папку.

В следующем параметре AuthUserFile — указывается путь к файлу с логинами и паролями посетителей. Этот файл должен быть создан в особом формате, так как пароли в нем хранятся в зашифрованном виде. Для создания файлов с паролями применяются специальная программа htpasswd.exe. Если у вас установлен сервер Apache, то такую программу вы найдете в папке C:/Program Files/Apache Group/Apache2/bin/.

Для работы с программой htpasswd.exe необходим интерфейс работы с командной строкой. Интерфейсом работы с командной строкой обладают файловые менеджеры типа Far, Total Commander и т.п. Можно использовать стандартную утилиту cmd (командная строка), которая входит в поставку Windows 2000/XP.

После запуска программы htpasswd.exe, вам предложат ввести пароль. Необходимо будет ввести пароль два раза, если вы ввели пароль правильно, программа завершает работу и в папке, где находился файл htpasswd.exe будет создан файл .htpasswd.

htpasswd.exe -c .htpasswd admin

Здесь .htpasswd — имя файла паролей, admin — имя пользователя (логин).

Чтобы добавить новые логины и пароли в уже имеющийся файл, эту программу следует запускать без параметра -c. По традиции файл с паролями посетителей принято называть .htpasswd. Обычно Apache настраивается так, что файлы с именами .htaccess и .htpasswd невозможно просмотреть через Web — при такой попытке будет выдаваться лишь сообщение о запрещении доступа. Однако выполнение такой настройки (для этого надо указать несколько параметров в httpd.conf) — целиком на совести администраторов web-сервера.

Не будем полагаться на совесть администраторов и разместим файл .htpasswd выше корня сайта. То есть, если файлы вашего сайта расположены, например, в /home/xxx/htdocs/, .htpasswd нужно поместить в /home/xxx/.

AuthUserFile /pub/home/xxx/.htpasswd

require valid-user

Замечание:

Если это невозможно, то файлы с паролями следует обязательно защитить. Это можно сделать с помощью файлов .htaccess. Чтобы защитить файлы с паролями создайте файл со строками:

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

и положите его в ту директорию, где находится ваш файл с паролями. Теперь посетители сайта не смогут получить к нему доступ.

Обратите внимание, что путь к файлу паролей следует указывать абсолютный — то есть от корневого каталога сервера с указанием всего дерева каталогов. На серверах хостинга он обычно имеет вид /pub/home/имя_аккаунта/htdocs/admin/.htpasswd, а на вашем локальном компьютере зависит от местоположения web-сервера и его настроек, например, может выглядеть так: D:/work/localhost/www/admin/.htpasswd.

Замечание:

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

Итак, пожелав «запаролить» доступ к ресурсам какой-либо папки, создайте файл с именем .htaccess с вышеуказанными параметрами.

Замечание:

Удобно создавать файлы .htaccess с помощью встроенного редактора в файловых менеджерах Far, TotalCommander и т.п., а также в редакторе Блокнот.

После этого загрузите оба файла на свой сайт: .htaccess в закрываемую папку, а файл с паролями — в соответствии с прописанным в .htaccess путем к нему.

Вот и все. Теперь при попытке запроса любого ресурса из защищенной папки посетителю будет выдан стандартный запрос логина и пароля. Если логин и пароль совпадают с хранящимися в файле паролей (по умолчанию есть три попытки ввода), то доступ разрешается, если нет — средствами web-сервера выводится соответствующее сообщение (рис. 2).

ris5

Рис. 2. Сообщение сервера о запрете доступа.

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

  • Posted on 1. июля 2009
  • Written by admin
Оставить комментарий


Интересные материалы

Я где-то слышал, что проститутки Москвы обворожительнее и дешевле, взято отсюда .



Еще нет никаких комментариев.

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *