Оглавление

4.13. Защита содержимого папки паролем

Ограничить доступ к определенной папке можно с помощью следующих директив:
□ AuthType задает тип аутентификации. Параметр Basic указывает на базовую аутентификацию по имени пользователя и паролю:
   AuthType Basic
□ AuthName определяет текст, который будет отображен во всплывающем окне запроса:
   AuthName "Restricted area"
□ AuthUserFile указывает местоположение файла паролей;
□ AuthGroupFile определяет местоположение файла групп;
□ Require задает дополнительные требования, которые должны быть выполнены для предоставления доступа. Могут быть указаны следующие параметры:
• valid-user— доступ предоставляется любому пользователю, имя которого задано в файле, указанном директивой AuthUserFile, при условии правильно введенного пароля;

• users — доступ разрешается только указанным пользователям;
• groups — доступ разрешается только указанным группам пользователей.

 

Ограничить доступ к определенной папке можно двумя способами:
добавив код в файл конфигурации сервера (httpd.conf). При помощи раздела <Directory> необходимо указать путь к защищаемой папке:
   <Directory "C:/Apache2/htdocs/test">
   AuthType Basic
   AuthName "Restricted area"
   AuthUserFile "C:/Apache2/data/pass.conf"
   <Limit GET POST>
      Require valid-user
   </Limit>
   </Directory>
разместив в защищаемой папке файл .htaccess с такими директивами:AuthType Basic
   AuthType Basic
   AuthName "Restricted area"
   AuthUserFile "C:/Apache2/data/pass.conf"
   <Limit GET POST>
      Require valid-user
   </Limit>

 

На виртуальном хостинге доступен только второй способ, предполагающий использование файла .htaccess. Чтобы использовать этот файл на своем локальном компьютере, необходимо включить его поддержку в главном файле конфигурации, так как по умолчанию использование файла .htaccess запрещено. Для этого находим раздел
   <Directory "C:/Apache2/htdocs">
   .....
   </Directory>
Внутри раздела находим директиву
   AllowOverride None
и меняем ее значение на
   AllowOverride All

 

Сохраняем файл и перезапускаем сервер Apache, чтобы изменения вступили в силу. Затем открываем Notepads и набираем приведенный ранее код. Сохраняем набранный текст под названием .htaccess, предварительно создав папку (например, test) в C:\Apache2\htdocs. Создаем любой HTML-документ

и сохраняем его в папке test под именем index.html. Содержимое этого файла будет отображаться при успешном входе в папку.


Теперь создадим файл паролей. Для этого создадим папку data в C:\Apache2. Обратите внимание, мы будем сохранять файл вне корневого каталога документов сервера. Файл паролей не должен быть доступен через Web-интерфейс.


Для создания файла паролей (pass.conf) можно использовать программу htpasswd.exe, расположенную в папке bin (C:\Apache2\bin). Для выполнения программы необходима командная строка. Например, можно воспользоваться файловым менеджером Far (рис. 1). Запускаем Far и переходим в папку C:\Apache2\bin.

 

файловый менеджер FARРис. 1  Програма Far

 

В командной строке должно быть приглашение
   C:\Apache2\bin>
Убираем правую панель с помощью комбинации клавиш <Ctrl>+<F2>, затем левую с помощью <Ctrl>+<Fl> (можно убрать сразу обе панели, нажав <Ctii>+<0>). В строке приглашения набираем команду, которая создаст файл C:\Apache2\data\pass.conf и добавит в него информацию о пользователе userl:
 

       htpasswd -c C:\Apache2\data\pass.conf user1

 

Нажимаем клавишу <Enter>. В итоге появится приглашение ввести пароль:
   C:\Apache2\bin>htpasswd -c C:\Apache2\data\pass.conf user1 
   New password:

 

Вводим пароль (например, "pass1") и нажимаем <Enter>. Программа попросит повторить пароль:
   C:\Apache2\bin>htpasswd -c C:\Apache2\data\pass.conf user1 
   New password: *****
   Re-type new password:

 

Повторяем и нажимаем <Enter>:
   C:\Apache2\bin>htpasswd –c C:\Apache2\data\pass.conf user1 
   New password: *****
   Re-type new password: *****
   Adding password for user user1

 

Установка пароля

В итоге будет создан файл pass.conf в папке data со следующими данными:
   user1:$apr1$aHILz78R$WGtZzC8LKrlMoPednMPKv.
Как видим, пароль pass1 в этом файле не присутствует, точнее, присутствует в зашифрованном виде. Тем не менее, чтобы увеличить безопасность сервера, файлы с паролями следует сохранять в директориях, не доступных извне, как мы и сделали.

 

Попробуем теперь создать пароль для еще одного пользователя. Для этого в командной строке набираем:
   htpasswd -b C:\Apache2\data\pass.conf user2 pass2
Обратите внимание: вместо флага -с мы использовали флаг -b, а также указали пароль сразу после имени пользователя. Если использовать флаг -с, то файл будет перезаписан, и соответственно вся старая информация будет удалена. После нажатия <Enter> информация о новом пользователе и его пароле будет добавлена в конец файла pass.conf, который будет выглядеть так:
   user1:$apr1$aHILz78R$WGtZzC8LKrlMoPednMPKv.
   user2:$apr1$8b8txNZ1$WoIOkGnA.UjJaWOeOo7hK/

 

Открываем Web-браузер и в адресной строке набираем:
       http://localhost/test/

 

Если все сделано правильно, то при попытке открыть любой документ в этой папке будет выведено окно для ввода пароля (рис. 2).

 

запрос пароля

Рис. 2  Окно для ввода пароля

Примечания:
  • Не рекомендуется набирать пароли в командной строке, поскольку набранные таким образом команды сохраняются в истории командной строки в незашифрованном виде и могут стать доступными злоумышленникам. Поэтому нужно не лениться и набирать пароли в ответ на приглашение программы htpasswd.exe.
Комментарии принадлежат их авторам. Мы не несем ответственности за их содержание.
Отправитель Нити