Iz mnogih razloga može biti vrlo korisno imati kontrolirani pristup određenim direktorijima na web poslužitelju ili jednostavno sadržaju naše stranice ili bloga putem usluge provjere autentičnosti na temelju korisničkog imena i lozinke. Govorim o nečemu poput tipičnog prozora koji se pojavljuje kada želimo ući na web mjesto s ograničenim uslugama.
Postoji nekoliko načina za generiranje prozora s obrascem za provjeru autentičnosti, ali pruža se zanimljivo rješenje na razini poslužitelja htpasswd. To je uslužni program čija je funkcija pohranjivanje lozinki u šifriranom obliku koje Apache koristi u uslugama provjere autentičnosti. Njegova bi nam uporaba omogućila da određene direktorije ili datoteke prikazujemo putem http-a samo identificiranim korisnicima, a da pritom nužno ne budu svima dostupni.
Razumijem da to nije vrlo kričava tema, ali nekima može biti korisno. Da ih ne bih ubio dosadom, upotrijebit ću slike kako bih to učinio didaktičnijim.
Prethodna razmatranja: koristit ću Ubuntu poslužitelj 12.04.1 y Apache 2.2.22 u kontroliranom okruženju.
Počinjemo.
Kao što neki možda već znaju, prema zadanim postavkama dostupne Apache stranice pohranjuju se u direktorij / var / www / i za ovaj primjer ću stvoriti direktorij s HTML predloškom i pokušati ga zaštititi .htpasswd.
Direktorij za zaštitu je / var / www / primjer / gdje sam smjestio sljedeću stranicu.
1. Stvorit ćemo .htpasswd.
Mjesto na kojem će se nalaziti je od relevantne važnosti i postavljanje izvan javnog imenika može biti više nego što se preporučuje. U mom slučaju stavit ću ga u svoju osobnu mapu (koja nije javni direktorij Apache) i s imenom .htpasswd (A priori to nije potrebno tako zvati, ali onaj koji je skriven uvijek je dobar).
Sljedećom naredbom izrađujem datoteku .htpasswd za web korisnika kojeg sam nazvao: "Luka".
# htpasswd -c /home/krel/.htpasswd Luke
Od nas će se tražiti da dva puta dostavimo lozinku, u mom slučaju sam stavio "skywalker" (bez navodnika). U nekontroliranom okruženju moramo uspostaviti jače lozinke. Zadana enkripcija na Linuxu je MD5, ali na Unixu je to standardna implementacija crypt () i za lozinke s manje od 8 znakova može biti ranjiva. Sad sumnjam je li tako i u BSD-u.
- -c → za stvaranje datoteke
- /home/krel/.htpasswd → apsolutni put datoteke.
- Luka → korisničko ime (može biti što god želite)
Slično tome, ne prisiljavam nikoga da koristi terminal kada za njega postoje usluge na Internetu:
http://www.web2generators.com/apache/htpasswd_generator
http://www.htaccesstools.com/htpasswd-generator/
Rezultat kopiramo u tekstualnu datoteku i s imenom .htpasswd ako želite. Što se tiče ove metode, nemojte prestati čitati ono što komentiram u sljedećem odlomku.
U našem ćemo slučaju vidjeti da je datoteka generirana tamo gdje smo ih očekivali /home/krel/.htpasswd. Na slici sam naglasio da ovom metodom datoteka pripada grupi apache i korisniku apache, koji se u Ubuntuu naziva www-data. To je važno jer ako smo .htpasswd generirali na bilo koji drugi način, moramo se pobrinuti da ima 644 dozvole.
Eto, sad ćemo vidjeti kakva su im crijeva:
Kao što vidite, postoji korisnik (Luke), ali lozinka je šifrirana.
Na taj smo način već stvorili i dizajnirali .htpasswd za korisnika Luke, na kraju to nije ništa drugo nego spremnik za lozinku. "Sve s jednom naredbom" bila bi dobra krilatica.
2. Konfigurirajte Apache da koristi i dopustite tu uslugu na web mjestu.
# nano /etc/apache2/sites-available/default
Ako imate nekoliko hostova, oni moraju raditi na svakom od njih, u mom slučaju imam samo onog koji je zadan. Ne zaboravite da je uvijek dobro napraviti sigurnosnu kopiju te datoteke.
Ta datoteka ima zadanu strukturu:
ServerAdmin webmaster @ localhost
..................
..................
Upravo će unutar naslova Virtualhost biti navedena upotreba .htpasswd za pristup određenom direktoriju. To radimo onako kako se pojavljuje donja slika i primjereno našem primjeru:
Morate staviti direktorij radi zaštite.
AuthType osnovni
To je vrsta korisnika i lozinke dogovorene s preglednikom, u ovom slučaju to je Basic, bez šifriranja.
Postoji još jedna vrsta pregovaranja: Sažetak, ovo ako šifrira korisničko ime i lozinku, no zadnja je riječ koju preglednik ima da li podržava navedenu uslugu. Sažetak se može reći da je to malo robusnija implementacija protiv njuškalica. Pozivam vas da se udubite u ovo.
AuthName "Zakucajte na vrata prije ulaska."
To je poruka koja će se korisniku prikazati u pregledniku s obrascem za prijavu i može biti ona koju želimo.
AuthUserFile /var/www/.pass/.htpasswd
Put do datoteke .htpasswd. Iz tog razloga kažem da ga čak nije potrebno ni imenovati .htpasswd, jednostavno stavljanje puta isto bi funkcioniralo.
Zahtijevajte valjanog korisnika
Ta je linija dizajnirana za više korisnika s individualiziranim lozinkama. U slučaju da se radi o jednom korisniku, to se može sažeti kao sljedeća varijanta.
Zahtijevaj korisnika el_que_sea
U mom primjeru moj bi mogao biti: Zahtijevaj korisnika Luke
I na kraju sve prilažemo sa
Ponovo pokrećemo apache:
# service apache2 restart
Pokušajmo.
Ako se ne autentificiramo ispravno, dobit ćemo pogrešku 401.
S druge strane, ako stavimo ispravno korisničko ime i lozinku, to bi nas propustilo bez većih neugodnosti.
Dodatni savjeti.
- Pomoću ove naredbe možete dodati više korisnika u već stvorenu datoteku htpasswd
htpasswd -mb /home/krel/.htpasswd korisnička lozinka
Ako ste postavili "Zahtijevaj korisnika", a ne "Zahtijevaj valjanog korisnika", moraš dodati novog korisnika iza kojeg slijedi prethodni i odvojen razmakom. Primjer:
Zahtijevaj korisnika Lukea Anakina
- Koristite korisničke grupe
Ako umjesto pojedinačnih korisnika radije ili trebamo raditi s grupama na sljedećem web mjestu, oni to vrlo detaljno objašnjavaju i to je izvrstan članak.
http://www.juanfelipe.net/node/23
- Možemo postaviti i drugu vrstu šifriranja, na primjer: SHA
htpasswd -sb /home/krel/.htpasswd korisnička lozinka
Evo slike kako bi se registracija SHA lozinke odrazila u .htpasswd. U oba je to bio "skywalker".
Saznajte više.
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đer sam pronašao ovu PHP skriptu znatiželjnom sa stranice Sveučilišta u Granadi kako bih stvorio htaccess i htpasswd generator. Nisam je uspio primijeniti u praksi, ali pozivam vas da "radoznate s inteligencijom".
HTML predložak koji sam dobio s ove stranice u slučaju da nekoga zanima.
http://www.templatemo.com/
Nadam se da vam se svidjela ova prezentacija htpasswd.
Čitajući ponovo post, shvatio sam da sam napravio mali nered. Kad objasnim redove u konfiguraciji web mjesta, u AuthUserFile stavljam /var/www/.pass/.htpasswd kada bi to trebalo biti:
/home/krel/.htpasswd.
Na slici je to dobro, ali tamo mi je pobjeglo, jest da sam prethodno napravio članak s tom rutom, ali u zadnji trenutak sam ga promijenio i čini mi se da sam propustio ispraviti.
Unaprijed se ispričavam.
Bilo koja alternativa za nautilus ??
Ono što pitate mislim da ide u drugom smjeru, ali svejedno vam odgovaram.
Vjerujem da bi s Cryptkeeper-om bilo korisno zaštititi direktorije i slične stvari.
Ako sam iskren ako je nešto što mrzim u vezi s gnomom nautilus. Delfin (KDE) je puno moćniji upravo za ove stvari zaštite, šifriranja s gpg, itd ...
Krel, hvala na cjelovitim vodičima koje ovdje donosite i posebno na tome što niste toliko česte teme ...
Živjeli !!! ...
Pozdrav, sve je prošlo u redu, ali .. kad zatvorim krom karticu i otvorim drugu, napišem adresu i ne traži lozinku ...
koji je rekao da nije kričavo.
Bilo je upravo ono što sam tražio, i bolje objasniti nemoguće
Hvala vam.
pozdrav
Pozdrav, puno vam zahvaljujem na informacijama, posebno na dijelu dodavanja više korisnika u .htpasswd.
Bog te blagoslovio!
Svaka čast, vrlo je dobar članak, jasan i probavljiv. Puno ti hvala
Donosi mi 500 pogrešaka kada unesem korisničko ime i lozinku
AuthType osnovni
AuthName "Tocc tocc"
AuthUserFile /var/www/html/.pass/.htpasswd
Zahtijevaj korisnika Akira
Kako mi se to super događa zbog komentiranja bez gledanja ostalih komentara perodna.
Odlično radi sjajno
Bok, dobar tutorial, ali postoji li alternativa "htpasswd"? Pitam zašto koristim linux mint 17.3, a nemam naredbu ... moram li je instalirati?
Ok, skužio sam ... Morao sam ga instalirati sa sudo apt-get install apache2-utils
Pozdrav, izvrsni tutorial, učinio sam to točno onako kako je ovdje naznačeno, jedino što je umjesto izvršenja onoga što je naznačeno u točki 2:
nano / etc / apache2 / sites-available / default
Uspjelo mi je
nano /etc/apache2/sites-enabled/000-default.conf
Pozdrav, to kod mene ne funkcionira 🙁 moja mapa se ne pojavljuje na mom poslužitelju, odnosno zaštitio sam svoju mapu / var / 222 / html / content i kada uđem iz preglednika mapa sa sadržajem se ne pojavljuje. Pomozite