Как защитить наши сайты с помощью .htpasswd + Примеры

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

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

Я понимаю, что это не слишком яркая тема, но некоторым она может быть полезна. Чтобы не убивать их скукой, я буду использовать изображения, чтобы сделать это более поучительным.

Предыдущие соображения: я буду использовать Сервер Ubuntu 12.04.1 y Apache 2.2.22 в контролируемой среде.

Мы начинаем

Как некоторые, возможно, уже знают, по умолчанию доступные сайты Apache хранятся в каталоге / Var / WWW / и для этого примера я создам каталог с шаблоном HTML и попытаюсь защитить его с помощью .htpasswd.

Каталог для защиты / var / www / example / где я разместил следующую страницу.

На сервере В браузере

1. Мы собираемся создать .htpasswd.

Место, где он будет расположен, имеет важное значение, и размещение его вне общедоступного каталога может быть более чем рекомендовано. В моем случае я помещу его в свою личную папку (которая не является общедоступным каталогом Apache) и с именем .htpasswd (Априори так называть не стоит, но то, что скрыто, всегда хорошо).

Для пользователей, плохо знакомых с Linux. Чтобы скрыть каталог или файл, необходимо только начинать его имя с точки (.).

С помощью следующей команды я создаю файл .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.


Содержание статьи соответствует нашим принципам редакционная этика. Чтобы сообщить об ошибке, нажмите здесь.

14 комментариев, оставьте свой

Оставьте свой комментарий

Ваш электронный адрес не будет опубликован. Обязательные для заполнения поля помечены *

*

*

  1. Ответственный за данные: Мигель Анхель Гатон
  2. Назначение данных: контроль спама, управление комментариями.
  3. Легитимация: ваше согласие
  4. Передача данных: данные не будут переданы третьим лицам, кроме как по закону.
  5. Хранение данных: база данных, размещенная в Occentus Networks (ЕС)
  6. Права: в любое время вы можете ограничить, восстановить и удалить свою информацию.

  1.   Крель сказал

    Теперь, снова читая пост, я понял, что натворил небольшой беспорядок. Когда я объясняю строки в конфигурации сайта, в AuthUserFile я помещаю /var/www/.pass/.htpasswd, когда это должно быть:
    /home/krel/.htpasswd.

    На изображении все в порядке, но там это ускользнуло от меня, это то, что я ранее делал статью с этим маршрутом, но в последнюю минуту я изменил его и, кажется, пропустил исправление.

    Заранее прошу прощения.

  2.   Фернандо сказал

    Любая альтернатива наутилусу ??

    1.    Крель сказал

      То, о чем вы спрашиваете, я думаю, наоборот, но я все равно вам отвечу.
      Я считаю, что с Cryptkeeper было бы полезно защитить каталоги и тому подобное.

      Если честно, если что-то, что я ненавижу в gnome, - это наутилус. Dolphin (KDE) гораздо мощнее именно для таких вещей, как защита, шифрование с помощью gpg и т. Д.

  3.   DMoZ сказал

    Крел, спасибо за полные уроки, которые вы здесь приносите, и особенно за то, что это не такие общие темы ...

    Ура !!! ...

  4.   Хуан Карлос сказал

    Привет, все прошло хорошо, но ... когда я закрываю вкладку Chrome и открываю другую, я пишу адрес, и он не спрашивает у меня пароль ...

  5.   приятель сказал

    кто сказал, что это не крикливо.
    Это было именно то, что я искал, и лучше объяснить невозможно
    Большое спасибо.
    приветствие

  6.   basco7 сказал

    Привет, большое спасибо за информацию, особенно за добавление нескольких пользователей в .htpasswd.

    Будьте здоровы!

  7.   Мохтади сказал

    Поздравляю, это очень хорошая, понятная и удобоваримая статья. огромное спасибо

  8.   Эдуардо сказал

    Когда я ввожу имя пользователя и пароль, появляется ошибка 500

    AuthType Basic
    AuthName "Tocc tocc"
    AuthUserFile /var/www/html/.pass/.htpasswd
    Требовать пользователя Акира

  9.   Эдуардо сказал

    Как здорово, что я комментирую, не глядя на другие комментарии perodna.
    Отлично работает отличный пост

  10.   Сомнус Старший сказал

    Привет, хороший учебник, но есть ли альтернатива "htpasswd"? Я спрашиваю, потому что я использую linux mint 17.3, и у меня нет команды… нужно ли мне ее устанавливать?

  11.   Сомнус Старший сказал

    Хорошо, я понял ... Мне пришлось установить его с помощью sudo apt-get install apache2-utils

  12.   Фернандо Монтилья сказал

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

    нано / и т. д. / apache2 / сайты-доступные / по умолчанию

    Это сработало для меня с

    нано /etc/apache2/sites-enabled/000-default.conf

  13.   Хорхе Родриго Торрес Арамайо сказал

    Приветствую, у меня не работает 🙁 моя папка не отображается на моем сервере, то есть я защищал свою папку / var / 222 / html / content, и при входе из браузера папка с контентом не появляется. Помогите