По многим причинам может быть очень полезно иметь контролируемый доступ к определенным каталогам на веб-сервере или просто к содержимому нашей страницы или блога через службу аутентификации на основе имени пользователя и пароля. Я говорю о чем-то вроде типичного окна, которое появляется, когда мы хотим войти на сайт с ограниченными услугами.
Есть несколько способов создания окон с формой аутентификации, но есть интересное решение на уровне сервера. htpasswd. Это служебная программа, функция которой заключается в хранении паролей в зашифрованном виде для использования Apache в службах аутентификации. Его использование позволит нам показывать определенные каталоги или файлы через http только идентифицированным пользователям и не обязательно быть общедоступными.
Я понимаю, что это не слишком яркая тема, но некоторым она может быть полезна. Чтобы не убивать их скукой, я буду использовать изображения, чтобы сделать это более поучительным.
Предыдущие соображения: я буду использовать Сервер Ubuntu 12.04.1 y Apache 2.2.22 в контролируемой среде.
Мы начинаем
Как некоторые, возможно, уже знают, по умолчанию доступные сайты Apache хранятся в каталоге / Var / WWW / и для этого примера я создам каталог с шаблоном HTML и попытаюсь защитить его с помощью .htpasswd.
Каталог для защиты / var / www / example / где я разместил следующую страницу.
1. Мы собираемся создать .htpasswd.
Место, где он будет расположен, имеет важное значение, и размещение его вне общедоступного каталога может быть более чем рекомендовано. В моем случае я помещу его в свою личную папку (которая не является общедоступным каталогом Apache) и с именем .htpasswd (Априори так называть не стоит, но то, что скрыто, всегда хорошо).
С помощью следующей команды я создаю файл .htpasswd для веб-пользователя, которого я назвал «Люк».
# htpasswd -c /home/krel/.htpasswd Luke
Он попросит нас ввести пароль дважды, в моем случае я поставил «skywalker» (без кавычек). В неконтролируемой среде мы должны устанавливать более надежные пароли. По умолчанию в Linux используется шифрование MD5, но в Unix это стандартная реализация crypt (), и для паролей длиной менее 8 символов она может быть уязвима. Теперь я сомневаюсь, что в BSD то же самое.
Команда имеет такую структуру:
- -c → создать файл
- /home/krel/.htpasswd → абсолютный путь к файлу.
- Люк → имя пользователя (может быть любым)
Точно так же никого не заставляю пользоваться терминалом, когда для него есть сервисы в интернете:
http://www.web2generators.com/apache/htpasswd_generator
http://www.htaccesstools.com/htpasswd-generator/
Копируем результат в текстовый файл и с именем .htpasswd, если хотите. Что касается этого метода, не прекращайте читать мои комментарии в следующем абзаце.
В нашем случае мы увидим, что файл был сгенерирован там, где мы ожидали /home/krel/.htpasswd. На изображении я выделил, что с помощью этого метода файл принадлежит группе и пользователю apache, что в Ubuntu называется www-data. Это важно, потому что, если мы сгенерировали .htpasswd каким-либо другим способом, мы должны убедиться, что у него 644 разрешения.
Что ж, теперь посмотрим, каковы их кишки:
Как видите, пользователь (Люк) есть, но пароль зашифрован.
Таким образом, мы уже создали и спроектировали .htpasswd для пользователя Luke, в конце концов, это не более чем контейнер для пароля. «Все одной командой» было бы хорошей фразой.
2. Настройте Apache для использования и разрешите эту службу на сайте.
# nano /etc/apache2/sites-available/default
Если у вас несколько хостов, они должны работать на каждом из них, в моем случае у меня только тот, который идет по умолчанию. Не забывайте, что всегда полезно сделать резервную копию этого файла.
Этот файл имеет структуру по умолчанию:
ServerAdmin веб-мастер @ localhost
..................
..................
Именно в заголовках Virtualhost будет указано использование .htpasswd для доступа к определенному каталогу. Мы делаем это так, как показано на изображении ниже и соответствует нашему примеру:
Вы должны поставить каталог для защиты.
AuthType Basic
Это тип пользователя и пароль, согласованные с браузером, в данном случае это базовый, без шифрования.
Существует еще один тип согласования: дайджест, он шифрует имя пользователя и пароль, однако последнее слово остается за браузером относительно того, поддерживает ли он указанную услугу. Можно сказать, что дайджест - это немного более надежная реализация против снифферов. Предлагаю вам вникнуть в это.
AuthName «Постучите в дверь перед входом».
Это сообщение, которое появится пользователю в браузере с формой входа, и оно может быть любым, каким мы захотим.
AuthUserFile /var/www/.pass/.htpasswd
Путь к файлу .htpasswd. По этой причине я говорю, что нет необходимости даже называть его .htpasswd, просто указание пути будет работать так же.
Требуется действительный пользователь
Эта линия предназначена для нескольких пользователей с индивидуальными паролями. В случае, если это один пользователь, это можно резюмировать как следующий вариант.
Требовать пользователя el_que_sea
В моем примере это могло быть: Требовать пользователя Люка
И, наконец, мы все закрываем
Перезапускаем apache:
# service apache2 restart
Давай попробуем.
Если мы не пройдем аутентификацию правильно, мы получим ошибку 401.
С другой стороны, если мы введем правильное имя пользователя и пароль, это позволит нам пройти без особых неудобств.
Дополнительные советы.
- Чтобы добавить больше пользователей в уже созданный файл htpasswd, вы можете использовать эту команду
htpasswd -mb /home/krel/.htpasswd Пароль пользователя
Если вы установили «Требовать пользователя», а не «Требовать действительного пользователя», вы должны добавить нового пользователя, за которым следует предыдущий и разделить их пробелом. Пример:
Требовать пользователя Люка Энакина
- Использовать группы пользователей
Если вместо отдельных пользователей мы предпочитаем или должны работать с группами на следующем веб-сайте, они объясняют это очень подробно, и это отличная статья.
http://www.juanfelipe.net/node/23
- Мы также можем установить другой тип шифрования, например: SHA
htpasswd -sb /home/krel/.htpasswd Пароль пользователя
Вот изображение того, как регистрация пароля SHA будет отражена в .htpasswd. В обоих это был «скайуокер».
Узнать больше.
htpasswd - -help
Если вы хотите углубиться в эту тему, RTFM всегда хорош!
http://httpd.apache.org/docs/2.0/es/howto/auth.html
http://httpd.apache.org/docs/2.2/misc/password_encryptions.html
Этот PHP-скрипт со страницы Университета Гранады также заинтересовал меня в создании генератора htaccess и htpasswd. Мне не удалось применить это на практике, но я приглашаю вас «подглядывать с умом».
HTML-шаблон, который я получил с этой страницы, на случай, если кому-то интересно.
http://www.templatemo.com/
Надеюсь, вам понравилась эта презентация htpasswd.
Теперь, снова читая пост, я понял, что натворил небольшой беспорядок. Когда я объясняю строки в конфигурации сайта, в AuthUserFile я помещаю /var/www/.pass/.htpasswd, когда это должно быть:
/home/krel/.htpasswd.
На изображении все в порядке, но там это ускользнуло от меня, это то, что я ранее делал статью с этим маршрутом, но в последнюю минуту я изменил его и, кажется, пропустил исправление.
Заранее прошу прощения.
Любая альтернатива наутилусу ??
То, о чем вы спрашиваете, я думаю, наоборот, но я все равно вам отвечу.
Я считаю, что с Cryptkeeper было бы полезно защитить каталоги и тому подобное.
Если честно, если что-то, что я ненавижу в gnome, - это наутилус. Dolphin (KDE) гораздо мощнее именно для таких вещей, как защита, шифрование с помощью gpg и т. Д.
Крел, спасибо за полные уроки, которые вы здесь приносите, и особенно за то, что это не такие общие темы ...
Ура !!! ...
Привет, все прошло хорошо, но ... когда я закрываю вкладку Chrome и открываю другую, я пишу адрес, и он не спрашивает у меня пароль ...
кто сказал, что это не крикливо.
Это было именно то, что я искал, и лучше объяснить невозможно
Большое спасибо.
приветствие
Привет, большое спасибо за информацию, особенно за добавление нескольких пользователей в .htpasswd.
Будьте здоровы!
Поздравляю, это очень хорошая, понятная и удобоваримая статья. огромное спасибо
Когда я ввожу имя пользователя и пароль, появляется ошибка 500
AuthType Basic
AuthName "Tocc tocc"
AuthUserFile /var/www/html/.pass/.htpasswd
Требовать пользователя Акира
Как здорово, что я комментирую, не глядя на другие комментарии perodna.
Отлично работает отличный пост
Привет, хороший учебник, но есть ли альтернатива "htpasswd"? Я спрашиваю, потому что я использую linux mint 17.3, и у меня нет команды… нужно ли мне ее устанавливать?
Хорошо, я понял ... Мне пришлось установить его с помощью sudo apt-get install apache2-utils
Здравствуйте, отличный учебник, я сделал именно так, как указано здесь, единственное, что вместо выполнения того, что указано в пункте 2:
нано / и т. д. / apache2 / сайты-доступные / по умолчанию
Это сработало для меня с
нано /etc/apache2/sites-enabled/000-default.conf
Приветствую, у меня не работает 🙁 моя папка не отображается на моем сервере, то есть я защищал свою папку / var / 222 / html / content, и при входе из браузера папка с контентом не появляется. Помогите