Hur man skyddar våra webbplatser med hjälp av .htpasswd + -exempel

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.

På servern

I webbläsaren

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

För användare som är nya för Linux. För att dölja en katalog eller fil är det bara nödvändigt att starta namnet med en punkt (.).

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:

Bra. Jag förklarar raderna:

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.


Lämna din kommentar

Din e-postadress kommer inte att publiceras. Obligatoriska fält är markerade med *

*

*

  1. Ansvarig för uppgifterna: Miguel Ángel Gatón
  2. Syftet med uppgifterna: Kontrollera skräppost, kommentarhantering.
  3. Legitimering: Ditt samtycke
  4. Kommunikation av uppgifterna: Uppgifterna kommer inte att kommuniceras till tredje part förutom enligt laglig skyldighet.
  5. Datalagring: databas värd för Occentus Networks (EU)
  6. Rättigheter: När som helst kan du begränsa, återställa och radera din information.

  1.   krel sade

    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.

  2.   Fernando sade

    Något alternativ för nautilus ??

    1.    krel sade

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

  3.   DMoZ sade

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

  4.   Juan Carlos sade

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

  5.   kompis sade

    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

  6.   basco7 sade

    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!

  7.   Mohtadi sade

    Grattis, det är en mycket bra artikel, tydlig och smältbar. Tack så mycket

  8.   eduardo sade

    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

  9.   eduardo sade

    Hur bra det händer mig för att kommentera utan att titta på de andra kommentarerna perodna.
    Fungerar bra bra inlägg

  10.   Senior sover sade

    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?

  11.   Senior sover sade

    Ok, jag tänkte på det ... Jag var tvungen att installera det med sudo apt-get install apache2-utils

  12.   Fernando Montilla sade

    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

  13.   Jorge Rodrigo Torrez Aramayo sade

    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