Привет, сегодня я расскажу как с помощью веб-сервера Apache у себя на компьютере (сервере) под управлением Ubuntu настроить аутентификацию и авторизацию.
Начнем пожалуй с того, что такое авторизация, и что такое аутентификация?
Аутентифика́ция (англ. Authentication) или подтверждение подлинности — процедура проверки соответствия субъекта и того, за кого он пытается себя выдать, с помощью некой уникальной информации, в простейшем случае — с помощью имени и пароля, в сложнейшем случае — с помощью проверки радужной оболочки глаза или отпечатков пальцев или ладони.
Авториза́ция (англ. authorization) — процесс, а также результат процесса проверки необходимых параметров и предоставление определённых полномочий лицу или группе лиц (прав доступа) на выполнение некоторых действий в различных системах с ограниченным доступом.
Настраивается аутентификация либо в файле httpd.conf, либо в файле .htaccess. При настройке посредством .htaccess, необходимо сначала убедиться, что директива AllowOverride в файле httpd.conf разрешает получение настроек из файла .htaccess. Директива AllowOverride может принимать следующие значения:
- AllowOverride None - файлы .htaccess игнорируются веб-сервером. Данное значение оказывает положительное влияние на быстродействие веб-сервера.
- AllowOverride All - обрабатываются все без исключения директивы из файлов .htaccess.
- AllowOverride AuthConfig - разрешены директивы аутентификации-авторизации, такие как AuthName, AuthType, AuthUserFile, AuthGroupFile, Require и т.д.
Теперь пробуем все это сделать, для этого нужно:
- Установить сервер Apache.
- Создать файл с паролями.
- Прописать защищаемый ресурс в конфигурацию Apache (в файле httpd.conf или в файле .htaccess).
- Создать файл для работы с группами и настроить групповой доступ (не обязательно).
Преступим!
Установим сам сервер:#aptitude install apache2
Расположение папок будет примерно таким:
/etc/apache2/ - тут лежат конфиги и необходимый нам httpd.conf
/var/www/ - (это и есть папка вашего сервера) там будет лежать файл вида Index.html, его стоит убить и создать там нужные вам папки, например:
#mkdir Public
#mkdir Secret
#mkdir Wordpress
и т.д.
Теперь проверим, введите в браузере
http://localhost/ должны увидеть следующее:

Создаём файл с паролями, для этого используется утилита
htpasswd, входящая в стандартную поставку сервера Apache. Запускается она так:
htpasswd -c [путь к файлу с паролями] [имя пользователя]Ключ -с используется при первом запуске htpasswd и указывает на то, что нужно создать новый файл, подробнее о htpasswd #man htpasswd. Если файл с таким именем уже существует - он будет затёрт.
Создаем файл:#htpasswd -c /home/booch/.htpasswd mothes
После запуска команды, будет дважды запрошен пароль для пользователя mothes, после чего будет создан файл /home/booch/.htpasswd
Вывод файла:#cat /home/booch/.htpasswd
mothes:Uj3b8m6b0Xssc (логин и хеш пароля)
Прописываем защищаемый ресурс в конфигурационный файл Apache (файл httpd.conf)Следующий код позволит нам защитить папку Secret от несанкционированного доступа. У меня после установки сервера, файл httpd.conf являлся пустым, по этому все необходимые настройки нужно вбивать самому, и делать это правильно!
Открываем файл httpd.conf:
#gedit /etc/apache2/httpd.conf
Вносим в него следующие строки:
AccessFileName .htaccess
<Files ~ “^.ht”>
Order allow,deny
Deny from all
</Files>
<Directory “/var/www/Secret”>
AuthType Basic
AuthName “Private Area”
AuthUserFile /home/booch/.htpasswd
Require valid-user
AllowOverride AuthConfig
Options Indexes FollowSymLinks
</Directory>
После внесения изменений в файл httpd.conf, необходимо перезапустить Apache:
#/etc/init.d/apache2 restart
Прописываем защищаемый ресурс в конфигурацию Apache (файл .htaccess) файл .htaccess должен храниться в той папке, которую мы защищаем.Так как мы хотим защитить папку Secret от постороннего вмешательства логином\паролем, создаем в ней файл:
#cd /var/www/Secret/
#touch .htaccess
далее ….
в этот файл вписываем следующее строки и сохраняем файл:
#gedit /home/booch/.htaccess
AuthType Basic
AuthName “Private Area”
AuthUserFile /home/booch/.htpasswd
Require user mothes
Перезапуститe Apache
#/etc/init.d/apache2 restart
Теперь проверьте:
введите в браузере
http://localhost/теперь вы будете видеть только те папки, которые мы не защищали, т.е.
- Public
- Wordpress
а папка Secret исщезнет из списка
чтобы получить к ней доступ введите в браузере:
http://localhost/Secretпосле чего вылетит окно с запросом ввода логина и пароля такого вида:

Чтобы настроить групповой доступ, необходимо создать файл
.htgroup такого вида:
admins: alex peps
users: anna dmitriyт.е. теперь мы имеем две группы: admins и users. В группу admins входят пользователи alex и peps, в группу users - anna и dmitriy.
Далее видоизменяем файл .htaccess приводя его к виду:
AuthType Basic
AuthName “Private Area”
AuthUserFile /home/booch/.htpasswd
AuthGroupFile /home/booch/.htgroup
Require group adminsDigest-аутентификацияDigest-аутентификация представляет собой более крутой и сложный вид аутентификации, чем Basic-аутентификация. Главным отличием здесь является то, что логин-пароль пользователя пересылаются через сеть не в открытом виде, а шифруются по алгоритму MD5. Это говорит о том, что если кто-то снифером перехватит пакеты где будет содержаться логин пароль, то в дампе увидит только кракозябры, при Basic-аутентификации будет виден пароль. Настройка Digest-аутентификации похожа на настройку Basic-аутентификации, т.е. необходимо:
- Создать файл с паролями.
- Прописать защищаемый ресурс в конфигурацию Apache (в файле httpd.conf или в файле .htaccess).
- Создать файл для работы с группами и настроить групповой доступ (не обязательно).Создаём файл с паролями.Файл паролей создаётся при помощи стандартной утилиты htdigest
htdigest -c [путь к файлу с паролями] [название секретной области] [имя пользователя]Ключ
-c указывается при необходимости создать новый файл, а обязательный аргумент [название секретной области] - это наименование секретной области, которое позже будет указано в директиве AuthName.
Делаем:
#htdigest -c /home/booch/.htpasswd personal mothes
После запуска команды нужно будет ввести пароль и его подтверждение. В результате, мы получим файл /home/booch/.htpasswd
Прописываем защищаемый ресурс в конфигурацию Apache (файл .htaccess)#gedit /var/www/Secret/.htaccess
AuthType Digest
AuthName personal
AuthUserFile /home/booch/.htpasswd
Require user mothes
Доступ к папке
http://localhost/Secret будет иметь только пользователь mothes.
Настраиваем групповой доступСоздаем файл .htgroups следующего содержания
admins: alex peps
users: anna dmitriyДалее видоизменяем файл .htaccess приводя его к виду:
AuthType Digest
AuthName personal
AuthUserFile /home/booch/.htpasswd
AuthGroupFile /home/booch/.htgroup
Require group adminsОригинал статьи:
http://www.linuxspace.org/archives/211