Поиск по сайту:

Как настроить аутентификацию по паролю с помощью Nginx в Rocky Linux 9


Введение

При настройке веб-сервера часто есть разделы сайта, к которым вы хотите ограничить доступ. Веб-приложения часто предоставляют свои собственные методы аутентификации и авторизации, но сам веб-сервер может использоваться для ограничения доступа, если они неадекватны или недоступны. В этом руководстве вы защитите паролем ресурсы на веб-сервере Nginx, работающем на Rocky Linux 9.

Предпосылки

Для начала вам понадобится:

  • Доступ к серверной среде Rocky Linux 9 от пользователя без полномочий root с привилегиями sudo для выполнения административных задач. Чтобы узнать, как создать такого пользователя, следуйте руководству по первоначальной настройке сервера Rocky Linux 9.
  • Nginx установлен в вашей системе, следуя шагам 1 и 2 этого руководства по установке Nginx в Rocky Linux 9.

Шаг 1 — Создание файла паролей

Для начала вам нужно создать файл, в котором будут храниться ваши комбинации имени пользователя и пароля. Вы можете сделать это с помощью утилит OpenSSL, которые уже должны быть доступны на вашем сервере.

Если на вашем сервере установлен OpenSSL, вы можете создать файл паролей без дополнительных пакетов. Вы создадите скрытый файл с именем .htpasswd в каталоге конфигурации /etc/nginx для хранения комбинаций имени пользователя и пароля.

Вы можете добавить имя пользователя в файл с помощью этой команды. sammy используется здесь как имя пользователя, но вы можете использовать любое другое имя:

  1. sudo sh -c "echo -n 'sammy:' >> /etc/nginx/.htpasswd"

Затем добавьте зашифрованный пароль для имени пользователя, набрав:

  1. sudo sh -c "openssl passwd -apr1 >> /etc/nginx/.htpasswd"

Вы можете повторить этот процесс для дополнительных имен пользователей. Вы можете увидеть, как имена пользователей и зашифрованные пароли хранятся в файле, набрав:

  1. cat /etc/nginx/.htpasswd
Output
sammy:$apr1$wI1/T0nB$jEKuTJHkTOOWkopnXqC1d1

Шаг 2 — Настройка аутентификации по паролю Nginx

Теперь, когда у вас есть файл с вашими пользователями и паролями в формате, который может прочитать Nginx, вам нужно настроить Nginx для проверки этого файла перед обслуживанием вашего защищенного контента.

Текстовый редактор по умолчанию, поставляемый с Rocky Linux 9, называется vi. vi — чрезвычайно мощный текстовый редактор, но он может быть несколько бестолковым для пользователей, не имеющих опыта работы с ним. Возможно, вы захотите установить более удобный редактор, такой как nano, чтобы упростить редактирование файлов конфигурации на вашем сервере Rocky Linux 9:

  1. sudo dnf install nano -y

Теперь вы можете использовать nano для редактирования файла конфигурации Nginx:

  1. sudo nano /etc/nginx/nginx.conf

Чтобы настроить аутентификацию, вам нужно выбрать контекст для ограничения. Помимо прочего, Nginx позволяет вам устанавливать ограничения на уровне сервера или внутри определенного места.

Этот пример относится к ограничению на уровне сервера, поэтому вы добавите параметры в основной блок server{ } в файле. Директива auth_basic включает аутентификацию и имя области, которое будет отображаться пользователю при запросе учетных данных. Вы будете использовать директиву auth_basic_user_file, чтобы указать Nginx на созданный вами файл паролей:

. . .
server {
    listen 80 default_server;
    listen [::]:80 default_server;
    auth_basic "Restricted Content";
    auth_basic_user_file /etc/nginx/.htpasswd;
     . . .
}
. . .

Примечание. В зависимости от того, в каком блоке вы размещаете ограничения, вы можете контролировать детализацию того, какие части вашего сайта требуют пароля. Этот альтернативный пример ограничивает только корень документа блоком местоположения, и вы даже можете изменить этот список, чтобы указать только конкретный каталог в веб-пространстве:

…
server {
    listen 80 default_server;

     . . .
   
    location / {
    try_files $uri $uri/ =404;
    auth_basic "Restricted Content";
    auth_basic_user_file /etc/nginx/.htpasswd;
    }
}
…

Сохраните и закройте файл, когда закончите. Перезапустите Nginx, чтобы применить политику паролей:

  1. sudo systemctl restart nginx

Указанный вами каталог теперь должен быть защищен паролем.

Шаг 3 — Подтверждение аутентификации пароля

Чтобы убедиться, что ваш контент защищен, попробуйте получить доступ к контенту с ограниченным доступом в веб-браузере:

http://server_domain_or_IP

Вам должно быть представлено приглашение имени пользователя и пароля:

Если вы введете правильные учетные данные, вам будет разрешен доступ к содержимому. Если вы введете неправильные учетные данные или нажмете «Отмена», вы увидите страницу с ошибкой «Требуется авторизация»:

Заключение

Теперь у вас должно быть все необходимое для настройки базовой аутентификации для вашего сайта. Имейте в виду, что защита паролем должна сочетаться с шифрованием TLS, чтобы ваши учетные данные не отправлялись на сервер в виде простого текста. Ознакомьтесь с этим руководством о том, как защитить Nginx с помощью Let’s Encrypt в Rocky Linux 9.