Блог - Linux, программирование, Я!

linux на сервереBasic HTTP авторизация для Nginx

В принципе это тривиальная операция описанная в документации к Nginx, но немного усложняет этот процесс необходимость создавать htpasswd файл, причем в самом Nginx средств для его создания нет (и это правильно), но предлагается создавать его используя утилиту htpasswd входящую в состав Apache. Что самое смешное, на многих серверах, где используется Nginx, апача нет и не ожидается. Более того, большинство администраторов хостингов, "познавших" для себя Nginx начинают нескрываемо недолюбливать апач и верят, что наступит тот час, когда для Nginx наконец сделают аналог htaccess и апач, исправно служивший им долгие годы, наконец-то сгинет в небытие. Чтобы исправить сей досадный факт, добавлю в статью онлайн-формочку для генерации htpasswd фйла.

Давайте для примера создадим отдельный поддомен для хранения секретной информации с доступом по логину/паролю и в нагрузку в ней будут директория для доступа к которой понадобится дополнительная пара логин/пароль и директория с включенным листингом файлов тоже с отдельным доступом. Т.е. структура примерно такая:
/ (доступ к файлам по _логин-пароль_1)
--otherpass/ (доступ к файлам по _логин-пароль_2)
--listed/ (включен автоиндекс файлов, т.е. можнго просмотреть какие файлы тут лежат, доступ к файлам по _логин-пароль_3)

Создадим виртуалхост Nginx

Допустим, для поддомена adminka.example.com. Для этого создадим файл

sudo nano /etc/nginx/sites-available/adminka.example.com

со следующим содержимым:

server {
        listen   80;
        server_name  adminka.example.com;
        access_log  /var/log/nginx/adminka_example_com.log;#можно написать /var/log/nginx/$host.log но придется заранее создать лог-файл и выставить на него правильные права
        root   /var/www/$host/htdocs;
        index  index.html index.htm index.php;
}

Ок, сохраняем, делаем этот хост доступным (включаем в конфиг нджинкса):

sudo ln -s /etc/nginx/sites-available/adminka.example.com /etc/nginx/sites-enabled/adminka.example.com

Создаем директории для htdocs

mkdir /var/www/{adminka.example.com,adminka.example.com/htdocs,adminka.example.com/htdocs/{otherpass,listed}

Если кто не понял, эта команда делает то же, что и 4 следующие:

mkdir /var/www/adminka.example.com
mkdir /var/www/adminka.example.com/htdocs
mkdir /var/www/adminka.example.com/htdocs/otherpass
mkdir /var/www/adminka.example.com/htdocs/listed

Рестартим Nginx

sudo service nginx configtest
sudo service nginx restart

Проверяем: http://adminka.example.com/
Ага

403 Forbidden
nginx/0.7.64

Пароли не просит, листинг директории у нас не включен и index файла мы не создавали. То же самое для директорий otherpass и listed. Соответственно получаем 403 ошибку "доступ запрещен".

Добавим листинг (если нужен)

Мы договорились, что в директории listed у нас разрешен просмотр содержимого директории... Редактируем конфиг

sudo nano /etc/nginx/sites-available/adminka.example.com
server {
  listen   80;
        server_name  adminka.example.com;
        access_log  /var/log/nginx/adminka_example_com.log;
        root   /var/www/$host/htdocs;
        index  index.html index.htm index.php;
        location /listed/ {
                autoindex on;
        }
}

Сохраняем, перезапускаем, пробуем: http://adminka.example.com/listed/
Ага, работает:

Index of /listed/
_________
../
_________

Но где же обещанные пароли? Спокойно, сейчас все будет!

Добавляем Basic HTTP authorization.

Пароли для разных директорий будем хранить в разных htpasswd файлах за пределами htdocs. Например так:

/var/www/adminka.example.com/
--/root_htpasswd
--/listed_htpasswd
--/otherpass_htpasswd
server {
  listen   80;
        server_name  adminka.example.com;
        access_log  /var/log/nginx/adminka_example_com.log;
        root   /var/www/$host/htdocs;
        index  index.html index.htm index.php;
        location / {
                auth_basic "Unauthorized"; # текст сообщения сервера с предложением ввести пароль
                auth_basic_user_file /var/www/$host/root_htpasswd; # путь к htpasswd файлу
        }
        location /listed/ {
                auth_basic "Unauthorized";
                auth_basic_user_file /var/www/$host/listed_htpasswd;
                autoindex on;
        }
        location /otherpass/ {
                auth_basic "Unauthorized";
                auth_basic_user_file /var/www/$host/otherpass_htpasswd;
                autoindex on;
        }
}

Создаем htpasswd файлы (см. далее), сохраняем, перезапускаем, проверяем!

Генерация хеша пароля

HTTP авторизация в Nginx работает так же как и в Apache, т.е. с использованием htpasswd файла, но с тем лишь ограничением, что для шифрования пароля можно использовать только стандартный алгоритм DES с двухсимвольной солью. В Linux для этого используется C-функция crypt() (см man 3 crypt).

Можно использовать утилиту htpasswd из комплекта поставки Apache

htpasswd -nd seriy
New password:
Re-type new password:
seriy:4lQ0JcanrGr9E

Вывод этой утилиты состоит из 3-х частей: первая, до двоеточия "seriy" - это имя пользователя, "4l" - это двухсимвольная соль для функции crypt() и остальная часть "Q0JcanrGr9E" - это сам хеш пароля. Единственная проблема такого подхода - придется устанавливать apache.

Вот пара примеров кода для генерации htpasswd ( your_password - ваш пароль, salt - соль для пароля, должна содержать 2(!!!) символа из набора "./0-9A-Za-z"):
используя php:

php -r 'echo crypt("your_password", "salt");'

используя Python:

python -c 'import crypt; print crypt.crypt("your_password", "salt")'

Если кто предложит примеры на других языках - (perl, ruby) буду благодарен. Возможно для этого можно использовать утилиту mcrypt но я в ней не смог разобраться.

В завершение - вот простенькая веб-формочка для генерации htpasswd онлайн.

  1. 2010-06-04 14:03:12 | #

    […] PS пишет: server { listen 80; server_name adminka.example.com; access_log /var/log/nginx/adminka_example_com.log;#можно написать /var/log/nginx/$host.log но придется заранее создать лог-файл и выставить на него правильные права root … htpasswd -nd seriy New password: Re-type new password: seriy:4lQ0JcanrGr9E. Вывод этой утилиты состоит из 3-х частей: первая, до двоеточия «seriy» – это имя пользователя, «4l» – это двухсимвольная соль для функции crypt() и остальная часть … […]

  2. 2012-02-27 05:42:37 | #

    А вот так осуществляется контроль доступа к файлам на Nginx и PHP:
    http://odiszapc.ru/2012/02/26/nginx-access/

  3. rock
    2012-09-14 03:12:46 | #

    Что тут писать-то?

                        #!/usr/bin/python
    # -*- coding: utf-8 -*-
    
    from sys import argv
    from random import choice
    from string import ascii_letters, digits
    from getpass import getpass
    from crypt import crypt
    
    if __name__=="__main__":
            name = argv[1:2]
            if not name:
                    print "Введите имя пользователя:",
                    name = raw_input()
                    if not name:
                            print "ОШИБКА: Введите имя пользователя."
                            exit(1)
            else:
                    name = name[0]
    
            salt = ''.join(choice(ascii_letters.join(digits)) for char in range(2))
    
            passwd = getpass("Введите пароль: ")
            if not passwd == getpass("Введите пароль еще раз: "):
                    print "ОШИБКА: Пароль и подтверждение не совпадают."
                    exit(2)
    
            passwdHash = crypt(passwd, salt)
    
            print name + ':' + passwdHash
    
            exit(0)
                      
  4. Incognito
    2012-12-18 16:51:16 | #

    у меня почему к listed постоянно пароль запрашивает, а к корневой один раз ввел в браузере и после этого открывается без запроса пароля, так и должно быть?
    как нибудь время жизни пароля задать можно?

  5. Павел
    2013-08-03 05:11:00 | #

    Апач устанавливать не нужно, достаточно установить apache2-utils.
    Для Debian Linux:
    aptitude install apache2-utils

  6. Дмитро Раби
    2013-12-20 13:38:17 | #

    На crypt на ruby:
    'password'.crypt('salt')

    • Дмитро Раби
      2013-12-20 13:39:09 | #

      Парсер лох, ковычки нужны одинарые или двайные «лапки»

  7. mad_crack
    2014-01-21 18:25:28 | #

    Каталоги можно сделать командой покороче, если использовать ключик -p

    mkdir -p /var/www/adminka.example.com/htdocs/{otherpass,listed}

  8. 2017-07-25 04:36:50 | #

    Продам мопед.

  9. 2019-02-04 02:55:57 | #

    Мы можем предложить отличные услуги прокси-серверов пакетами. Вам нужен неизменный индивидуальный прокси для работы в Instagram, Вконтакте,Однокласниках или Авито? Вы занимаетесь букмекерскими ставками или покером? SEO,SMM, по настоящему безопасный серфинг или другие темы? В том случае вы по адресу.

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

    Быстрые прокси ipv4 и ipv6 (до 100 мбит/с) обеспечат стабильную работу. Требуются разные подсети, у нас их достаточно. Так же вы сможете выбрать тип протокола HTTP/SOCKS.

    купить прокси

  10. 2019-02-25 16:17:14 | #

    RHC217 bdGVRv03lkwxM9pL

  11. 2019-03-17 20:52:58 | #

    Инстаграм SMM аудитория предлагает горы преимуществ и решает следующие проблемы Instagram страниц . Дизайн и настройка изображения. Господство репутацией бренда и продвижении Инстаграм . Формирование необходимых требований также вероятно в соответствии с требованиями Инстаграм аккаунтов . Отзывы Instagram целевой группы Социальные путы с миллионами зрителей лайков продвижении в погода являются идеальным местом чтобы привлечения новых клиентов продвижении . Наши специалисты знают улучшения , сиречь сделать эту работу более эффективно. Разряд мероприятий, в которых социальные козни используются в качестве ресурса для продвижении деятельности веб-сайта клиенты и решения конкретных проблем бизнеса. С через рекламы в социальных сетях (smm) вы можете выбрать свою аудиторию, дабы двигать для них и встречать наиболее счастливый канал связи. Мы нашли сноровка давать ограничения ВКонтакте и Instagram, и нынче мы можем посылать неограниченное контингент приглашений Инстаграм и вывода вашей целевой аудитории! Вы будете как заинтересованы и постоянные клиенты. Каждый решает присоединиться подписчиков к улучшения своему сообществу alias нет клиенты.
    автоворонки Инстаграм агентство
    Те, кто, безусловно, заинтересованы в том, воеже проявить барыш к их сообществу раскрутки Инстаграм, приходят с приглашением. Все гости являются активными пользователями. Привлекая определенное величина участников сообразно количеству отправленных приглашений, многие останутся лайков. Спасибо следовать вашу гений видеть свою группу. Мы создаем массивный ответ о книга, когда и если люди прибывают. Перехватить связь с людьми и временем. Жизнь группы в популярных социальных сетях Инстаграм ныне — это не просто дань моде иначе другим оживленно развивающимся тенденциям продвижении Инстаграм . Это безошибочный аппарат для привлечения и привлечения клиентов. Если у компании закусить разряд социальных сетей лайков, это поможет улучшить имидж компании клиенты. Он нынешний и явный, сколько повышает кредит клиентов раскрутки Инстаграм.
    здесь https://instaspb.ru — Раскрутка сообществ в инстаграм

  12. 2019-03-17 20:53:36 | #

    Instagram SMM клиенты предлагает орава преимуществ и решает следующие проблемы Инстаграм бизнесов . Дизайн и настройка изображения. Господство репутацией бренда и улучшения Инстаграм . Образование необходимых требований также вероятно в соответствии с требованиями Instagram бизнесов . Отзывы Инстаграм целевой группы Социальные сети с миллионами зрителей лайков продвижении в день являются идеальным местом для привлечения новых клиентов улучшения . Наши специалисты знают улучшения , словно исполнять эту работу более эффективно. Разряд мероприятий, в которых социальные козни используются в качестве ресурса чтобы улучшения деятельности веб-сайта аудитория и решения конкретных проблем бизнеса. С через рекламы в социальных сетях (smm) вы можете выбрать свою аудиторию, воеже возбуждать для них и найти наиболее сообразный канал связи. Мы нашли способ давать ограничения ВКонтакте и Instagram, и теперь мы можем исполнять неограниченное наличность приглашений Instagram и улучшения вашей целевой аудитории! Вы будете только заинтересованы и постоянные клиенты. Отдельный решает присоединиться подписчиков к вывода своему сообществу или нет аудитория.
    продвижение Instagram подписчиками
    Те, кто, безусловно, заинтересованы в книга, воеже проявить барыш к их сообществу раскрутки Инстаграм, приходят с приглашением. Однако гости являются активными пользователями. Привлекая определенное число участников сообразно количеству отправленных приглашений, некоторый останутся лайков. Причинность за вашу талантливость видеть свою группу. Мы создаем массивный отчет о часть, когда и если люди прибывают. Столоваться связь с людьми и временем. Жизнь группы в популярных социальных сетях Instagram сегодня — это не простой налог моде либо другим быстро развивающимся тенденциям улучшения Instagram . Это надежный сбруя для привлечения и привлечения клиентов. Если у компании есть разряд социальных сетей лайков, это поможет улучшить имидж компании клиенты. Он нынешний и зияющий, который повышает уверенность клиентов раскрутки Инстаграм.
    КЛИКАЙ https://instaspb.ru — Раскрутка бизнеса в Instagram

  13. 2019-03-17 20:58:18 | #

    Instagram SMM клиенты предлагает орава преимуществ и решает следующие проблемы Инстаграм сообществ . Дизайн и настройка изображения. Господство репутацией бренда и улучшения Instagram . Образование необходимых требований также возможно в соответствии с требованиями Инстаграм бизнесов . Отзывы Инстаграм целевой группы Социальные сети с миллионами зрителей лайков продвижении в день являются идеальным местом чтобы привлечения новых клиентов раскрутки . Наши специалисты знают продвижении , словно сделать эту работу более эффективно. Серия мероприятий, в которых социальные силок используются в качестве ресурса для продвижении деятельности веб-сайта клиенты и решения конкретных проблем бизнеса. С помощью рекламы в социальных сетях (smm) вы можете выбрать свою аудиторию, дабы возбуждать на них и встречать наиболее счастливый канал связи. Мы нашли тактика обойти ограничения ВКонтакте и Instagram, и днесь мы можем исполнять неограниченное количество приглашений Instagram и раскрутки вашей целевой аудитории! Вы будете только заинтересованы и постоянные клиенты. Отдельный решает присоединиться массфолловинга к вывода своему сообществу alias нет аудитория.
    продвижение Инстаграм СПБ
    Те, который, непременно, заинтересованы в часть, дабы проявить интерес к их сообществу продвижении Инстаграм, приходят с приглашением. Всетаки гости являются активными пользователями. Привлекая определенное величина участников по количеству отправленных приглашений, некоторый останутся лайков. Причинность за вашу умение зреть свою группу. Мы создаем целый мнение о часть, если и когда люди прибывают. Есть сцепление с людьми и временем. Жизнь группы в популярных социальных сетях Инстаграм сегодня — это не просто налог моде либо другим оживленно развивающимся тенденциям раскрутки Инстаграм . Это испытанный аппарат ради привлечения и привлечения клиентов. Если у компании есть общество социальных сетей подписчиков, это поможет улучшить имидж компании клиенты. Он нынешний и зияющий, который повышает кредит клиентов раскрутки Instagram.
    тут https://instaspb.ru — Раскрутка сообществ в Инстаграм

  14. 2019-03-17 21:00:21 | #

    Инстаграм SMM аудитория предлагает много преимуществ и решает следующие проблемы Instagram сообществ . Дизайн и настройка изображения. Управление репутацией бренда и вывода Инстаграм . Формирование необходимых требований также возможно в соответствии с требованиями Инстаграм аккаунтов . Отзывы Instagram целевой группы Социальные козни с миллионами зрителей лайков улучшения в день являются идеальным местом чтобы привлечения новых клиентов раскрутки . Наши специалисты знают улучшения , как исполнять эту работу более эффективно. Разряд мероприятий, в которых социальные козни используются в качестве ресурса для вывода деятельности веб-сайта аудитория и решения конкретных проблем бизнеса. С через рекламы в социальных сетях (smm) вы можете выбрать свою аудиторию, дабы влиять для них и найти наиболее подходящий канал связи. Мы нашли тактика давать ограничения ВКонтакте и Instagram, и ныне мы можем заниматься неограниченное контингент приглашений Инстаграм и улучшения вашей целевой аудитории! Вы будете лишь заинтересованы и постоянные клиенты. Отдельный решает присоединиться массфолловинга к вывода своему сообществу или нет клиенты.
    Массфолловинг продвижения в Instagram
    Те, который, безусловно, заинтересованы в книга, для проявить барыш к их сообществу вывода Инстаграм, приходят с приглашением. Безвыездно гости являются активными пользователями. Привлекая определенное число участников по количеству отправленных приглашений, многие останутся массфолловинга. Благодарность изза вашу умение замечать свою группу. Мы создаем целый отчет о том, когда и если человек прибывают. Есть связь с людьми и временем. Жизнь группы в популярных социальных сетях Инстаграм сегодня — это не просто налог моде либо другим проворно развивающимся тенденциям улучшения Инстаграм . Это надежный приспособление для привлечения и привлечения клиентов. Разве у компании затрапезничать группа социальных сетей подписчиков, это поможет улучшить имидж компании клиенты. Он современный и явный, что повышает вера клиентов вывода Instagram.
    КЛИКАЙ https://instaspb.ru — Раскрутка аккаунтов в Инстаграм

  15. 2019-04-05 17:05:49 | #

    После свою работу транспортировка клиентов сервис уже осуществил более 5314 отправлений. Подле 1745 крупных пациентов оказали медицинскую пособие работникам по контракту. Новые автомобили Fiat Ducato убираются еженедельно пациентов. Небольшой расход топлива и ремни безопасности делают перемещение пациента максимально безопасным и комфортным больных. Чтобы перевозки из автомобиля перед особой медицинской помощью клиентов регионы Москвы. Коврики предоставляются бесплатно. Автомобиль может вместить до 3 индивидуальность (организаторы и родственники) транспортировка регионы Москвы.
    ТУТ перевозка лежачих больных из больницы домой
    Дозволено поставить инвалидную коляску перевозка и удобно расположить ее в инвалидной коляске больных . Основную службу скорой помощи подтверждают постоянные клиентов: перекусить те, который связывается с нами уже девятый и десятый клиентов. С опытным персоналом и опытным пациентов, они заботливо доставляют пациента и ухаживают за кроватью регионы Москвы. Наши пациенты, инвалиды, пожилые люди тож люди с проблемами в автомобиле будут в нужном месте и сезон через времени. Медицинская богослужение компании обеспечивает транспортировку скорой помощи больных (тяжелых и больных), инвалидов и пожилых людей из Москвы и Московской области. Наша занятие медицинской помощи позволяет вам в / из Москвы для конкретном самолете безопасно перевозить клиентов, аккуратно и как враки разве лежать клиентов Московская область.
    https://medcors03.ru — Транспортировка пациентов в Московской области скорая

  16. 2019-06-19 13:01:07 | #

    Бонус Без Депозита За Регистрацию 777 Рублей https://yourcake22.ru/