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.
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).
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.
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.
Elk alternatief voor nautilus ??
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 ...
Krel, bedankt voor de complete tutorials die je hier brengt en vooral omdat het niet zo vaak voorkomende onderwerpen zijn ...
Proost !!! ...
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 ...
die zei dat het niet opzichtig was.
Het was precies wat ik zocht, en beter uitgelegd onmogelijk
Heel hartelijk bedankt.
een groet
Hallo, ik dank u hartelijk voor de informatie, vooral het gedeelte van het toevoegen van meerdere gebruikers in de .htpasswd.
God zegene u!
Gefeliciteerd, het is een heel goed artikel, duidelijk en verteerbaar. Hartelijk bedankt
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
Hoe geweldig overkomt mij dat als ik commentaar geef zonder naar de andere commentaren perodna te kijken.
Werkt geweldig geweldig bericht
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?
Ok, ik ben erachter gekomen ... ik moest het installeren met sudo apt-get install apache2-utils
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
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