З багатьох причин може бути дуже корисним мати контрольований доступ до певних каталогів на веб-сервері або просто до вмісту нашої сторінки чи блогу через службу автентифікації на основі імені користувача та пароля. Я говорю про щось на зразок типового вікна, яке з’являється, коли ми хочемо зайти на веб-сайт із обмеженими послугами.
Існує кілька способів створення вікон із формою автентифікації, але пропонується цікаве рішення на рівні сервера htpasswd. Це утиліта, функцією якої є зберігання паролів у зашифрованому вигляді для використання Apache в службах автентифікації. Його використання дозволило б показувати певні каталоги або файли через http лише визначеним користувачам і не обов'язково бути у вільному доступі для всіх.
Я розумію, що це не дуже кричуща тема, але для когось вона може бути корисною. Щоб не вбивати їх нудьгою, я буду використовувати зображення, щоб зробити його більш дидактичним.
Попередні міркування: я буду використовувати Сервер Ubuntu 12.04.1 y Apache 2.2.22 в контрольованому середовищі.
Ми починаємо.
Як деякі вже можуть знати, за замовчуванням доступні сайти Apache зберігаються в каталозі / var / www / і для цього прикладу я створю каталог із шаблоном HTML і спробую захистити його .htpasswd.
Каталог для захисту - / var / www / приклад / де я розмістив наступну сторінку.
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
Це тип користувача та пароль, узгоджені з браузером, в даному випадку це 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.
Тепер, читаючи пост ще раз, я зрозумів, що вчинив невеликий хаос. Коли я пояснюю рядки в конфігурації сайту, в AuthUserFile я поміщаю /var/www/.pass/.htpasswd, коли це має бути:
/home/krel/.htpasswd.
На зображенні це нормально, але там мені це вдалося, це те, що я раніше робив статтю цим маршрутом, але в останню хвилину я її змінив, і, схоже, я пропустив її виправлення.
Заздалегідь перепрошую.
Будь-яка альтернатива для nautilus ??
Те, що ви запитуєте, я думаю, йде іншим шляхом, але я все одно відповідаю вам.
Я вважаю, що з Cryptkeeper було б корисно захистити каталоги та подібні речі.
Якщо я чесний, якщо щось, що я ненавиджу в гномі, - це наутілус. Dolphin (KDE) набагато потужніший саме для цих речей: захищати, шифрувати за допомогою gpg тощо.
Креле, дякую за повні підручники, які ви тут приносите, і особливо за те, що ви не дуже поширені теми ...
На ура !!! ...
Привіт, все пройшло добре, але .. коли я закриваю вкладку chrome і відкриваю іншу, я пишу адресу, і він не запитує пароль ...
хто сказав, що це не було кричущо.
Це було саме те, що я шукав, а краще пояснити неможливо
Дуже дякую.
Привітання
Привіт, я щиро вдячний вам за інформацію, особливо за частину додавання кількох користувачів у .htpasswd.
Бог благословить вас!
Вітаємо, це дуже гарна, зрозуміла та засвоювана стаття. Дуже дякую
Під час введення імені користувача та пароля мені видається помилка 500
AuthType Basic
AuthName "Tocc tocc"
AuthUserFile /var/www/html/.pass/.htpasswd
Потрібен користувач Akira
Як здорово це трапляється зі мною за коментарі, не дивлячись на інші коментарі perodna.
Чудово працює чудовий пост
Привіт, хороший підручник, але чи існує альтернатива "htpasswd"? Я запитую, чому я використовую linux mint 17.3, а у мене немає команди ... чи потрібно його встановлювати?
Гаразд, я зрозумів ... мені довелося встановити його за допомогою sudo apt-get install apache2-utils
Привіт, чудовий підручник, я зробив це саме так, як зазначено тут, єдине, що замість того, щоб виконати те, що вказано в пункті 2:
nano / etc / apache2 / sites-available / default
У мене це працювало
nano /etc/apache2/sites-enabled/000-default.conf
З привітанням, це не працює для мене 🙁 моя папка не відображається на моєму сервері, тобто я захистив свою папку / var / 222 / html / content, а при вході з браузера папка вмісту не відображається. Допомога