
Узнайте, как защитить каталог паролем с помощью базовой HTTP-аутентификации Apache. Этот метод позволит вам создать ограниченную область вашего сайта, для доступа к которой необходимо ввести имя пользователя и пароль.
Требования
- Облачный сервер под управлением Linux (CentOS 7 или Ubuntu 16.04).
- Установленный и запущенный веб-сервер Apache.
Создание файла паролей
Первым шагом будет создание файла паролей, который Apache будет использовать для проверки имени пользователя и пароля. Этот файл будет назван .htpasswd и помещен в безопасное место: /etc/apache2 на Ubuntu 16.04 и /etc/httpd на CentOS 7.
Команду htpasswd можно использовать как для создания файла паролей, так и для добавления в него записи. Для первого раза мы будем использовать флаг -c, чтобы создать файл и добавить в него имя пользователя jdoe:
- CentOS 7:sudo htpasswd -c /etc/httpd/.htpasswd jdoe
- Ubuntu 16.04:sudo htpasswd -c /etc/apache2/.htpasswd jdoe
Вам будет предложено ввести и подтвердить новый пароль для пользователя.
Добавление нового пользователя к существующему файлу
Чтобы добавить нового пользователя в существующий файл паролей, используйте ту же команду без флага -c. Например, чтобы добавить пользователя janedoe, выполните следующую команду:
- CentOS 7:sudo htpasswd /etc/httpd/.htpasswd janedoe
- Ubuntu 16.04:sudo htpasswd /etc/apache2/.htpasswd janedoe
Вам будет предложено ввести и подтвердить новый пароль для пользователя.
Включение ограничения каталога
Прежде чем ограничить директорию, необходимо настроить Apache на разрешение файлов .htaccess.
CentOS 7
Откройте для редактирования основной конфигурационный файл Apache с помощью команды:
sudo nano /etc/httpd/conf/httpd.conf
Прокрутите вниз до раздела <Directory> для «/var/www/html» и измените AllowOverride на All.
Сохраните и выйдите из файла. Затем перезапустите Apache, чтобы изменения вступили в силу:
sudo systemctl restart httpd
Ubuntu 16.04
Откройте основной конфигурационный файл Apache для редактирования с помощью команды:
sudo nano /etc/apache2/apache2.conf
Прокрутите вниз до раздела <Directory> для «/var/www» и измените AllowOverride на All.
<Directory /var/www/>
Options Indexes FollowSymLinks
AllowOverride All
Require all granted
</Directory>
Сохраните и выйдите из файла. Затем перезапустите Apache, чтобы изменения вступили в силу:
sudo systemctl restart apache2
Создание запрещенной области
Перейдите в каталог, который вы хотите защитить. Например:
cd /var/www/html/admin
Создайте файл с именем .htaccess и откройте его для редактирования:
sudo nano .htaccess
Поместите в этот файл следующее:
CentOS 7:
AuthType Basic
AuthName "Password Required"
Require valid-user
AuthUserFile /etc/httpd/.htpasswd
Ubuntu 16.04:
AuthType Basic
AuthName "Password Required"
Require valid-user
AuthUserFile /etc/apache2/.htpasswd
Проверка аутентификации
Чтобы проверить аутентификацию, зайдите на защищенный паролем URL в браузере. Вы получите всплывающее окно, которое попросит вас ввести имя пользователя и пароль для продолжения.
Если в вашем браузере установлен блокировщик всплывающих окон, вам нужно настроить его так, чтобы он разрешал всплывающие окна для этого домена.