Skip to content

Задание №10: Web-аутентификация в Nginx (.htpasswd) ​

В данном задании на пограничном маршрутизаторе провайдера (ISP) настраивается механизм парольной защиты веб-ресурса HTTP Basic Authentication (auth_basic) для сайта web.au-team.irpo.

Для хранения учётных данных генерируется файл /etc/nginx/.htpasswd с хэшированным паролем пользователя WEB. При попытке открыть сайт клиенту выводится стандартное системное окно ввода логина и пароля; доступ к страницам предоставляется только после успешной проверки реквизитов.

Место выполнения

  • Настройка утилиты и генерация пароля выполняются под root на маршрутизаторе ISP (isp.au-team.irpo).
  • Проверка доступа через браузер выполняется с рабочей станции HQ-CLI.

1. Теоретическая справка: HTTP Basic Authentication ​

HTTP Basic Authentication — стандартный протокол аутентификации на уровне протокола HTTP (RFC 7617):

  1. При первом обращении клиента веб-сервер Nginx отправляет заголовок HTTP/1.1 401 Unauthorized с полем WWW-Authenticate: Basic realm="Restricted Access".
  2. Браузер перехватывает этот ответ и отображает встроенное модальное окно авторизации.
  3. Клиент вводит логин и пароль, которые кодируются в Base64 и передаются в заголовке Authorization: Basic ... при каждом последующем запросе.
  4. Nginx сверяет полученные данные с базой хэшей в файле .htpasswd.

Утилита htpasswd в ALT Linux ​

В ALT Linux утилита создания и управления файлами паролей поставляется отдельным пакетом apache2-htpasswd.

Ключ -c (Create) указывает утилите создать новый файл.

Осторожно с флагом -c

Флаг -c перезаписывает файл заново! Если в будущем потребуется добавить второго пользователя, команду вызывают без ключа -c (htpasswd /etc/nginx/.htpasswd User2), иначе предыдущие учётные записи будут стёрты.


2. Настройка файла паролей на маршрутизаторе ISP ​

Выполняем команды под пользователем root на машине ISP:

Шаг 1. Установка утилиты apache2-htpasswd ​

bash
# Устанавливаем пакет с утилитой htpasswd:
apt-get update && apt-get install apache2-htpasswd -y

Шаг 2. Генерация файла /etc/nginx/.htpasswd ​

Создаём файл паролей для пользователя WEB:

bash
htpasswd -c /etc/nginx/.htpasswd WEB

Консоль дважды запросит пароль:

text
New password: 
Re-type new password: 
Adding password for user WEB

Вводим пароль: P@ssw0rd (символы при вводе в целях безопасности не отображаются).

Неинтерактивный вариант создания (в одну строчку)

С помощью флага -b (batch) пароль можно передать сразу в командной строке:

bash
htpasswd -b -c /etc/nginx/.htpasswd WEB P@ssw0rd

Шаг 3. Проверка созданного файла паролей ​

Выводим содержимое файла:

bash
cat /etc/nginx/.htpasswd

Пример корректного вывода:

text
WEB:$apr1$k8x1a...$QZ0v4LpW7.h3k1j9L4m1q0

(Пароль надёжно защищён криптографическим хэшем APR1 / MD5-Crypt).


Шаг 4. Проверка конфигурации и перезапуск веб-сервера Nginx ​

Директивы auth_basic "Restricted Access"; и auth_basic_user_file /etc/nginx/.htpasswd; были внесены в конфигурацию /etc/nginx/sites-available.d/r-proxy.conf в Задании №9.

Теперь, когда файл физически создан, тестируем и перезапускаем службу:

bash
# Проверяем синтаксис Nginx
nginx -t

# Перезапускаем веб-сервер для применения изменений
systemctl restart nginx

3. Проверка авторизации с рабочей станции HQ-CLI ​

Переходим на рабочую станцию HQ-CLI и открываем веб-браузер:

1. Проверка защищенного сайта web.au-team.irpo: ​

В адресной строке вводим:

text
http://web.au-team.irpo/

Что происходит:

  1. Браузер выводит диалоговое окно «Требуется аутентификация» (Restricted Access).
  2. Вводим реквизиты:
    • Имя пользователя: WEB
    • Пароль: P@ssw0rd
  3. Нажимаем Войти (Sign in).

Ожидаемый результат: страница успешно авторизуется и открывает корпоративный сайт Apache с логотипом и базой данных webdb!


2. Проверка открытого сайта docker.au-team.irpo: ​

В соседней вкладке браузера переходим по адресу:

text
http://docker.au-team.irpo/

Ожидаемый результат: сайт приложения tespapp из Docker-контейнера на BR-SRV открывается свободно, без каких-либо запросов логина и пароля.

Итог выполнения Задания №10

Парольная защита сайта web.au-team.irpo успешно активирована через Nginx Basic Auth, закрытый доступ открывается строго по логину WEB, а сайт docker.au-team.irpo остаётся общедоступным.

Работает на VitePress • Быстрый и удобный движок для документации