Hoe onze sites te beschermen met .htpasswd + Voorbeelden

Om vele redenen kan het erg handig zijn om gecontroleerde toegang te hebben tot bepaalde mappen op een webserver of gewoon tot de inhoud van onze pagina of blog via een authenticatiedienst op basis van gebruikersnaam en wachtwoord. Ik heb het over zoiets als het typische venster dat verschijnt wanneer we een website met beperkte services willen bezoeken.

Er zijn verschillende manieren om vensters met authenticatieformulier te genereren, maar er wordt een interessante oplossing op serverniveau geboden htpasswd. Het is een hulpprogramma waarvan de functie is om wachtwoorden in een gecodeerde vorm op te slaan voor gebruik door Apache in authenticatiediensten. Het gebruik ervan zou ons in staat stellen om bepaalde mappen of bestanden alleen via http te tonen aan geïdentificeerde gebruikers en zonder noodzakelijkerwijs vrij beschikbaar te zijn voor iedereen.

Ik begrijp dat het geen erg opzichtig onderwerp is, maar het kan voor sommigen nuttig zijn. Om ze niet met verveling te doden, zal ik afbeeldingen gebruiken om het didactischer te maken.

Eerdere overwegingen: ik zal gebruiken Ubuntu-server 12.04.1 y Apache 2.2.22 in een gecontroleerde omgeving.

We beginnen.

Zoals sommigen van jullie misschien al weten, worden de beschikbare Apache-sites standaard in de directory opgeslagen / Var / www / en voor dit voorbeeld zal ik een map maken met een HTML-sjabloon en proberen deze af te schermen met .htpasswd.

De te beschermen map is / var / www / voorbeeld / waar ik de volgende pagina heb geplaatst.

Op de server

In de browser

1. We gaan de .htpasswd maken.

De plaats waar het zich bevindt, is van relevant belang en het kan meer dan aanbevolen zijn om het buiten een openbare directory te plaatsen. In mijn geval zal ik het in mijn persoonlijke map plaatsen (die geen openbare Apache-map is) en met de naam .htpasswd (A priori is het niet nodig om het zo te noemen, maar degene die verborgen is, is altijd goed).

Voor gebruikers die nieuw zijn met Linux. Om een ​​directory of bestand te verbergen, hoeft u de naam alleen met een punt (.) Te beginnen.

Met het volgende commando maak ik het .htpasswd-bestand voor een webgebruiker die ik heb genoemd als: "Luke".

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

Het zal ons vragen om het wachtwoord twee keer in te voeren, in mijn geval heb ik "skywalker" gezet (zonder aanhalingstekens). In een ongecontroleerde omgeving moeten we sterkere wachtwoorden instellen. De standaardversleuteling op Linux is MD5, maar op Unix is ​​het een standaardimplementatie van crypt () en voor wachtwoorden met minder dan 8 tekens kan het kwetsbaar zijn. Nu twijfel ik of het hetzelfde is in BSD.

Het commando heeft deze structuur:

  • -c → om het bestand te maken
  • /home/krel/.htpasswd → absoluut pad van het bestand.
  • Luke → de gebruikersnaam (het kan zijn wat je maar wilt)

Evenzo dwing ik niemand om de terminal te gebruiken als er services op internet voor zijn:
http://www.web2generators.com/apache/htpasswd_generator

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

We kopiëren het resultaat in een tekstbestand en eventueel met de naam .htpasswd. Wat betreft deze methode, stop niet met het lezen van wat ik in de volgende paragraaf becommentarieer.

In ons geval zullen we zien dat het bestand is gegenereerd op de plek waar we ze verwachtten /home/krel/.htpasswd. In de afbeelding heb ik benadrukt dat het bestand met deze methode tot de apache-groep en gebruiker behoort, die in Ubuntu www-data wordt genoemd. Dit is belangrijk, want als we de .htpasswd op een andere manier hebben gegenereerd, moeten we ervoor zorgen dat deze 644 permissies heeft.

Nou, nu zullen we zien hoe hun lef is:

Zoals je kunt zien, is er de gebruiker (Luke) maar het wachtwoord is versleuteld.

Op deze manier hebben we al .htpasswd gemaakt en ontworpen voor de gebruiker Luke, het is uiteindelijk niets meer dan een container voor het wachtwoord. "Alles met één commando" zou een goede slogan zijn.

2. Configureer Apache om die service op de site te gebruiken en toe te staan.

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

Als je meerdere hosts hebt, zouden ze op elk van hen moeten werken, in mijn geval heb ik alleen degene die standaard wordt geleverd. Vergeet niet dat het altijd goed is om een ​​backup te maken van dat bestand.

Dat bestand heeft de standaardstructuur:

ServerAdmin webmaster @ localhost

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

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

Het is precies binnen de Virtualhost-koppen dat het gebruik van .htpasswd zal worden gespecificeerd om toegang te krijgen tot een bepaalde map. We doen het zoals de onderstaande afbeelding verschijnt en passend is voor ons voorbeeld:

Mooi zo. Ik leg de regels uit:

U moet de map plaatsen om te beschermen.

AuthType Basic

Het is het type gebruiker en wachtwoord waarover met de browser is onderhandeld, in dit geval is het Basic, zonder codering.

Er is een ander type onderhandeling: Digest, deze versleutelt de gebruikersnaam en het wachtwoord, maar het laatste woord is dat de browser heeft of deze de genoemde service ondersteunt. Digest kan worden gezegd dat het een iets robuustere implementatie is tegen snuffelaars. Ik nodig je uit om je hierin te verdiepen.

AuthName "Klop op de deur voordat je binnenkomt."

Het is een bericht dat aan de gebruiker in de browser zal verschijnen met het inlogformulier en het kan degene zijn die we willen.

AuthUserFile /var/www/.pass/.htpasswd

Pad naar het .htpasswd-bestand. Om die reden is dat ik zeg dat het niet eens nodig is om het .htpasswd te noemen, simpelweg het pad plaatsen zou hetzelfde werken.

Require valid-user

Die lijn is ontworpen voor meerdere gebruikers met geïndividualiseerde wachtwoorden. In het geval dat het een enkele gebruiker is, kan dit worden samengevat als de volgende variant.

Vereist gebruiker el_que_sea

In mijn voorbeeld zou mijn voorbeeld kunnen zijn: Gebruiker Luke vereist

En tot slot sluiten we alles mee in

We herstarten apache:

# service apache2 restart

Laten we proberen.

Als we niet correct verifiëren, krijgen we een fout 401.

Aan de andere kant, als we de juiste gebruikersnaam en het juiste wachtwoord invoeren, kunnen we zonder groot ongemak passeren.

Aanvullende tips.

  • Om meer gebruikers aan een reeds aangemaakt htpasswd-bestand toe te voegen, kunt u dit commando gebruiken

htpasswd -mb /home/krel/.htpasswd Gebruikerswachtwoord

Als u "Gebruiker vereist" heeft ingesteld en niet "Geldige gebruiker vereist", moet u de nieuwe gebruiker toevoegen, gevolgd door de vorige en gescheiden door een spatie. Voorbeeld:

Vereist gebruiker Luke Anakin

  • Gebruik gebruikersgroepen

Als we in plaats van individuele gebruikers de voorkeur geven aan of moeten werken met groepen op de volgende website, leggen ze dit uitvoerig uit en het is een uitstekend artikel.
http://www.juanfelipe.net/node/23

  • We kunnen ook een ander type versleuteling instellen, bijvoorbeeld: SHA

htpasswd -sb /home/krel/.htpasswd Gebruikerswachtwoord

Hier is een afbeelding van hoe de registratie van een SHA-wachtwoord zou worden weerspiegeld in de .htpasswd. In beide was het "skywalker".

Meer informatie.

htpasswd - -help

Als je dieper op dit onderwerp wilt ingaan, is RTFM altijd goed!
http://httpd.apache.org/docs/2.0/es/howto/auth.html

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

Ik vond dit PHP-script ook nieuwsgierig van de pagina van de Universiteit van Granada om een ​​htaccess- en htpasswd-generator te maken. Ik heb het niet in praktijk kunnen brengen, maar ik nodig je uit om "met intelligentie te wrikken".

De HTML-sjabloon die ik van deze pagina heb gekregen voor het geval iemand geïnteresseerd is.
http://www.templatemo.com/

Ik hoop dat je deze htpasswd-presentatie leuk vond.


Laat je reactie achter

Uw e-mailadres wordt niet gepubliceerd. Verplichte velden zijn gemarkeerd met *

*

*

  1. Verantwoordelijk voor de gegevens: Miguel Ángel Gatón
  2. Doel van de gegevens: Controle SPAM, commentaarbeheer.
  3. Legitimatie: uw toestemming
  4. Mededeling van de gegevens: De gegevens worden niet aan derden meegedeeld, behalve op grond van wettelijke verplichting.
  5. Gegevensopslag: database gehost door Occentus Networks (EU)
  6. Rechten: u kunt uw gegevens op elk moment beperken, herstellen en verwijderen.

  1.   krel zei

    Nu ik de post opnieuw lees, realiseer ik me dat ik een kleine puinhoop heb gemaakt. Wanneer ik de regels in de siteconfiguratie uitleg, zet ik in AuthUserFile /var/www/.pass/.htpasswd wanneer het zou moeten zijn:
    /home/krel/.htpasswd.

    Op de afbeelding is het prima maar daar is het mij ontgaan, het is dat ik eerder het artikel met die route had gemaakt, maar op het laatste moment veranderde ik het en het lijkt erop dat ik het corrigeren heb gemist.

    Mijn excuses bij voorbaat.

  2.   Fernando zei

    Elk alternatief voor nautilus ??

    1.    krel zei

      Wat je vraagt, gaat volgens mij de andere kant op, maar ik geef je toch antwoord.
      Ik geloof dat het met Cryptkeeper nuttig zou zijn om mappen en dergelijke te beschermen.

      Als ik eerlijk ben als iets dat ik haat aan kabouter nautilus is. Dolphin (KDE) is veel krachtiger juist voor deze dingen van beschermen, versleutelen met gpg, enz ...

  3.   DMoZ zei

    Krel, bedankt voor de complete tutorials die je hier brengt en vooral omdat het niet zo vaak voorkomende onderwerpen zijn ...

    Proost !!! ...

  4.   Juan Carlos zei

    Hallo alles ging goed, maar .. wanneer ik het Chrome-tabblad sluit en een ander open, schrijf ik het adres en het vraagt ​​niet om het wachtwoord ...

  5.   maatje zei

    die zei dat het niet opzichtig was.
    Het was precies wat ik zocht, en beter uitgelegd onmogelijk
    Heel hartelijk bedankt.
    een groet

  6.   basco7 zei

    Hallo, ik dank u hartelijk voor de informatie, vooral het gedeelte van het toevoegen van meerdere gebruikers in de .htpasswd.

    God zegene u!

  7.   Mohtadi zei

    Gefeliciteerd, het is een heel goed artikel, duidelijk en verteerbaar. Hartelijk bedankt

  8.   eduardo zei

    Het geeft me een 500-fout als ik de gebruikersnaam en het wachtwoord invoer

    AuthType Basic
    AuthName "Tocc tocc"
    AuthUserFile /var/www/html/.pass/.htpasswd
    Vereist gebruiker Akira

  9.   eduardo zei

    Hoe geweldig overkomt mij dat als ik commentaar geef zonder naar de andere commentaren perodna te kijken.
    Werkt geweldig geweldig bericht

  10.   Senior slapen zei

    Hallo, goede tutorial, maar is er een alternatief voor "htpasswd"? Ik vraag waarom ik linux mint 17.3 gebruik en ik heb het commando niet ... moet ik het installeren?

  11.   Senior slapen zei

    Ok, ik ben erachter gekomen ... ik moest het installeren met sudo apt-get install apache2-utils

  12.   Fernando Montilla zei

    Hallo, uitstekende tutorial, ik deed het precies zoals hier aangegeven, het enige is dat in plaats van uit te voeren wat is aangegeven in punt 2:

    nano / etc / apache2 / sites-available / default

    Het werkte voor mij met

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

  13.   Jorge Rodrigo Torrez Aramayo zei

    Gegroet, het werkt niet voor mij 🙁 mijn map verschijnt niet op mijn server, dat wil zeggen, ik heb mijn / var / 222 / html / content-map beveiligd, en wanneer ik vanuit de browser binnenkom, verschijnt de content-map niet. Helpen