Если какая-либо директория Web-сервера должна иметь особые права, то лучше создать в этом каталоге файл .htaccess. Разрешения, описанные в таком файле, действуют на директорию, в которой он находится. Рассмотрим пример содержимого файла .htaccess:
AuthType Basic
AuthName "By Invitation Only"
AuthUserFile /pub/home/flenov/passwd
Require valid-user
В данном файле для текущей директории указывается тип аутентификации Basic. Это значит, что будет использоваться окно для ввода имени и пароля. Текст, указанный в директиве AuthName, отобразится в заголовке окна. На рис. 7.2 приведен пример такого окна.

Рис. 7.2. Окно запроса имени и пароля
Директива AuthUserFileзадает файл, в котором находится база имен и паролей пользователей сайта. Последняя команда Requireв качестве параметра использует значение valid-user. Это значит, что файлы в текущей директории смогут открыть только те пользователи, которые прошли аутентификацию.
Вот таким простым способом можно запретить неавторизованный доступ к директории, содержащей секретные данные или сценарии администратора.
Как я уже говорил, в файле .htaccessмогут находиться и директивы типа allow from, которые мы рассматривали выше ( см. разд. 7.3 ).
Например, если нужно разрешить доступ только с определенного IP-адреса, то в файле может содержаться следующая строка:
allow from 101.12.41.148
Если объединить защиту директивой allow fromи требование ввести пароль, то задача хакера по взлому сервера сильно усложнится. Здесь уже недостаточно знания пароля, необходимо иметь конкретный IP-адрес для обращения к содержимому директории, а это требует значительных усилий.
Эти же параметры можно указывать и в файле httpd.conf, например:
AuthType Basic
AuthName "By Invitation Only"
AuthUserFile /pub/home/flenov/passwd
Require valid-user
Чем будете пользоваться вы, зависит от личных предпочтений. Мне больше нравится работать с файлом .htaccess, потому что настройки безопасности будут храниться в той же директории, на которую устанавливаются права. Но это небезопасно, потому что хакер может получить возможность прочитать этот файл, а это лишнее.
Использование централизованного файла httpd.confдает преимущества, т.к. он находится в директории /etc, которая не входит в корень Web-сервера и должна быть запрещена для просмотра пользователям.
Теперь нам предстоит узнать, как создаются файлы паролей и как ими управлять. Директива AuthUserFileдля хранения информации об авторизации использует простой текстовый файл, в котором содержатся строки следующего вида:
flenov:{SHA}lZZEBt.Py4/gdHsyztjUEWb0d90E=
В этой записи два параметра, разделенных двоеточием. Сначала указано имя пользователя, а после разделителя — зашифрованный по алгоритму MD5 пароль. Формировать такой файл вручную сложно и не имеет смысла, поэтому для облегчения жизни администраторов есть утилита htpasswd. С помощью этой программы создаются и обновляются имена и пароли для базовой аутентификации Web-сервером HTTP-пользователей.
Удобство программы состоит в том, что она может шифровать пароли и по алгоритму MD5, и с помощью системной функции crypt(). В одном файле могут находиться записи с паролями обоих типов.
Если вы храните имена и пароли в формате базы данных DBM (для указания этого в файле .htaccessиспользуется директива AuthDBMUserFile), то для управления БД нужно применять команду dbmmanage.
Давайте рассмотрим, как пользоваться программой htpasswd. Общий вид вызова команды выглядит следующим образом:
htpasswd параметры файл имя пароль
Пароль и имя файла являются необязательными, и их наличие зависит от указанных опций. Давайте посмотрим основные ключи, которые нам доступны:
□ -c— создать новый файл. Если указанный файл уже существует, то он перезаписывается, и старое содержимое теряется. Пример использования команды:
htpasswd -c .htaccess robert
После выполнения этой директивы перед вами появится приглашение ввести пароль для нового пользователя robert и подтвердить его. В результате будет создан файл .htaccess, в котором будет одна запись для пользователя robert с указанным вами паролем;
Читать дальше
Конец ознакомительного отрывка
Купить книгу