Av många skäl kan det vara mycket användbart att ha kontrollerad åtkomst till vissa kataloger på en webbserver eller helt enkelt till innehållet på vår sida eller blogg via en autentiseringstjänst baserad på användarnamn och lösenord. Jag pratar om något som det typiska fönstret som visas när vi vill gå in på en webbplats med begränsade tjänster.
Det finns flera sätt att generera fönster med autentiseringsform men en intressant lösning på servernivå tillhandahålls htpasswd. Det är ett verktyg vars funktion är att lagra lösenord i krypterad form som ska användas av Apache i autentiseringstjänster. Användningen gör det möjligt för oss att visa vissa kataloger eller filer via http endast för identifierade användare och utan att nödvändigtvis vara fritt tillgängliga för alla.
Jag förstår att det inte är ett särskilt spännande ämne men det kan vara användbart för vissa. För att inte döda dem med tristess kommer jag att använda bilder för att göra det mer didaktiskt.
Tidigare överväganden: Jag kommer att använda Ubuntu Server 12.04.1 y Apache 2.2.22 i en kontrollerad miljö.
Vi börjar.
Som vissa kanske redan vet lagras de tillgängliga Apache-platserna som standard i katalogen / Var / www / och för det här exemplet kommer jag att skapa en katalog med en HTML-mall och försöka skydda den med .htpasswd.
Katalogen att skydda är / var / www / exempel / där jag har placerat nästa sida.
1. Vi ska skapa .htpasswd.
Platsen där den kommer att finnas är av relevant betydelse och att placera den utanför en offentlig katalog kan vara mer än rekommenderat. I mitt fall kommer jag att placera den i min personliga mapp (som inte är en offentlig Apache-katalog) och med namnet .htpasswd (A priori är det inte nödvändigt att kalla det så, men den som är dold är alltid bra).
Med följande kommando skapar jag .htpasswd-filen för en webbanvändare som jag har benämnt: "Luke".
# htpasswd -c /home/krel/.htpasswd Luke
Det kommer att be oss att ange lösenordet två gånger, i mitt fall har jag lagt "skywalker" (utan offert). I en okontrollerad miljö måste vi skapa starkare lösenord. Standardkryptering på Linux är MD5 men på Unix är det en standardimplementering av crypt () och för lösenord med mindre än 8 tecken kan det vara sårbart. Nu tvivlar jag på om det är detsamma i BSD.
Kommandot har den här strukturen:
- -c → för att skapa filen
- /home/krel/.htpasswd → absolut sökväg till filen.
- Luke → användarnamnet (det kan vara vad du vill)
På samma sätt tvingar jag inte någon att använda terminalen när det finns tjänster på Internet för den:
http://www.web2generators.com/apache/htpasswd_generator
http://www.htaccesstools.com/htpasswd-generator/
Vi kopierar resultatet i en textfil och med namnet .htpasswd om du vill. När det gäller denna metod, sluta inte läsa vad jag kommenterar i nästa stycke.
I vårt fall ser vi att filen har genererats där vi förväntade oss dem /home/krel/.htpasswd. I bilden har jag markerat att filen med den här metoden tillhör apache-gruppen och användaren, som i Ubuntu kallas www-data. Detta är viktigt för om vi har genererat .htpasswd på något annat sätt måste vi se till att det har 644 behörigheter.
Nå, nu får vi se hur deras tarmar är:
Som du kan se finns det användaren (Luke) men lösenordet är krypterat.
På detta sätt har vi redan skapat och designat .htpasswd för användaren Luke, i slutändan är det inget annat än en behållare för lösenordet. "Allt med ett kommando" skulle vara en bra fångstfras.
2. Konfigurera Apache så att den använder och tillåter den tjänsten på webbplatsen.
# nano /etc/apache2/sites-available/default
Om du har flera värdar måste de arbeta med var och en av dem, i mitt fall har jag bara den som kommer som standard. Glöm inte att det alltid är bra att säkerhetskopiera den filen.
Den filen har standardstrukturen:
ServerAdmin webbansvarig @ localhost
..................
..................
Det är just inom Virtualhost-rubrikerna som användningen av .htpasswd kommer att specificeras för att komma åt en viss katalog. Vi gör det när bilden nedan visas och passar vårt exempel:
Du måste sätta katalogen för att skydda.
AuthType Basic
Det är den typ av användare och lösenord som förhandlas fram med webbläsaren, i det här fallet är det Basic, utan kryptering.
Det finns en annan typ av förhandlingar: Digest, den här krypterar användarnamnet och lösenordet, men det sista ordet är att webbläsaren har om den stöder nämnda tjänst. Digest kan sägas att det är en något mer robust implementering mot sniffers. Jag uppmanar dig att fördjupa dig i detta.
AuthName "Knacka på dörren innan du går in."
Det är ett meddelande som kommer att visas för användaren i webbläsaren med inloggningsformuläret och det kan vara det vi vill ha.
AuthUserFile /var/www/.pass/.htpasswd
Sök efter .htpasswd-filen. Av den anledningen är att jag säger att det inte ens är nödvändigt att namnge det .htpasswd, bara att sätta vägen skulle fungera på samma sätt.
Kräv giltigt användare
Den raden är utformad för flera användare med individuella lösenord. Om det är en enda användare kan den sammanfattas som följande variant.
Kräva användare el_que_sea
I mitt exempel kan mitt exempel vara: Kräv användaren Luke
Och slutligen bifogar vi allt med
Vi startar om apache:
# service apache2 restart
Låt oss försöka.
Om vi inte autentiserar korrekt får vi ett fel 401.
På motsatt sida, om vi sätter rätt användarnamn och lösenord, skulle det låta oss passera utan större besvär.
Ytterligare tips.
- För att lägga till fler användare till en redan skapad htpasswd-fil kan du använda det här kommandot
htpasswd -mb /home/krel/.htpasswd användarlösenord
Om du har ställt in "Kräv användare" och inte "Kräv giltig användare" måste du lägga till den nya användaren följt av den tidigare och åtskilda av ett mellanslag. Exempel:
Kräv användaren Luke Anakin
- Använd användargrupper
Om vi istället för enskilda användare föredrar eller behöver arbeta med grupper på följande webbplats förklarar de det i detalj och det är en utmärkt artikel.
http://www.juanfelipe.net/node/23
- Vi kan också ställa in en annan typ av kryptering, till exempel: SHA
htpasswd -sb /home/krel/.htpasswd användarlösenord
Här är en bild av hur registreringen av ett SHA-lösenord skulle återspeglas i .htpasswd. I båda var det "skywalker".
Mer information.
htpasswd - -hjälp
Om du vill gå djupare in i detta ämne är RTFM alltid bra!
http://httpd.apache.org/docs/2.0/es/howto/auth.html
http://httpd.apache.org/docs/2.2/misc/password_encryptions.html
Jag har också hittat det här PHP-skriptet nyfiken från sidan vid University of Granada för att skapa en htaccess- och htpasswd-generator. Jag har inte kunnat omsätta det i praktiken men jag bjuder in dig att "bända med intelligens."
HTML-mallen som jag fick från den här sidan om någon är intresserad.
http://www.templatemo.com/
Hoppas att du gillade den här htpasswd-presentationen.
Nu när jag läser inlägget igen har jag insett att jag har gjort en liten röra. När jag förklarar raderna i webbplatskonfigurationen lägger jag i AuthUserFile /var/www/.pass/.htpasswd när det ska vara:
/home/krel/.htpasswd.
På bilden är det bra men där släppte det mig, det är att jag tidigare hade gjort artikeln med den vägen, men i sista minuten ändrade jag den och det verkar som att jag missade att korrigera den.
Jag ber om ursäkt i förväg.
Något alternativ för nautilus ??
Vad du frågar tror jag går tvärtom men jag svarar dig ändå.
Jag tror att det med Cryptkeeper skulle vara användbart att skydda kataloger och sådant.
Om jag är ärlig om något jag hatar med gnome är nautilus. Dolphin (KDE) är mycket kraftfullare just för dessa saker att skydda, kryptera med gpg, etc ...
Krel, tack för de kompletta handledningarna du tar med här och särskilt för att du inte är så vanliga ämnen ...
Skål !!! ...
Hej allt gick bra men .. när jag stänger kromfliken och öppnar en annan skriver jag adressen och den ber inte om lösenordet ...
som sa att det inte var prickigt.
Det var precis vad jag letade efter och bättre förklarat omöjligt
Tack så mycket.
en hälsning
Hej, jag tackar dig så mycket för informationen, särskilt den del av att lägga till flera användare i .htpasswd.
Gud välsigne dig!
Grattis, det är en mycket bra artikel, tydlig och smältbar. Tack så mycket
Det ger mig ett 500-fel när jag anger användarnamn och lösenord
AuthType Basic
AuthName "Tocc tocc"
AuthUserFile /var/www/html/.pass/.htpasswd
Kräv användaren Akira
Hur bra det händer mig för att kommentera utan att titta på de andra kommentarerna perodna.
Fungerar bra bra inlägg
Hej, bra handledning, men finns det ett alternativ till "htpasswd"? Jag frågar varför jag använder Linux mint 17.3 och jag inte har kommandot ... måste jag installera det?
Ok, jag tänkte på det ... Jag var tvungen att installera det med sudo apt-get install apache2-utils
Hej, utmärkt handledning, jag gjorde det precis som anges här, det enda är att istället för att utföra det som anges i punkt 2:
nano / etc / apache2 / sites-available / default
Det fungerade för mig med
nano /etc/apache2/sites-enabled/000-default.conf
Hälsningar, det fungerar inte för mig 🙁 min mapp visas inte på min server, det vill säga jag skyddade min / var / 222 / html / innehåll-mapp, och när jag går in från webbläsaren visas inte innehållsmappen. Hjälp