Используя стандартные модули Apache, возможно запрашивать логин и пароль у пользователя при попытке доступа к определенной странице или каталогу. Доступ будет разрешен, если логин и пароль присутствуют в специальном файле. Речь пойдет о аутентификации типа Basic (по умолчанию установленная)
Создание файла с паролями
Файл с учетными данными обычно называется .htpasswd и располагается в каталоге, доступ к которому необходимо ограничить. По умолчанию в Apache запрещен доступ ко всем файлам, которые начинаются на .ht, так что файл с паролями, как и файл .htaccess, не сможет быть прочитан ни одним посетителем вашего сайта.
В каждой строке файла хранятся данные об одном пользователе. Логин и зашифрованный пароль разделены двоеточием. Пример:
admin:FCSMnYLiUI8ih vasya:lncw5eZHCSKjk
Для шифрации паролей применяется утилита htpasswd, которая поставляется в комплекте с Apache. Чтобы создать новый файл с данными о
пользователе admin, введите команду:
$ htpasswd -c .htpasswd admin
Для добавления в уже существующий файл используется команда:
$ htpasswd .htpasswd vasya
После запуска, утилита попросит дважды ввести пароль и, если они совпадут, данные о пользователе будут добавлены.
Ограничение доступа
Теперь, чтобы включить запрос на авторизацию при попытке доступа, необходимо внести изменения в файл конфигурации или в файл .htaccess. Напоминаю, что использование файлов .htaccess нежелательно, так как снижает производительность сервера.
Пример:
<Directory "/var/www/itsecforu.ru/admin"> AuthType Basic AuthName "Administrative zone" AuthUserFile /var/www/itsecforu.ru/
/admin/.htpasswd Require valid-user </Directory>
Вам необходимо будет изменить путь к каталогу (Directory), путь к файлу с паролями (AuthUserFile) и строку-приглашение (AuthName), которая выдается на экран пользователю при запросе пароля. Значение других директив вы можете узнать из документации Apache.
После внесения изменений в файл конфигурации, не забудьте перезагрузить Apache.
Примечания
В данном примере приведено наиболее простой вариант ограничения доступа. В целом же возможность системы аутентификации Apache гораздо шире. Например, пользователи могут быть разбиты на группы, пароли хранится в базе данных или запрашиваться по специальному протоколу с других серверов. Рекомендуем ознакомится со всеми возможностями в документации Apache.
В примере показан простейший типа аутентификации — Basic. Следует знать, что в этом случае пароль передается от клиента к серверу в открытом, не зашифрованном виде. Если это вас не устраивает, вы можете использовать другой вид аутентификации или протокол HTTPS.
В следующих записях расскажу о pam и krb аутентификации Apache и Postgresql