Як захистити наші веб-сайти за допомогою прикладів .htpasswd +

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

Існує кілька способів створення вікон із формою автентифікації, але пропонується цікаве рішення на рівні сервера htpasswd. Це утиліта, функцією якої є зберігання паролів у зашифрованому вигляді для використання Apache в службах автентифікації. Його використання дозволило б показувати певні каталоги або файли через http лише визначеним користувачам і не обов'язково бути у вільному доступі для всіх.

Я розумію, що це не дуже кричуща тема, але для когось вона може бути корисною. Щоб не вбивати їх нудьгою, я буду використовувати зображення, щоб зробити його більш дидактичним.

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

Ми починаємо.

Як деякі вже можуть знати, за замовчуванням доступні сайти Apache зберігаються в каталозі / var / www / і для цього прикладу я створю каталог із шаблоном HTML і спробую захистити його .htpasswd.

Каталог для захисту - / var / www / приклад / де я розмістив наступну сторінку.

На сервері

У браузері

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

Це тип користувача та пароль, узгоджені з браузером, в даному випадку це 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. В обох це був "skywalker".

Дізнатися більше.

htpasswd - -допомога

Якщо ви хочете глибше заглибитися в цю тему, 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.   Фернандо - сказав він

    Будь-яка альтернатива для nautilus ??

    1.    крель - сказав він

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

      Якщо я чесний, якщо щось, що я ненавиджу в гномі, - це наутілус. 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
    Потрібен користувач Akira

  9.   Едуардо - сказав він

    Як здорово це трапляється зі мною за коментарі, не дивлячись на інші коментарі perodna.
    Чудово працює чудовий пост

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

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

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

    Гаразд, я зрозумів ... мені довелося встановити його за допомогою sudo apt-get install apache2-utils

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

    Привіт, чудовий підручник, я зробив це саме так, як зазначено тут, єдине, що замість того, щоб виконати те, що вказано в пункті 2:

    nano / etc / apache2 / sites-available / default

    У мене це працювало

    nano /etc/apache2/sites-enabled/000-default.conf

  13.   Хорхе Родріго Торрес Арамайо - сказав він

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