22.13. Парольная защита отдельных каталогов

Проблема
Требуется ограничить доступ не ко всему домену, а лишь к некоторым страницам
конкретного каталога. Допустим, имеется веб-страница UserDir (см. раздел 22.12),
которую необходимо защитить, потому что хранящиеся в ней рабочие документы
не должны быть доступны для любопытных коллег. Страница должна быть доступ на только для вас или для других доверенных пользователей — как это сделать?
Решение
В Apache предусмотрены простые методы аутентификации пользователей для
работы с каталогами: Basic и Digest. Это весьма упрощенная форма безопасности;
не применяйте ее для страниц, содержащих особо важную информацию, или на
любых веб-сайтах, имеющих отношение к коммерции или информации о клиен тах. Аутентификация Basic и Digest хорошо подходит для локальной сети, когда
вы всего лишь хотите оградить любопытных коллег от того, что их не касается.
В режиме Basic пароли пересылаются в виде простого текста и тривиально пе рехватываются, поэтому в этом рецепте используется режим Digest с. применени ем хеширования MD5.
Настройка аутентификации пользователей для каталогов состоит из двух эта пов: создания секции <Directory> в файле httpd.conf и создания файла паролей ути литой htpassword.
Допустим, вы хотите хранить свои списки контактов, расписания и т. д. по адре су http://oreiLly.net/~michael. При этом информация будет храниться в реальном
каталоге /var/www/users/michael. Сначала создайте запись <Directory> в httpd.conf:
<Directory /var7www/users/michae1>
AuthType Digest
AuthName "Michael's Protected Files"
AuthUserFile /etc/httpd/htpasswd/passwords
Require user michael
</Directory>
Затем создается файл паролей:
$ htpasswd -с /etc/httpd/htpasswd/passwords michael
New password:
Re-type new password:
Adding password for user michael
Ключ -с является признаком создания нового файла. Теперь только пользова тель Michael (а также каждый, кто знает пароль Michael) сможет открыть каталог
http://oreilly.net/~michaeL
Комментарий
Обратите особое внимание на директиву AuthName. Все каталоги с одинаковым
значением AuthName не требуют повторной аутентификации после первого входа.
Это экономит время, но также создает уязвимость в системе безопасности, поэто му будьте внимательны с выбором этого атрибута.
Что делать, если у вас нет доступа к httpd.conf, но вы не хотите постоянно приста вать к администратору Apache с напоминаниями об обновлениях и изменениях?
Пусть администратор настроит для вас возможность использования файлов. htaccess,
и вы сможете управлять доступом самостоятельно. Файл .htaccess предназначен
для настройки доступа к каталогам (а не к доменам).
Администратор должен внести следующую запись в httpd.conf (в этом приме ре всем пользователям /var/www/users разрешается использование файлов .htaccess):
<Directory /var/www/users>
AllowOverride AuthConfig
</Directory>
Не забудьте перезапустить Apache после изменения httpd.conf. В дальнейшем
пользователь Michael может создать файл .htaccess с директивами, приведенны ми в подразделе «Решение». Файл должен находиться в каталоге верхнего уров ня (в нашем примере/var/www/users/michael).
Аутентификация Digest обладает дополнительным преимуществом: она дает
лишний повод избавиться от браузера Internet Explorer, в котором она не поддер живается для URL с использованием строк запросов вида
http://catsearch.atomz.com/search/catsearch/?sp-a=spl000a5a9&sp-f=IS0-8859-l&spt=
cat_search&sp-q=apache&search=Go
Статические URL (вида http://linux.oreilly.com) обычно нормально работают
в IE, так что с простыми, статическими страницами эта Проблемане возникает.
Впрочем, IE в любом случае представляет большую угрозу для безопасности сис темы и не поддерживает многие веб-стандарты, но если вам нужна еще одна при чина избавиться от этой программы, то она у вас есть.
Если вы хотите выбрать единый браузер для смешанной сети, то Mozilla от лично поддерживает аутентификацию Digest, работает па множестве разных плат форм, соответствует стандартам W3C и обладает массой полезных возможнос тей, отсутствующих в IE: вкладки, осмысленные cookie, подавление всплывающих
окон, управление паролями и т. д.
См. также
Authehtication, Authorization and Access Control (http://localhost/manual/howto/
auth.html); Apache SSL/TLS Encryption (http://local.host/manual/ssl.); домашняя
страница W3C (http://www.w3.org).