Оригинал статьи https://blog.sedicomm.com/2019/12/12/kak-zashhitit-parolem-veb-katalogi-v-apache-s-pomoshhyu-fajla-htaccess/
Как защитить паролем веб-каталоги в 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 /путь/к/файлу/.htpasswd имя_пользователя
Общий синтаксис команды:
# htpasswd -c filename username
Параметр -c указывает файл, в котором будет храниться зашифрованный пароль (хешированый), а имя пользователя — имя для аутентификации.
5. Наш файл паролей должен быть расположен вне веб-каталога Apache, чтобы он был хорошо защищен. Для этого мы создадим новый каталог:
# mkdir /home/tecmint
6. После этого мы сгенерируем ваше имя пользователя и пароль, которые будут храниться в этом каталоге:
# htpasswd -c /home/sedicomm/webpass sedicomm
После выполнения этой команды вам нужно будет дважды ввести пароль для нашего нового пользователя “sedicomm”:
После этого нам нужно убедиться, что Apache может прочитать файл «webpass». Для этого вам нужно изменить владельца этого файла с помощью следующей команды:
---------------- On RedHat/CentOS based systems ----------------
# chown apache: /home/sedicomm/webpass
# chmod 640 /home/sedicomm/webpass
---------------- On Debian/Ubuntu based systems ----------------
# chown www-data /home/sedicomm/webpass
# chmod 640 /home/sedicomm/webpass
7. На данный момент наш новый пользователь и пароль готовы. Теперь нам нужно указать Apache запрашивать пароль при доступе к нашему целевому каталогу. Для этого создайте файл с именем .htaccess в /var/www/html:
# vi /var/www/html/.htaccess
Добавьте в него следующий код:
AuthType Basic
AuthName "Restricted Access"
AuthUserFile /home/sedicomm/webpass
Require user sedicomm
8. Теперь сохраните файл и протестируйте настройки. Откройте браузер и введите свой IP-адрес или имя домена в веб-браузере, например:
http://ip-address
Вам будет предложено ввести имя пользователя и пароль:
Введите имя пользователя и пароль, которые вы установили для перехода на свою страницу.
ополнительные замечания
Если вы используете виртуальный хостинг, скорее всего, у вас не будет доступа к файлу конфигурации Apache. Однако большинство хостинговых компаний по умолчанию включили опцию «AllowOverride All». Это означает, что вам нужно только сгенерировать имя пользователя и пароль, а затем выбрать каталог, который вы хотите защитить. Это значительно облегчает вашу задачу.
Спасибо за уделенное время на прочтение статьи о том, как защитить паролем веб-каталоги в Apache с помощью файла .htaccess!
Если возникли вопросы, задавайте их в комментариях.
Подписывайтесь на обновления нашего блога и оставайтесь в курсе новостей мира инфокоммуникаций!