26 окт. 2012 г.

Пароль на сайт

Часто веб-интерфейсы различных сервисов не имеют авторизации по паролю. А данные которые они содержат весьма конфиденциальные. Покажу простой пример как можно запоролить любой сайт на apache.




Для начала нужно проверить настройки самого Apache, настройки могут отличаться в зависимости от версии.

Проверить наличие модуля mod_auth_basic.so (mod_auth.so) в папке /usr/lib/apache2/modules/ (C:\Program Files\Apache Group\Apache2\modules).
Проверить подключен модуль или нет, для этого проверьте наличие auth_basic.load в /etc/apache2/mods-enabled/ либо если его там нет, сделайте линк на него из папки /etc/apache2/mods-available/. Либо если настройки по другому, открыть файл /etc/httpd/conf/httpd.conf(C:\Program Files\Apache Group\Apache2\conf\httpd.conf) и убедиться в том что строка не комментарий:

В  файле apache2.conf (httpd.conf) проверить включены ли директивы:
здесь мы указали имя для файлов access (оставили по-умолчанию)
а здесь разрешили использование access файлов, так же это можно указывать непосредственно в настройках виртуального сервера.

Создадим файл .htaccess в папке с вами сайтом.

AuthUserFile <путь к файлу .htpasswd> #указывает путь к файлу авторизации
AuthType Basic #тип авторизации по паролю
AuthName <хоть что> #подсказка для пользователя
Require valid-user #проверка пользователя по файлу htpasswd
Order allow,deny #порядок чтиния из директив allow deny
Allow from <ip> #разрешить без пароля
Satisfy any #остальных проверить по паролю, если поставить all то пропустит только если ip разрешен в allow и пароль верен.

Теперь нужно сделать файл htpasswd. Для этого в apache есть утилита htpasswd.

[root@test]# htpasswd -cm .htpasswd admin 

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

В ответ, должен появится запрос на ввод пароля и его повтор. Если все правильно, то в завершении появится сообщение: Adding password for user admin. И в директории Apache2 появится файл .htpasswd, к котором будет находиться строка с именем пользователя и хеш-кодом его пароля. Для того, что бы в тот же файл .htpasswd добавить еще одного пользователя следует убрать ключ -c из команды запуска утилиты htpasswd.exe

[root@test]# htpasswd -m .htpasswd user

Теперь файлик нужно положить туда где вы прописали в файле htaccess.

2 комментария:

  1. Криптографическая стойкость htpasswd оставляет желать лучшего. Так что с этим надо осторожно. Примерно таким же образом Auth-Basic можно авторизовать пользователей не из локального файла, а LDAP-сервера.

    ОтветитьУдалить
  2. на самом деле есть еще возможность использовать модуль mod_auth_digest. там идет шифрование по md5.

    ОтветитьУдалить