🌐 Как защитить паролем каталог с аутентификацией .htpasswd на Nginx

Мануал

Как ограничить доступ к каталогу  /app/ на Nginx?

 Как настроить парольную защиту каталога с аутентификацией Nginx .htpasswd в Linux или Unix-подобных системах?

Нам нужно защитить различные каталоги или конечные точки на Nginx.

Например, я часто защищаю паролем и ограничиваю доступ с помощью IP-адреса, пока мой проект не будет готов к запуску.

В этом руководстве объясняется, как защитить паролем каталоги или URL-адреса, такие как /app/, на веб-сервере Nginx, работающем в Linux или Unix-подобных системах.

Как защитить паролем каталог с аутентификацией Nginx .htpasswd

Порядок действий следующий:

  1. Откройте приложение терминала
  2. Войдите на свой сервер с помощью команды ssh (ssh user @ ec2-cloud-server-ip)
  3. Отредактируйте файл nginx.conf и добавьте директивы конфигурации HTTP basic auth: auth_basic “Restricted Access Only”;
  4.  Убедитесь, что вы настроили файл .htpasswd: auth_basic_user_file /etc/nginx/.htpasswd;
  5. Создайте новый файл .htpasswd и добавьте первое имя пользователя и пароль: htpasswd -c /etc/nginx/.htpasswd user
  6. Перезагрузите сервер Nginx: nginx -s reload

Давайте подробно рассмотрим все команды и примеры для настройки аутентификации по паролю на Nginx.

Шаг 1. Установите зависимости, необходимые для настройки аутентификации по поролю на Nginx.

Вам необходимо установить команду htpasswd.

Он не является частью веб-сервера Nginx.

Но это зависимость, необходимая для ограничения доступа с помощью базовой аутентификации HTTP в соответствии с вашим дистрибутивом Linux / Unix.

Следовательно, введите команду:

Debian/Ubuntu Linux используя apt  ##
sudo apt install apache2-utils
## Fedora/RHEL 8.x используя dnf ##
sudo dnf install httpd-tools
## CentOS/RHEL 7.x используя dnf ##
sudo yum install httpd-tools
## Alpine Linux используя apk ##
sudo apk add apache2-utils

Шаг 2 – Отредактируйте конфигурацию Nginx

Отредактируйте /etc/nginx/nginx.conf или файл конфигурации виртуального домена, например файл www.itsecforu.ru.conf:

location / {
    try_files $uri $uri/ /index.php?$query_string;
    auth_basic          "ADMIN Login";
    auth_basic_user_file /etc/nginx/.htpasswd-itsecforu.ru;
}
Теперь защитите каталог /app/:
location /app/ {
    auth_basic          "Restricted and Password Protected App";
    auth_basic_user_file /etc/nginx/.htpasswd-itsecforu.ru;
}

Используйте команду htpasswd для создания нового файла /etc/nginx/.htpasswd-itsecforu.ru следующим образом:

# htpasswd -c {/path/to/.htpasswd-file} {userName}
# htpasswd -c /etc/nginx/.htpasswd-itsecforu.ru admin

Хотите создать дополнительных пользователей ?

# htpasswd /etc/nginx/.htpasswd-itsecforu.ru user2
# htpasswd /etc/nginx/.htpasswd-itsecforu.ru user3

Давайте убедимся, что файл содержит имена пользователей и зашифрованные пароли следующим образом, используя команду cat:# cat /etc/nginx/.htpasswd-itsecforu.ru

Проверьте сервер на наличие ошибок:

# nginx -t

Если нет ошибок, перезагрузите или перезапустите веб-сервер nginx, введите:

# nginx -s reload

Шаг 5 – Протестируйте настройку

В вашем браузере введите URL и убедитесь, что появляется окно ввода учетных данных.

Защита паролем каталогов Nginx и ограничение IP-адреса/CIDR

Мы можем настроить безопасность нашего веб сервера, объединив базовую аутентификацию Nginx HTTP с ограничением доступа по IP-адресу или CIDR.

Отредактируйте файл конфигурации Nginx:

location / {
    try_files $uri $uri/ /index.php?$query_string;
    satisfy all;
    auth_basic          "ADMIN Login";
    auth_basic_user_file /etc/nginx/.htpasswd-itsecforu.ru;
    allow 202.54.1.2;
    allow 10.8.1.0/24;
    deny all;
}
Добавить комментарий