Jak chronić nasze witryny za pomocą .htpasswd + Przykłady

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ę.

Na serwerze

W przeglądarce

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).

Dla nowych użytkowników Linuksa. Aby ukryć katalog lub plik, wystarczy zacząć jego nazwę od kropki (.).

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:

Dobry. Wyjaśniam linie:

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.


Zostaw swój komentarz

Twój adres e-mail nie zostanie opublikowany. Wymagane pola są oznaczone *

*

*

  1. Odpowiedzialny za dane: Miguel Ángel Gatón
  2. Cel danych: kontrola spamu, zarządzanie komentarzami.
  3. Legitymacja: Twoja zgoda
  4. Przekazywanie danych: Dane nie będą przekazywane stronom trzecim, z wyjątkiem obowiązku prawnego.
  5. Przechowywanie danych: baza danych hostowana przez Occentus Networks (UE)
  6. Prawa: w dowolnym momencie możesz ograniczyć, odzyskać i usunąć swoje dane.

  1.   krelu powiedział

    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.

  2.   Fernando powiedział

    Jakaś alternatywa dla Nautilusa ??

    1.    krelu powiedział

      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 ...

  3.   DMoZ powiedział

    Krel, dziękuję za kompletne samouczki, które tu przynosisz, a zwłaszcza za to, że nie są tak powszechnymi tematami ...

    Twoje zdrowie !!! ...

  4.   Juan Carlos powiedział

    Witam wszystko poszło dobrze ale ... jak zamykam zakładkę chrome i otwieram kolejną to piszę adres i nie pyta o hasło ...

  5.   kumpel powiedział

    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

  6.   basco7 powiedział

    Witam, bardzo dziękuję za informacje, zwłaszcza część dodawania wielu użytkowników w .htpasswd.

    Niech cię Bóg błogosławi!

  7.   Mohtadi powiedział

    Gratulacje, to bardzo dobry artykuł, czytelny i przyswajalny. Dziękuję bardzo

  8.   eduardo powiedział

    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

  9.   eduardo powiedział

    Jak wspaniale mi się to zdarza, że ​​komentuję bez patrzenia na inne komentarze.
    Działa świetnie, świetny post

  10.   Senior śpi powiedział

    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ć?

  11.   Senior śpi powiedział

    Ok, wymyśliłem to ... Musiałem go zainstalować za pomocą sudo apt-get install apache2-utils

  12.   Fernando Montilla powiedział

    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

  13.   Jorge Rodrigo Torreza Aramayo powiedział

    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