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.
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).
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.
- -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:
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.
Č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.
Ima li alternativa za Nautilus?
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...
Krel, hvala ti na kompletnim tutorijalima koje donosiš i prije svega što nisu tako česte teme...
Živjeli !!! ...
Pozdrav, sve je prošlo kako treba ali... kada zatvorim Chrome karticu i otvorim drugu, napišem adresu i ne pita me za lozinku...
koji je rekao da nije upadljivo.
To je bilo ono što sam tražio, i ne može se bolje objasniti.
Hvala puno.
pozdravi
Zdravo, puno vam zahvaljujem na informacijama, posebno na dijelu o dodavanju više korisnika u .htpasswd.
Bog te blagoslovio!
Čestitam, ovo je vrlo dobar, jasan i probavljiv članak. Hvala ti puno
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
Koliko mi je veliko da komentarišem ne gledajući ostale komentare, ali.
Odlično radi odličan post
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?
U redu, shvatio sam... Morao sam da ga instaliram sa sudo apt-get install apache2-utils
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
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ć