Htpasswd linux где лежит

Настройка авторизации на основе пароля на Nginx в Ubuntu 14.04

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

Это руководство покажет, как настроить авторизацию на основе пароля на веб-сервере Nginx в Ubuntu 14.04.

Требования

Для выполнения руководства нужен не-root пользователь с правами sudo. Чтобы создать такой аккаунт, обратитесь к этому руководству.

Если сервер Nginx не был установлен ранее, установите его сейчас при помощи команд:

sudo apt-get update
sudo apt-get install nginx

Создание файла паролей

Для начала нужно создать файл для хранения паролей тех пользователей, которые могут пройти авторизацию на сайте. Для этого можно использовать утилиты OpenSSL или же специальную утилиту htpasswd, которая входит в пакет apache2-utils.

Примечание: На Nginx файлы паролей используют тот же формат, что и на Apache.

Выберите наиболее подходящий метод и следуйте инструкциям соответствующего раздела.

Создание файла паролей при помощи OpenSSL

Если на сервере установлен пакет OpenSSL, для создания файла паролей не понадобится никаких дополнительных пакетов. Создайте скрытый файл .htpasswd в каталоге /etc/nginx, где и будут храниться учётные данные пользователей.

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

sudo sh -c «echo -n ‘8host:’ >> /etc/nginx/.htpasswd»

Примечание: Замените условное имя 8host именем своего пользователя.

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

sudo sh -c «openssl passwd -apr1 >> /etc/nginx/.htpasswd»

Чтобы добавить в файл других пользователей, просто повторите вышеописанный процесс. Файл паролей содержит имена пользователей и их пароли в зашифрованном виде:

cat /etc/nginx/.htpasswd
8host:$apr1$wI1/T0nB$jEKuTJHkTOOWkopnXqC1d1

Создание файла паролей при помощи .htpasswd

Несмотря на то, что OpenSSL отлично справляется с поддержкой файла паролей для Nginx, большинство пользователей предпочитает использовать для этих целей утилиту htpasswd, которая находится в пакете apache2-utils.

Чтобы установить пакет утилит apache2-utils, введите:

sudo apt-get update
sudo apt-get install apache2-utils

Теперь на сервере доступна команда htpasswd, которая позволяет создать файл паролей, необходимый серверу Nginx для авторизации пользователей. Создайте скрытый файл .htpasswd в каталоге /etc/nginx.

При первом запуске этой утилиты нужно использовать флаг –c, который и создаёт необходимый файл. Укажите имя пользователя в конце команды, чтобы создать новую запись в файле:

Читайте также:  Veil evasion kali linux

sudo htpasswd -c /etc/nginx/.htpasswd 8host

Примечание: Замените условное имя 8host именем своего пользователя.

Программа предложит создать и подтвердить пароль для этого пользователя.

Чтобы добавить в файл паролей других пользователей, просто используйте команду htpasswd без флага –с:

sudo htpasswd /etc/nginx/.htpasswd another_user

Просмотрите содержимое файла, чтобы убедиться, что учётные данные внесены правильно:

cat /etc/nginx/.htpasswd
8host:$apr1$lzxsIfXG$tmCvCfb49vpPFwKGVsuYz.
another_user:$apr1$p1E9MeAf$kiAhneUwr.MhAE2kKGYHK.

Настройка авторизации Nginx

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

Откройте конфигурационный файл блока server (так называется виртуальный хост Nginx) для сайта, доступ к контенту которого нужно ограничить. В данном примере используется стандартный блок default, который поставляется в Ubuntu по умолчанию.

sudo nano /etc/nginx/sites-enabled/ default

Раскомментированный файл выглядит так:

server listen 80 default_server;
listen [::]:80 default_server ipv6only=on;
root /usr/share/nginx/html;
index index.html index.htm;
server_name localhost;
location / try_files $uri $uri/ =404;
>
>

Чтобы настроить авторизацию, нужно выбрать контекст ограничения доступа. Веб-сервер Nginx позволяет ограничивать доступ к контенту на уровне сервера или же по определённому адресу. В данном примере мы ограничим доступ к каталогу document root при помощи блока location (при необходимости укажите другой каталог).

В блок location добавьте директиву auth_basic, которая отвечает за включение авторизации, и укажите в ней имя области данных, которое будет отображаться при запросе. При помощи директивы auth_basic_user_file укажите серверу на созданный ранее файл паролей.

server listen 80 default_server;
listen [::]:80 default_server ipv6only=on;
root /usr/share/nginx/html;
index index.html index.htm;
server_name localhost;
location / try_files $uri $uri/ =404;
auth_basic «Restricted Content»;
auth_basic_user_file /etc/nginx/.htpasswd;
>
>

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

sudo service nginx restart

Теперь контент, находящийся в этом каталоге, защищён паролем.

Тестирование авторизации

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

Authentication Required
The server requires a username and password. The server says:
Restricted server.
User Name:
Password:

Введите валидные учётные данные, чтобы получить доступ к контенту. В случае получения неверных учётных данных сервер вернёт ошибку «Authorization Required».

Заключение

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

Примечание: Чтобы узнать, как создать SSL-сертификат для Nginx, читайте это руководство.

Источник

Как настроить аутентификацию по паролю с Apache в Debian, Ubuntu и производных

Как веб-администратор, вы можете счесть полезным ограничить доступ посетителей к некоторым частям веб-сайта, будь то временно или на постоянной основе. Хотя веб-приложения могут предоставлять свои собственные методы проверки подлинности и авторизации, вы также можете полагаться на сам веб-сервер, чтобы ограничить доступ по тем или иным причинам.

Читайте также:  Uname command in linux

В этом руководстве вы узнаете, как защитить паролем ресурсы на веб-сервере Apache, работающем в Debian или Ubuntu, чтобы обеспечить вашему серверу дополнительную безопасность. Данная инструкция также применима к производным этих дистрибутивов, в том числе к Linux Mint и Kali Linux.

Если вы хотите настроить базовую аутентификацию на Apache в Windows, то смотрите статью «Как защитить папку Apache паролем в Windows».

Предполагается, что вы уже установили веб-сервер Apache, если нет, то смотрите инструкции:

Также крайне желательно, чтобы вы использовали HTTPS протокол, который делает невозможным перехвату логина и пароль.

Также нам потребуются инструменты из пакета apache2-utils:

sudo apt update sudo apt install apache2-utils

Чем различаются HTTP Basic и Digest аутентификации

HTTP Basic и Digest аутентификации предназначены для контроля доступа на уровне веб-сервера. Если при попытке открыть веб-страницу или войти в настройки роутера вы видите такое окно:

Для конечного пользователя Basic и Digest выглядят одинаково. С технической точки зрения они различаются тем, что при Basic аутентификации пароль передаётся в открытом виде, а при Digest пароль зашифрован. Но официальная документация Apache рекомендует не полагаться на шифрование Digest, поскольку оно слишком слабое, а вместо этого использовать Basic аутентификацию в паре с HTTPS, чтобы невозможно было перехватить логин и пароль.

Как включить HTTP Basic аутентификацию в Apache (Kali Linux, Ubuntu, Debian, Linux Mint)

Для начала нужно включить поддержку файлов .htaccess, чтобы веб-сервер использовал настройки из этих файлов — по умолчанию это отключено.

Откройте файл /etc/apache2/apache2.conf

sudo gedit /etc/apache2/apache2.conf
 Options Indexes FollowSymLinks AllowOverride None Require all granted 
 Options Indexes FollowSymLinks AllowOverride All Require all granted 

Сохраните и закройте файл.

sudo systemctl restart apache2.service

Создайте папку, где будут защищённые паролем файлы:

sudo mkdir /var/www/html/basic-protected

С помощью утилиты htpasswd мы создадим файл с именем пользователя и хешем пароля. Если указана опция -c, то старый файл будет удалён, а новый создан. Утилита htpasswd присутствует и в Apache для Windows, но нужно указать полный путь до неё.

sudo htpasswd -c -B /ПУТЬ/ДО/ФАЙЛА/.htpasswd ПОЛЬЗОВАТЕЛЬ
sudo htpasswd -c -B /etc/apache2/.htpasswd mial

Опция -B означает использовать для шифрования пароля bcrypt. В настоящее время это считается очень безопасным. Для наших тестов это безразлично, но для реальной защиты папки или сайта паролем рекомендуется выполнять показанные выше команды с опцией -B. В дополнении к этой опции вы можете использовать флаг -C со значением от 4 до 17. Он устанавливает время вычисления, используемое для алгоритма bcrypt (чем выше, тем безопаснее, но медленнее). Значением по умолчанию является 5.

Если файл .htpasswd уже существует, то для добавления ещё одного пользователя, без удаления старых, используйте эту же команду, но без опции -c:

sudo htpasswd -B /etc/apache2/.htpasswd user1

Для смены пароля, вновь используйте эту же команду без опции -c, указав имя пользователя, чей пароль вы хотите поменять.

Читайте также:  Linux время работы пользователя

Конечно же файл .htpasswd рекомендуется хранить в директориях, не доступных для постороннего доступа (например, /etc/apache2/.htpasswd). Особенно не нужно его хранить в папках веб-сервера вместе с файлами сайтов. Но иногда веб-мастер в силу простоты или невозможности сохранить файл где-либо ещё (на виртуальных хостингах, например) хранит этот файл прямо вместе с файлами сайтов.

Посмотрим содержимое файла .htpasswd:

mial:$2y$05$xq4u60Y/nruX65hCk9kY1.n8sZ/E3/blHLXSL4GIdMsb2NPEFO2xG user1:$2y$05$Z1Rb4AhtksDLgMt.weXo..28NGNDbs5nTIyViMyUG1tXbWVQrlxDy

Теперь создадим файл .htaccess:

sudo gedit /var/www/html/basic-protected/.htaccess
AuthName "For registered members only" AuthType Basic Require valid-user AuthUserFile /etc/apache2/.htpasswd

Откройте в веб-браузере адрес http://localhost/basic-protected/ — вы должны увидеть форму для ввода имени пользователя и пароля.

Опция -B означает использовать для шифрования пароля bcrypt. В настоящее время это считается очень безопасным. Для наших тестов это безразлично, но для реальной защиты папки или сайта паролем рекомендуется выполнять показанные выше команды с опцией -B. В дополнении к этой опции вы можете использовать флаг -C со значением от 4 до 17. Он устанавливает время вычисления, используемое для алгоритма bcrypt (чем выше, тем безопаснее, но медленнее). Значением по умолчанию является 5.

Как включить HTTP Digest аутентификацию в Apache (Kali Linux, Ubuntu, Debian, Linux Mint)

По умолчанию модуль Digest аутентификации отключён, включим его:

Если вы ещё этого не сделали, включите поддержку файлов .htaccess, чтобы веб-сервер использовал настройки из этих файлов — по умолчанию это отключено.

Откройте файл /etc/apache2/apache2.conf:

sudo gedit /etc/apache2/apache2.conf
 Options Indexes FollowSymLinks AllowOverride None Require all granted 
 Options Indexes FollowSymLinks AllowOverride All Require all granted 

Сохраните и закройте файл.

sudo systemctl restart apache2.service

Создайте папку, где будут защищённые паролем файлы:

sudo mkdir /var/www/html/digest-protected

Для генерации паролей нужно использовать команду htdigest. Если указать опцию -c, то будет создан новый файл, а старый удалён.

sudo htdigest -c /etc/apache2/.digest_pw REALM ПОЛЬЗОВАТЕЛЬ

REALM — это область применения. Она соответствует директиве AuthName в файле .htaccess. То есть можно для одного пользователя установить разные пароли, изменяя значения REALM. В разных директивах можно менять значение AuthName в файле .htaccess и в зависимости от этого значения будет подходить тот или иной пароль.

sudo htdigest -c /etc/apache2/.digest_pw USERS mial sudo htdigest /etc/apache2/.digest_pw USERS user1

Посмотрим содержимое файла .htpasswd:

mial:USERS:48e54f80673b884a8d6f23f48aa2ade3 user1:USERS:8033e1980bcfb694719ae72793c792ec

Теперь создадим .htaccess:

sudo gedit /var/www/html/digest-protected/.htaccess

И скопируем в него следующее:

AuthName "USERS" AuthType Digest Require valid-user AuthUserFile /etc/apache2/.digest_pw AuthDigestDomain /

Отроем в веб-браузере адрес http://localhost/digest-protected/ и убедимся, что теперь для доступа к странице необходим пароль.

Аутентификация Basic и Digest в настоящее время считаются слабыми. Если вам нужно использовать какую-то из них, то рекомендуется Basic в паре с HTTPS, чтобы невозможно было перехватить пароль, поскольку хотя Digest и не пересылает пароль в открытом виде, он очень быстр для брут-форса.

Связанные статьи:

Источник

Оцените статью
Adblock
detector