Nginx — это мощный веб-сервер, который предоставляет различные возможности для настройки безопасности веб-приложений. Одним из способов обеспечения безопасности является авторизация пользователей по паролю и логину с использованием HTTP Basic Auth. В статье покажу, как защитить паролем директорию на сайте, внедрив аутентификацию по имени пользователя и паролю с помощью Nginx HTTP basic auth.
Еще по теме: HTTP-сервер с шифрованием TLS за 5 минут!
Nginx авторизация по паролю и логину
Nginx HTTP Basic Auth — это механизм аутентификации пользователей по логину и паролю, встроенный в веб-сервер Nginx.
Возможности Nginx HTTP Basic Auth:
- Использует протокол HTTP Basic Auth, при котором логин и пароль передаются в незашифрованном виде в заголовке Authorization.
- Позволяет настроить авторизацию для отдельных локаций, каталогов или файлов на веб-сервере.
- Логины и пароли хранятся в текстовом файле в захешированном виде.
- Nginx сверяет логин и пароль пользователя с данными из этого файла.
- При совпадении данных пользователю разрешается доступ, иначе выдается ошибка 401 Unauthorized.
- Прост в настройке через директивы auth_basic, auth_basic_user_file.
- Подходит для быстрой и простой защиты доступа к веб-ресурсам.
- Не обеспечивает высокий уровень безопасности, т.к. передача логина и пароля не зашифрована.
HTTP Basic Auth часто используется в корпоративных веб-приложениях, внутренних сервисах, для доступа к админ-панелям и т.д. Базовая аутентификация HTTP позволяет запретить доступ к защищаемому разделу/папке другим лицам, не имеющим учетных данных для входа в систему.
Установка пакета apache2-util
Для начала необходимо установить пакет apache2-utils, который содержит пакет htpasswd, позволяющий создавать имя пользователя и пароль. Для установки пакета выполните команду:
1 |
sudo apt install apache2-utils |
Создание файла пароля
На этом этапе необходимо создать файл, в котором будут храниться комбинации имени пользователя и пароля. Это можно сделать с помощью команды:
1 |
sudo htpasswd -c /etc/nginx/private Jack |
Замените Jack на ваше имя пользователя, а private — на директорию или раздел, который вы хотите защитить паролем.
После выполнения команды появится запрос на установку пароля для выбранного имени пользователя, введите его дважды.
Для проверки файла можно воспользоваться командой cat.
На приведенном выше скрине видно, что файл содержит имя пользователя и зашифрованный пароль.
Настройка базовой HTTP-авторизации
Откройте файл конфигурации Nginx с помощью текстового редактора (в моем случае редактор nano):
1 |
nano /etc/nginx/sites-available/default |
Добавьте следующую строку в раздел location.
location /wp-admin — будет защищена паролем область /wp-admin, так что при переходе по адресу mysite.com/wp-admin будет предложено ввести имя пользователя и пароль.
auth_basic_user_file — путь, по которому расположен файл htpasswd.
После добавления конфигурации нажмите CTRL X для сохранения файла и перезагрузите Nginx командой.
1 |
sudo systemctl reload nginx |
Теперь перейдем в веб-браузер и наберем webtest.com/wp-admin.
У меня открылась форма входа, в которую необходимо ввести правильные учетные данные, если я хочу получить доступ к содержимому.
Заключение
HTTP Basic Auth — простой и удобный способ быстро настроить авторизацию на веб-сайте. Он позволяет легко ограничить доступ к контенту по паролю. Но имейте ввиду, он не обеспечивает достаточную безопасность, т.к. передача логина и пароля не зашифрована.
ПОЛЕЗНЫЕ ССЫЛКИ: