Kako zaštititi naše web stranice pomoću primjera .htpasswd +

Iz mnogo razloga može biti vrlo korisno imati kontroliran pristup određenim direktorijima na web serveru ili jednostavno sadržaju naše stranice ili bloga putem usluge autentikacije na osnovu korisničkog imena i lozinke. Govorim o nečemu poput tipičnog prozora koji se pojavljuje kada želimo ući na web stranicu s ograničenim uslugama.

Postoji nekoliko načina za generiranje prozora s formom za autentifikaciju, ali zanimljivo rješenje na nivou servera pruža htpasswd. To je uslužni program čija je funkcija pohranjivanje lozinki u šifriranom obliku kako bi ih Apache koristio u uslugama provjere autentičnosti. Njegova upotreba bi nam omogućila da prikažemo određene direktorije ili datoteke putem http-a samo identificiranim korisnicima i bez da ih učinimo svima dostupnima.

Razumijem da to nije baš upadljiva tema, ali nekome može biti korisna. Sve dok ih ne dosađujem do smrti, koristiću slike da ih učinim edukativnijim.

Prethodna razmatranja: Koristit ću Ubuntu Server 12.04.1 y Apache 2.2.22 u kontrolisanom okruženju.

Počinjemo.

Kao što neki od vas možda već znaju, po defaultu su dostupne Apache lokacije pohranjene u direktoriju / var / www / a za ovaj primjer napravit ću direktorij s HTML šablonom i pokušati ga zaštititi sa .htpasswd.

Direktorij za zaštitu je /var/www/example/ gde sam postavio sledeću stranicu.

Na serveru

U pretraživaču

1. Kreirajmo .htpasswd.

Mjesto na kojem će se nalaziti je od relevantnog značaja i stavljanje van javnog imenika može biti više nego preporučljivo. U mom slučaju stavit ću ga u svoj lični folder (koji nije javni Apache direktorij) i pod imenom .htpasswd (A priori nema potrebe da se to tako zove, ali skriveno je uvijek dobro).

Za korisnike koji su novi u Linuxu. Da biste sakrili direktorij ili datoteku, trebate samo započeti njegovo ime tačkom (.).

Sa sljedećom komandom kreiram .htpasswd datoteku za web korisnika kojeg sam nazvao: “Luke”.

# htpasswd -c /home/krel/.htpasswd Luke

Tražiće od nas da unesemo lozinku dva puta, u mom slučaju sam stavio "skywalker" (bez navodnika). U nekontroliranom okruženju moramo uspostaviti jače lozinke. Podrazumevana enkripcija na Linuxu je MD5, ali na Unixu je standardna implementacija crypt() i za lozinke sa manje od 8 karaktera može biti ranjiva. Sada se pitam da li je isto u BSD-u.

Komanda ima ovu strukturu:

  • -c → da kreirate datoteku
  • /home/krel/.htpasswd → apsolutna putanja datoteke.
  • Luka → ime korisnika (može biti šta god želite)

Isto tako, nikoga ne prisiljavam da koristi terminal kada postoje servisi na internetu za ovo:
http://www.web2generators.com/apache/htpasswd_generator

http://www.htaccesstools.com/htpasswd-generator/

Kopiramo rezultat u tekstualnu datoteku i sa imenom .htpasswd ako želite. Što se tiče ove metode, svakako pročitajte šta sam rekao u sljedećem paragrafu.

U našem slučaju videćemo da je fajl generisan tamo gde smo očekivali /home/krel/.htpasswd. Na slici sam istakao da ovim metodom datoteka pripada Apache grupi i korisniku, što se u Ubuntu-u zove www-data. Ovo je važno jer ako smo .htpasswd generirali na neki drugi način, moramo biti sigurni da ima 644 dozvole.

E, sad ćemo vidjeti kakva su im crijeva:

Kao što vidite, korisnik (Luke) je tu, ali je lozinka šifrirana.

Na ovaj način smo već kreirali i dizajnirali .htpasswd za korisnika Luke, na kraju on nije ništa drugo do kontejner za lozinku. “Sve sa jednom komandom” bi bio dobar slogan.

2. Konfigurišite Apache da ga koristi i dozvolite tu uslugu na sajtu.

# nano /etc/apache2/sites-available/default

Ako imate nekoliko hostova, morate raditi na svakom od njih, u mom slučaju imam samo onaj koji dolazi po defaultu. Ne zaboravite da je uvijek dobro napraviti sigurnosnu kopiju te datoteke.

Taj fajl ima zadanu strukturu:

ServerAdmin webmaster @ localhost

..................

..................

Upravo unutar zaglavlja Virtualhost-a će biti specificirano korištenje .htpasswd za pristup određenom direktoriju. Radimo to kako se prikazuje slika ispod i odgovara našem primjeru:

Dobro. Objašnjavam redove:

Morate postaviti imenik za zaštitu.

AuthType Basic

To je tip pregovaranja korisnika i lozinke sa pretraživačem, u ovom slučaju je osnovni, nešifrovan.

Postoji još jedna vrsta transakcije: Digest, ovo šifrira korisničko ime i lozinku, međutim pretraživač ima posljednju riječ o tome da li podržava navedenu uslugu. Može se reći da je Digest nešto robusnija implementacija protiv sniffera. Pozivam vas da uđete dublje u ovo.

AuthName "Kucajte na vrata prije ulaska."

To je poruka koja će se pojaviti korisniku u pretraživaču sa formularom za prijavu i može biti šta god želimo.

AuthUserFile /var/www/.pass/.htpasswd

Putanja do .htpasswd datoteke. Iz tog razloga kažem da nije ni potrebno imenovati ga .htpasswd, jednostavno stavljanje putanje radilo bi isto.

Zahtevaj validan korisnik

Ova linija je dizajnirana za više korisnika s individualiziranim lozinkama. U slučaju da se radi o jednom korisniku, to se može sažeti u sljedeću varijantu.

Zahtijeva korisnika el_que_sea

U mom primjeru to bi moglo biti: Zahtijeva korisnika Luke

I konačno sve zaključavamo

Ponovo pokrećemo apache:

# service apache2 restart

Pokusajmo.

Ako ne izvršimo ispravnu autentifikaciju, dobićemo grešku 401.

S druge strane, ako unesemo ispravno korisničko ime i lozinku, to bi nas propuštalo bez većih problema.

Dodatni savjeti.

  • Za dodavanje više korisnika u već kreiranu htpasswd datoteku možete koristiti ovu naredbu

htpasswd -mb /home/krel/.htpasswd Korisnička lozinka

Ako ste postavili “Zahtijevaj korisnika”, a ne “Zahtijevaj validnog korisnika”, morate dodati novog korisnika nakon čega slijedi prethodni i razdvojeni razmakom. primjer:

Zahtijeva korisnika Luke Anakin

  • Koristite grupe korisnika

Ako umjesto pojedinačnih korisnika preferiramo ili moramo raditi s grupama, sljedeća web stranica to objašnjava vrlo detaljno i predstavlja odličan članak.
http://www.juanfelipe.net/node/23

  • Možemo postaviti i drugu vrstu enkripcije, na primjer: SHA

htpasswd -sb /home/krel/.htpasswd Korisnička lozinka

Ovdje ostavljam sliku kako bi se registracija SHA lozinke odrazila na .htpasswd. I u jednom i u drugom bio je "nebeski šetač".

Više informacija

htpasswd – -pomoć

Ako želite dublje ući u ovu temu, RTFM je uvijek dobar!!!
http://httpd.apache.org/docs/2.0/es/howto/auth.html

http://httpd.apache.org/docs/2.2/misc/password_encryptions.html

Takođe me je zanimala ova PHP skripta sa stranice Univerziteta u Granadi za kreiranje htaccess i htpasswd generatora. Nisam to uspio provesti u praksi, ali vas pozivam da "pretražujete obavještajno".

Dobio sam HTML šablon sa ove stranice u slučaju da je neko zainteresovan.
http://www.templatemo.com/

Nadam se da vam se svidjela ova prezentacija htpasswd-a.


Ostavite komentar

Vaša e-mail adresa neće biti objavljena. Obavezna polja su označena sa *

*

*

  1. Za podatke odgovoran: Miguel Ángel Gatón
  2. Svrha podataka: Kontrola neželjene pošte, upravljanje komentarima.
  3. Legitimacija: Vaš pristanak
  4. Komunikacija podataka: Podaci se neće dostavljati trećim stranama, osim po zakonskoj obavezi.
  5. Pohrana podataka: Baza podataka koju hostuje Occentus Networks (EU)
  6. Prava: U bilo kojem trenutku možete ograničiti, oporaviti i izbrisati svoje podatke.

  1.   krel rekao je

    Čitajući ponovo post, shvatio sam da sam napravio malu grešku. Kada objašnjavam linije u konfiguraciji sajta, u AuthUserFile stavljam /var/www/.pass/.htpasswd kada treba da bude:
    /home/krel/.htpasswd.

    Na slici je u redu ali tamo mi je promaklo, ranije sam pisao članak sa tom rutom, ali sam ga u zadnji čas promijenio i očito sam propustio da ga ispravim.

    Unapred se izvinjavam.

  2.   fernando rekao je

    Ima li alternativa za Nautilus?

    1.    krel rekao je

      Mislim da ovo što pitaš ide na drugu stranu, ali ću ti svejedno odgovoriti.
      Mislim da bi sa Cryptkeeperom bilo korisno zaštititi direktorije i slične stvari.

      Ako budem iskren, nešto što mrzim kod gnoma je nautilus. Dolphin (KDE) je mnogo moćniji upravo za ove stvari zaštite, šifriranja pomoću gpg-a itd...

  3.   DMoZ rekao je

    Krel, hvala ti na kompletnim tutorijalima koje donosiš i prije svega što nisu tako česte teme...

    Živjeli !!! ...

  4.   Juan Carlos rekao je

    Pozdrav, sve je prošlo kako treba ali... kada zatvorim Chrome karticu i otvorim drugu, napišem adresu i ne pita me za lozinku...

  5.   druže rekao je

    koji je rekao da nije upadljivo.
    To je bilo ono što sam tražio, i ne može se bolje objasniti.
    Hvala puno.
    pozdravi

  6.   basco7 rekao je

    Zdravo, puno vam zahvaljujem na informacijama, posebno na dijelu o dodavanju više korisnika u .htpasswd.

    Bog te blagoslovio!

  7.   Mohtadi rekao je

    Čestitam, ovo je vrlo dobar, jasan i probavljiv članak. Hvala ti puno

  8.   eduardo rekao je

    Daje mi grešku 500 kada unesem korisničko ime i lozinku

    AuthType Basic
    AuthName “Kuc, kuc”
    AuthUserFile /var/www/html/.pass/.htpasswd
    Zahtijeva korisnika Akira

  9.   eduardo rekao je

    Koliko mi je veliko da komentarišem ne gledajući ostale komentare, ali.
    Odlično radi odličan post

  10.   Somnus Senior rekao je

    Zdravo, dobar vodič, ali postoji li alternativa za "htpasswd"? Pitam jer koristim Linux Mint 17.3 i nemam komandu... da li moram da je instaliram?

  11.   Somnus Senior rekao je

    U redu, shvatio sam... Morao sam da ga instaliram sa sudo apt-get install apache2-utils

  12.   Fernando Montilla rekao je

    Pozdrav, odličan tutorijal, uradio sam to tačno kako je ovde naznačeno, jedino što je umesto izvršenja navedenog u tački 2:

    nano /etc/apache2/sites-available/default

    Upalilo mi je

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

  13.   Jorge Rodrigo Torrez Aramayo rekao je

    Pozdrav, meni ne ide 🙁 moj folder se ne pojavljuje na mom serveru, odnosno zaštitio sam svoj /var/222/html/content folder i kada uđem iz pretraživača se ne pojavljuje folder sa sadržajem. Upomoć