Как защитить наши сайты с помощью .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.   ДМОЗ сказал

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

    Ура !!! ...

  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, и при входе из браузера папка с контентом не появляется. Помогите