Z wielu powodów bardzo przydatne może być kontrolowanie dostępu do niektórych katalogów na serwerze WWW lub po prostu do zawartości naszej strony lub bloga za pośrednictwem usługi uwierzytelniania opartej na nazwie użytkownika i haśle. Mówię o czymś w rodzaju typowego okna, które pojawia się, gdy chcemy wejść na stronę z ograniczonymi usługami.
Istnieje kilka sposobów generowania okien z formularzem uwierzytelniającym, ale zapewniono interesujące rozwiązanie na poziomie serwera htpasswd. Jest to narzędzie, którego funkcją jest przechowywanie haseł w postaci zaszyfrowanej do wykorzystania przez Apache w usługach uwierzytelniania. Jego użycie pozwoliłoby nam pokazać określone katalogi lub pliki przez http tylko zidentyfikowanym użytkownikom i niekoniecznie byłyby swobodnie dostępne dla każdego.
Rozumiem, że nie jest to zbyt krzykliwy temat, ale niektórym może się przydać. Aby nie zabijać ich nudą, użyję obrazów, aby uczynić to bardziej dydaktycznym.
Wcześniejsze rozważania: użyję Ubuntu Server 12.04.1 y Apache 2.2.22 w kontrolowanym środowisku.
Zaczynamy.
Jak niektórzy mogą już wiedzieć, domyślnie dostępne witryny Apache są przechowywane w katalogu / var / www / iw tym przykładzie utworzę katalog z szablonem HTML i spróbuję go osłonić za pomocą .htpasswd.
Katalog do ochrony to / var / www / example / gdzie umieściłem następną stronę.
1. Utworzymy plik .htpasswd.
Miejsce, w którym będzie się znajdować, ma istotne znaczenie i umieszczenie go poza publicznym katalogiem może być więcej niż zalecane. W moim przypadku umieszczę go w swoim folderze osobistym (który nie jest publicznym katalogiem Apache) i pod nazwą .htpasswd (A priori nie trzeba tego tak nazywać, ale ten, który jest ukryty, jest zawsze dobry).
Za pomocą następującego polecenia tworzę plik .htpasswd dla użytkownika internetowego, którego nazwałem jako: „Luke”.
# htpasswd -c /home/krel/.htpasswd Luke
Poprosi nas o dwukrotne podanie hasła, w moim przypadku wpisałem „skywalker” (bez cudzysłowów). W niekontrolowanym środowisku musimy ustanowić silniejsze hasła. Domyślnym szyfrowaniem w Linuksie jest MD5, ale w Uniksie jest to standardowa implementacja crypt (), a dla haseł zawierających mniej niż 8 znaków może być podatna na ataki. Teraz pojawia się pytanie, czy tak samo jest w BSD.
Polecenie ma następującą strukturę:
- -c →, aby utworzyć plik
- /home/krel/.htpasswd → bezwzględna ścieżka do pliku.
- Luke → nazwa użytkownika (może być dowolna)
Podobnie nie zmuszam nikogo do korzystania z terminala, gdy w Internecie są do niego usługi:
http://www.web2generators.com/apache/htpasswd_generator
http://www.htaccesstools.com/htpasswd-generator/
Kopiujemy wynik w pliku tekstowym z nazwą .htpasswd, jeśli chcesz. Jeśli chodzi o tę metodę, nie przestawaj czytać tego, co skomentuję w następnym akapicie.
W naszym przypadku zobaczymy, że plik został wygenerowany tam, gdzie ich oczekiwaliśmy /home/krel/.htpasswd. Na obrazku zaznaczyłem, że tą metodą plik należy do użytkownika i grupy Apache, która w Ubuntu nazywa się www-data. Jest to ważne, ponieważ jeśli wygenerowaliśmy plik .htpasswd w jakikolwiek inny sposób, musimy upewnić się, że ma uprawnienia 644.
Cóż, teraz zobaczymy, jakie są ich wnętrzności:
Jak widać, jest użytkownik (Luke), ale hasło jest zaszyfrowane.
W ten sposób stworzyliśmy i zaprojektowaliśmy już .htpasswd dla użytkownika Luke, ostatecznie jest to nic innego jak kontener na hasło. „Wszystko z jednym poleceniem” byłoby dobrym hasłem.
2. Skonfiguruj Apache do używania i zezwalania na tę usługę w witrynie.
# nano /etc/apache2/sites-available/default
Jeśli masz kilka hostów, powinny działać na każdym z nich, w moim przypadku mam tylko ten, który jest domyślnie. Nie zapominaj, że zawsze dobrze jest wykonać kopię zapasową tego pliku.
Ten plik ma domyślną strukturę:
Webmaster ServerAdmin @ localhost
..................
..................
To właśnie w nagłówkach Virtualhost zostanie określone użycie .htpasswd w celu uzyskania dostępu do określonego katalogu. Robimy to tak, jak widać na poniższym obrazku i pasuje do naszego przykładu:
Musisz umieścić katalog do ochrony.
AuthType Basic
Jest to typ użytkownika i hasło negocjowane z przeglądarką, w tym przypadku jest to Basic, bez szyfrowania.
Jest jeszcze jeden rodzaj negocjacji: Digest, ten szyfruje nazwę użytkownika i hasło, jednak ostatnie słowo to przeglądarka, czy obsługuje tę usługę. Można powiedzieć, że Digest jest nieco bardziej niezawodną implementacją przeciwko snifferom. Zapraszam do zagłębienia się w to.
AuthName „Zapukaj do drzwi przed wejściem”.
Jest to wiadomość, która pojawi się użytkownikowi w przeglądarce wraz z formularzem logowania i może to być ten, którego chcemy.
PlikAuthUserFile /var/www/.pass/.htpasswd
Ścieżka do pliku .htpasswd. Z tego powodu mówię, że nie jest nawet konieczne nazywanie go .htpasswd, po prostu umieszczenie ścieżki działałoby tak samo.
Wymagać ważnej użytkownikowi
Ta linia jest przeznaczona dla wielu użytkowników ze zindywidualizowanymi hasłami. W przypadku pojedynczego użytkownika można to podsumować jako następujący wariant.
Wymagaj użytkownika el_que_sea
W moim przykładzie mogłoby to być: Wymagaj użytkownika Luke
I wreszcie wszystko zamykamy
Ponownie uruchamiamy Apache:
# service apache2 restart
Spróbujmy.
Jeśli nie uwierzytelnimy się poprawnie, otrzymamy błąd 401.
Z drugiej strony, jeśli podamy poprawną nazwę użytkownika i hasło, pozwoliłoby nam to przejść bez większych niedogodności.
Dodatkowe wskazówki.
- Aby dodać więcej użytkowników do już utworzonego pliku htpasswd, możesz użyć tego polecenia
htpasswd -mb /home/krel/.htpasswd Hasło użytkownika
Jeśli ustawiłeś „Wymagaj użytkownika”, a nie „Wymagaj ważnego użytkownika”, musisz dodać nowego użytkownika, a następnie poprzedniego i oddzielając je spacją. Przykład:
Wymagaj użytkownika Luke Anakin
- Użyj grup użytkowników
Jeśli zamiast indywidualnych użytkowników wolimy lub musimy pracować z grupami na poniższej stronie internetowej, wyjaśniają to szczegółowo i jest to doskonały artykuł.
http://www.juanfelipe.net/node/23
- Możemy też ustawić inny rodzaj szyfrowania, na przykład: SHA
htpasswd -sb /home/krel/.htpasswd Hasło użytkownika
Oto obraz tego, jak rejestracja hasła SHA byłaby odzwierciedlona w .htpasswd. W obu był to „skywalker”.
Dowiedz się więcej.
htpasswd - -help
Jeśli chcesz zagłębić się w ten temat, RTFM jest zawsze dobry!
http://httpd.apache.org/docs/2.0/es/howto/auth.html
http://httpd.apache.org/docs/2.2/misc/password_encryptions.html
Znalazłem również ciekawy skrypt PHP ze strony Uniwersytetu w Granadzie, aby stworzyć htaccess i generator htpasswd. Nie udało mi się zastosować tego w praktyce, ale zapraszam was do „podważania inteligencji”.
Szablon HTML, który otrzymałem z tej strony na wypadek, gdyby ktoś był zainteresowany.
http://www.templatemo.com/
Mam nadzieję, że spodobała Ci się ta prezentacja htpasswd.
Teraz ponownie czytając post zdałem sobie sprawę, że zrobiłem mały bałagan. Kiedy wyjaśniam linie w konfiguracji witryny, w AuthUserFile umieszczam /var/www/.pass/.htpasswd, kiedy powinno być:
/home/krel/.htpasswd.
Na obrazku jest w porządku ale tam mi to umknęło, jest to, że wcześniej zrobiłem artykuł tą trasą, ale w ostatniej chwili go zmieniłem i wydaje się, że mógłbym to poprawić.
Z góry przepraszam.
Jakaś alternatywa dla Nautilusa ??
To, o co pytasz, wydaje mi się, że idzie w drugą stronę, ale i tak ci odpowiadam.
Uważam, że w przypadku Cryptkeepera przydatne byłoby zabezpieczenie katalogów i tym podobnych rzeczy.
Szczerze mówiąc, jeśli coś, czego nienawidzę w gnomie, to łodzik. Dolphin (KDE) jest znacznie potężniejszy właśnie w następujących przypadkach: ochrona, szyfrowanie za pomocą gpg itp ...
Krel, dziękuję za kompletne samouczki, które tu przynosisz, a zwłaszcza za to, że nie są tak powszechnymi tematami ...
Twoje zdrowie !!! ...
Witam wszystko poszło dobrze ale ... jak zamykam zakładkę chrome i otwieram kolejną to piszę adres i nie pyta o hasło ...
który powiedział, że to nie było krzykliwe.
To było właśnie to, czego szukałem i lepiej wyjaśnione, niemożliwe
Dziękuję bardzo.
pozdrowienia
Witam, bardzo dziękuję za informacje, zwłaszcza część dodawania wielu użytkowników w .htpasswd.
Niech cię Bóg błogosławi!
Gratulacje, to bardzo dobry artykuł, czytelny i przyswajalny. Dziękuję bardzo
Po wpisaniu nazwy użytkownika i hasła pojawia się błąd 500
AuthType Basic
AuthName „Tocc tocc”
PlikAuthUserFile /var/www/html/.pass/.htpasswd
Wymagaj użytkownika Akira
Jak wspaniale mi się to zdarza, że komentuję bez patrzenia na inne komentarze.
Działa świetnie, świetny post
Cześć, dobry tutorial, ale czy istnieje alternatywa dla „htpasswd”? Pytam, dlaczego używam linux mint 17.3 i nie mam polecenia… czy muszę go zainstalować?
Ok, wymyśliłem to ... Musiałem go zainstalować za pomocą sudo apt-get install apache2-utils
Witam, świetny tutorial, zrobiłem to dokładnie tak, jak tutaj wskazano, jedyne, że zamiast wykonać to co jest wskazane w punkcie 2:
nano / etc / apache2 / sites-available / default
U mnie to zadziałało
nano /etc/apache2/sites-enabled/000-default.conf
Pozdrawiam, u mnie to nie działa 🙁 mój folder nie pojawia się na moim serwerze, to znaczy chroniłem mój folder / var / 222 / html / content, a kiedy wchodzę z przeglądarki, folder zawartości nie pojawia się. Wsparcie