Как защитить паролем веб-каталоги в Apache с помощью файла .htaccess
Когда вы управляете онлайн-проектами, вам часто необходимо ограничить доступ к этому проекту, чтобы защитить его от внешнего мира. Для этого могут быть разные причины — например, вы хотите запретить сканерам поисковых систем доступ к вашему сайту, пока он еще находится на стадии разработки.
В этом уроке я покажу вам, как защитить паролем различные каталоги веб-сайтов на веб-сервере Apache. Есть много способов добиться этого, но мы рассмотрим два из них, которые наиболее часто используются.
Первый метод настраивает защиту паролем непосредственно в файле конфигурации Apache, а второй использует файл .htaccess.
Требования
Чтобы настроить защиту паролем для ваших веб-каталогов, вам потребуется:
- Рабочий веб-сервер Apache
- Директива AllowOverride AuthConfig должна быть включена в файле конфигурации Apache.
Настройка защищенного паролем каталога Apache
1. В этом руководстве мы будем защищать основной корневой каталог веб-страницы /var/www/html
. Чтобы защитить этот каталог, откройте конфигурацию вашего Apache:
---------------- On RedHat/CentOS based systems ----------------
vi /etc/httpd/conf/httpd.conf
---------------- On Debian/Ubuntu based systems ----------------
nano /etc/apache2/sites-available/000-default.conf
2. Найдите корень каталога документов Apache для /var/www/html и добавьте следующие элементы, как предложено:
В версии Apache 2.2
<Directory /var/www/html>
Options Indexes Includes FollowSymLinks MultiViews
AllowOverride All
Order allow,deny
Allow from all
</Directory>
В версии Apache 2.4
<Directory /var/www/html>
Options Indexes Includes FollowSymLinks MultiViews
AllowOverride All
Require all granted
</Directory>
3. Сохраните файл и перезапустите Apache, используя следующую команду:
--------------- On Systemd -------------------
systemctl restart httpd [On RedHat based systems]
systemctl restart apache2 [On Debian based systems]
--------------- On SysV init -----------------
service httpd restart [On RedHat based systems]
service apache2 restart [On Debian based systems]
4. Теперь мы воспользуемся командой htpasswd, чтобы сгенерировать имя пользователя и пароль для нашего защищенного каталога. Эта команда используется для управления файлами пользователя для базовой аутентификации.
Общий синтаксис команды:
htpasswd -c filename username
Параметр -c
указывает файл, в котором будет храниться зашифрованный пароль, а имя пользователя указывает пользователя для аутентификации.
5. Наш файл паролей должен находиться вне доступного через Интернет каталога Apache, чтобы он был хорошо защищен. Для этой цели мы создадим новый каталог:
mkdir /home/tecmint
6. После этого мы сгенерируем имя пользователя и пароль, которые будут храниться в этом каталоге:
htpasswd -c /home/tecmint/webpass tecmint
После выполнения этой команды вам придется дважды ввести пароль для нашего нового пользователя "tecmint"
:
После этого нам нужно будет убедиться, что Apache может прочитать файл «webpass». Для этого вам нужно будет изменить владельца этого файла с помощью следующей команды:
---------------- On RedHat/CentOS based systems ----------------
chown apache: /home/tecmint/webpass
chmod 640 /home/tecmint/webpass
---------------- On Debian/Ubuntu based systems ----------------
chown www-data /home/tecmint/webpass
chmod 640 /home/tecmint/webpass
7. На этом этапе наш новый пользователь и пароль готовы. Теперь нам нужно указать Apache, чтобы он запрашивал пароль при доступе к нашему целевому каталогу. Для этого создайте файл .htaccess в /var/www/html:
vi /var/www/html/.htaccess
Добавьте в него следующий код:
AuthType Basic
AuthName "Restricted Access"
AuthUserFile /home/tecmint/webpass
Require user tecmint
8. Теперь сохраните файл и протестируйте вашу настройку. Откройте браузер и введите свой IP-адрес или доменное имя в веб-браузере, например:
http://ip-address
Вам будет предложено ввести имя пользователя и пароль:
Введите имя пользователя и пароль, которые вы установили, чтобы перейти на свою страницу.
Дополнительные замечания
Если вы используете общий хостинг, скорее всего, у вас не будет доступа к файлу конфигурации Apache. Однако большинство хостинговых компаний по умолчанию включили параметр «Разрешить переопределить все». Это означает, что вам нужно будет только сгенерировать имя пользователя и пароль, а затем выбрать каталог, который вы хотите защитить. Это существенно облегчит вашу задачу.
Заключение
Я надеюсь, что этот урок был вам полезен и помог вам достичь вашей цели. Если у вас есть какие-либо вопросы или комментарии, пожалуйста, не стесняйтесь оставлять их в разделе ниже.