Доступ к http серверу по паролю

logoИногда жизненно необходимо ограничить доступ к hhtp серверу или какой либо директории этого сервера. Это делается с помощью настроек в файле .htaccess. Данный файл с настройками помещается в требуемую директорию сайта или в корень сайта.

Чтобы файл .htaccess нормально отрабатывал необходимо в конфиге apache httpd.conf включить директиву AllowOverride на значения All или AuthConfig.

  • AllowOverride none – файлы .htaccess игнорируются веб-сервером.
  • AllowOverride All – обрабатываются все директивы из файлов .htaccess.
  • AllowOverride AuthConfig – разрешены директивы аутентификации-авторизации, такие как AuthName, AuthType, AuthUserFile, AuthGroupFile, Require и т.д.

В конфиге httpd.conf также должны присутствовать строки


AccessFileName .htaccess
<Files ~ "^\.ht">
    Order allow,deny
    Deny from all
    Satisfy All
</Files>

После внесения изменений в httpd.conf не забудьте перезапустить сервер apache.

Basic аутентификация.

Давайте разберемся на примере файла .htaccess


AuthName "Private area. Access denied."
AuthType Basic
AuthUserFile "/usr/local/apache/conf/passwords"
require user user1 user2 user3

Немного поясню..

  • AuthName  - запрос авторизации, слова можете выдумать свои :)
  • AuthType Basic - тип аутентификации базовый, пароль по сети передается в открытом виде.
  • AuthUserFile - указание файла, где хранятся связка имя пользователя пароль (пароль хранится в зашифрованном виде)
  • require user - какие пользователи могут авторизовываться. Ведь иногда бывает так что не всем пользователям из списка можно разрешать доступ к чему-то

Создаем файл связки имя пользователя - пароль. Делается это с помощью команды, которая входит в состав apache сервера - htpasswd. Первый раз файл с паролем создаем с ключем "-с", в дальнейшем это делать не надо, иначе перетрете файл.


#htpasswd -c /usr/local/apache/conf/passwords mik
#New password:
#Re-type new password:
#Adding password for user mik

В следующий раз для добавления пользователей используйте команду


#htpasswd -n user2
New password:
Re-type new password:
user2:IUqTwlxNkMHSg

и копируете получившийся результат в новую строку файла паролей.

Опция "require valid-user" воспринимает всех пользователей из списка паролей.

Можно еще сделать доступ по группам. Для этого необходимо создать файл для групп, например с названием groups. Структура файла должа быть такой


 group1: user1 user2
 group2: user3 user4

теперь мы имеем две группы group1 и group2 с перечислением пользователей в каждой из групп.

Файл .htaccess для авторизации по группе только по group1 выглядит так:


AuthName "Private area. Access denied."
AuthType Basic
AuthUserFile "/usr/local/apache/conf/passwords"
AuthGroupFile "/usr/local/apache/conf/groups"
Require group group1

Требуется авторизация

Чуть не забыл, можно не создавать файл .htaccess а прописывать все это внутри httpd.conf. Например так


<Directory "/usr/local/apache/htdocs">
  AuthType Basic
  AuthName "Private area. Access denied."
  AuthUserFile "/usr/local/apache/conf/passwords"
  AuthGroupFile "/usr/local/apache/conf/groups"
  Require valid-user
  AllowOverride All
  Options Indexes FollowSymLinks
</Directory>

Не забывайте перезапускать apache после изменений.

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

Это более продвинутый и сложный тип авторизации. Связка имя пользователя - пароль передается по сети в зашифрованном виде, что затрудняет перехват и ее расшифровку. Единственное, что надо от apache - это поддержка модуля mod_auth_digest. Если вы собираете apache сами, то собирать надо с ключем --enable-auth-digest.

Все остальное как и в basic авторизации. Немного отличается создание связки имя пользователя - пароль. Здесь еще надо указывать секретную область. Делается все это с помощью команды htdigest.



# ./htdigest -c /usr/local/apache/conf/dpasswords private mik
Adding password for mik in realm private.
New password:
Re-type new password:

Здесь private - указываем секретную область, mik - имя пользователя.

Файл .htacces будет выглядеть так:


AuthType Digest
AuthName private
AuthUserFile "/usr/local/apache/conf/dpasswords"
Require user mik

Для авторизации по группам структура файла groups такая же как и в basic и точно также задается переменной AuthGroupFile. Можно также прописывать авторизацию в конфиг httpd.conf.

Статья просмотрена 11 306 раз
Запись опубликована в рубрике Http, Сервера с метками , , , , . Добавьте в закладки постоянную ссылку.

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

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

Можно использовать следующие HTML-теги и атрибуты: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>