HTAccess wachtwoord-bescherming Tricks

♦ geplaatst door Jeff Starr in .htaccess, Security
bijgewerkt 30 juni 2018 * 25 comments

onlangs heeft een lezer gevraagd hoe een map met een wachtwoord moet worden beveiligd voor elk opgegeven IP-adres terwijl open access wordt toegestaan voor alle anderen. In mijn artikel, Stupid htaccess trucs, laat ik zien hoe je een map met een wachtwoord beveiligt voor elk IP behalve het opgegeven IP, maar niet voor het omgekeerde geval. In dit artikel zal ik deze techniek demonstreren, samen met een breed scala aan andere handige wachtwoordbeveiliging trucs, waaronder een paar van mijn stomme htaccess Tricks artikel. Voordat je in de sappige dingen, zullen we een paar basisprincipes van HTAccess wachtwoordbeveiliging bekijken.

HTAccess wachtwoordbeveiliging werkt in trapsgewijze

voordat we beginnen, zijn er weinig dingen die je moet weten over Apache ‘ s verschillende wachtwoordbeveiligingsrichtlijnen. Ten eerste zijn deze wachtwoordbeveiliging trucs van toepassing op de directory waarin ze worden geplaatst. Om bijvoorbeeld uw hele site met een wachtwoord te beveiligen, plaatst u een van deze trucs in het web-toegankelijke root HTAccess-bestand voor uw site. HTAccess richtlijnen worden toegepast in de directory structuur, in trapsgewijze manier, zodat alle subdirectory ‘ s zijn ook beschermd.

u hebt twee bestanden nodig voor wachtwoordbeveiliging: htaccess en htpasswd

het tweede wat u moet weten is dat, in de meeste gevallen, er twee delen zijn aan een implementatie van wachtwoordbeveiliging: het .htaccess bestand en het .htpasswd bestand. Het bestand .htaccess bevat een van de sweet tricks in dit artikel, terwijl het bestand .htpasswd de vereiste gebruikersnaam en een versleutelde versie van uw wachtwoord bevat.

er zijn verschillende manieren om uw .htpasswd bestand te genereren. Als u op uw gemak bent met Unix, kunt u eenvoudig het “htpasswd” commando uitvoeren. Als u bijvoorbeeld het volgende commando invoert, wordt een werkend wachtwoordbestand in de /home/path/ map aangemaakt.:

htpasswd -bc /home/path/.htpasswd username password

het plaatsen van het wachtwoordbestand boven de web-toegankelijke root directory is een goede veiligheidsmaatregel. Als je het bestand bekijkt nadat het is aangemaakt, zal het alleen een regel bevatten die op deze lijkt:

username:Mx1lbGn.nkP8

in plaats van het uitvoeren van een Unix commando, kunt u de voorkeur geven aan een van de 200.000 online diensten die een online wachtwoord generator.

ongeacht hoe of waar u besluit om uw .htpasswd bestand aan te maken, houd de locatie in gedachten voor gebruik in de bijbehorende HTAccess-bestand(en). En ja, u kunt één .htpasswd bestand gebruiken voor meerdere HTAccess-bestanden die in meerdere mappen zijn geplaatst.

weet welke versie van Apache u gebruikt

in elk van de onderstaande voorbeelden zijn de richtlijnen ingesloten in een <IfModule> container. Dit is om te voorkomen dat uw server crasht als de vereiste Apache modules niet beschikbaar zijn of niet geà nstalleerd zijn. Over het algemeen zullen de vereiste modules aanwezig zijn, maar de <IfModule> controle is een goede voorzorgsmaatregel.

bij het implementeren van een van de wachtwoordbeveiligingsmethoden in dit artikel, zorg ervoor dat u dubbel controleert welke versie van Apache u gebruikt voordat u begint. De voorbeelden in dit artikel gaan ervan uit dat u Apache 1.3 of 2.0 gebruikt, omdat de <IfModule> containers controleren op de aanwezigheid van de mod_auth module. Dus, als je Apache 2.2 draait( of beter), zul je de huidige <IfModule> containers willen vervangen door de volgende:

<IfModule mod_authn_file.c></IfModule>

bij twijfel, vraag uw host, installeer de ShowIP Firefox extensie, of graven rond in het configuratiescherm van uw server. En, als je het gewoon niet weet, het niet kan schelen, of het niet kunt achterhalen, verwijder dan gewoon de openings-en sluitingstags <IfModule> van de methode die je wilt gebruiken en noem het goed. Zonder hen, als uw server niet is uitgerust met de vereiste module, zal het gewoon een 500 foutmelding, die gemakkelijk wordt opgelost door het verwijderen van de wachtwoordrichtlijnen.

u kunt het dialoogvenster aanpassen op de wachtwoordprompt

het laatste wat u moet weten voordat u in een aantal leuke trucs duikt, is dat u het bericht op de wachtwoordprompt kunt aanpassen door de volgende regel in elk van de voorbeelden in dit artikel te bewerken:

AuthName "Username and password required"

door de tekst in de aanhalingstekens te wijzigen, kunt u elke taal gebruiken die u wenst voor de Password prompt.

dus nu op dit punt in ons avontuur, zijn we klaar om te duiken in een aantal sappige HTAccess wachtwoordbeveiliging trucs..

Basiswachtwoordbeveiliging

om uw site of een map met een wachtwoord te beveiligen, plaatst u deze code in het bijbehorende HTAccess-bestand:

# basic password protection<IfModule mod_auth.c> AuthUserFile /home/path/.htpasswd AuthName "Username and password required" AuthType Basic <Limit GET POST> Require valid-user </Limit></IfModule>

zo simpel is het niet. Vergeet niet om uw wachtwoord bestand te maken en geef de map in de eerste regel. Laten we verder gaan met iets interessanter.

Open-access voor één IP, wachtwoord-Bescherm alle anderen

deze methode is geweldig tijdens projectontwikkeling, waar u open access wilt met de mogelijkheid om anderen toegang te geven via een wachtwoord:

# password protect excluding specific ip<IfModule mod_auth.c> AuthName "Username and password required" AuthUserFile /home/path/.htpasswd AuthType Basic Require valid-user Order Deny,Allow Deny from all Allow from 111.222.333.444 Satisfy Any</IfModule>

door die code in het HTAccess-bestand van de map te plaatsen die u wilt beschermen, wordt alleen het opgegeven IP-adres open access toegestaan; iedereen moet de juiste gebruikersnaam en wachtwoord invoeren.

Open access meerdere IP’ s, beveilig met een wachtwoord alle anderen

de bovenstaande code kan eenvoudig worden gewijzigd om meerdere IP ’s open access te bieden terwijl iedereen wordt geweigerd:

# password protect excluding specific ips<IfModule mod_auth.c> AuthName "Username and password required" AuthUserFile /home/path/.htpasswd AuthType Basic Require valid-user Order Deny,Allow Deny from all Allow from localhost Allow from 111.222.333.444 Allow from 555.666.777.888 Satisfy Any</IfModule>

u kunt zoveel IP’ s toevoegen als nodig is. Deze methode is geweldig tijdens projectontwikkeling, waarbij de volgende voorwaarden van toepassing zijn:

  • Projectontwikkeling blijft privé voor regelmatige bezoekers
  • toegang kan worden verleend aan klanten (of iedereen) door het wachtwoord op te geven
  • leden van het ontwikkelteam hebben open toegang op hun respectievelijke machines

naast het bieden van onbeperkte toegang tot uw team, kunt u ook bepaalde webservices in gedachten houden door de volgende richtlijnen op te nemen (invoegen boven de Satisfy Any richtlijn):

Allow from validator.w3.org
Allow from jigsaw.w3.org
Allow from google.com

Open access voor iedereen met wachtwoordbeveiliging voor specifieke IP ‘s

deze methode is nuttig voor een verscheidenheid aan situaties, inclusief gevallen waarin u een lijst met kwaadaardige IP’ s wilt blokkeren.

# password protect only for specified ips<IfModule mod_auth.c> AuthName "Username and password required" AuthUserFile /home/path/.htpasswd AuthType Basic Require valid-user Order Allow,Deny Allow from all Deny from 111.222.333.444 Deny from 555.666.777.888 Satisfy Any</IfModule>

u kunt zoveel IP-adressen weergeven als nodig is. U kunt ook hele IP-blokken weigeren door het adres dienovereenkomstig af te korten. Om bijvoorbeeld iedereen die vanaf een IP-adres komt dat begint met “999.888” te blokkeren, zouden we de volgende richtlijn toevoegen:

Deny from 999.888

voor meer informatie over hoe dit werkt, zie deze sectie van mijn stomme htaccess Tricks artikel.

Open access for everyone with password-protect for specific CIDR number

vergelijkbaar met de vorige methode, is hier een techniek voor het vereisen van een wachtwoord alleen van een select CIDR-nummer. Deze methode is handig voor het blokkeren van mega-spammers zoals RIPE, Optinet, en anderen. Als u bijvoorbeeld regel na regel met Apache Deny – richtlijnen toevoegt voor adressen die beginnen met dezelfde eerste paar getallen, kies dan een van hen en probeer een Whois lookup. In de WHOIS-resultaten wordt de CIDR-waarde vermeld die elk IP-adres vertegenwoordigt dat aan dat specifieke netwerk is gekoppeld. Dus, blokkeren via CIDR is een effectieve manier om welsprekend te voorkomen dat alle IP-instanties van de dader toegang tot uw site. Hier is een algemeen voorbeeld voor het blokkeren door CIDR:

# password protect only for specified CIDR<IfModule mod_auth.c> AuthName "Username and password required" AuthUserFile /home/path/.htpasswd AuthType Basic Require valid-user Order Allow,Deny Allow from all Deny from 10.1.0.0/16 Deny from 80.0.0/8 Satisfy Any</IfModule>

een enkel bestand

Ik heb deze techniek ontelbare keren gebruikt. Om een enkel bestand met een wachtwoord te beveiligen, voegt u dit gewoon toe aan uw HTAccess-bestand:

# password protect single file<IfModule mod_auth.c> <Files "protected.html"> AuthName "Username and password required" AuthUserFile /home/path/.htpasswd Require valid-user AuthType Basic </Files></IfModule>

hier beschermen we een bestand met de naam “protected.html” tegen toegang. Het bestand zal alleen beschikbaar zijn na het indienen van de juiste gebruikersnaam en wachtwoord.

Password protect meerdere bestanden

om meerdere bestanden te beschermen, is de methode zeer vergelijkbaar, alleen deze keer gebruiken we Apache ‘ s FilesMatch richtlijn. Hierdoor kunnen we zoveel bestanden weergeven als nodig is:

# password protect mulitple files<IfModule mod_auth.c> <FilesMatch "(protected\.html)|(passwords\.txt)"> AuthName "Username and password required" AuthUserFile /home/path/.htpasswd Require valid-user AuthType Basic </FilesMatch></IfModule>

In dit voorbeeld beschermen we twee bestanden met een wachtwoord, ” protected.html “en”passwords.txt“. Om meer toe te voegen, voeg gewoon meer exemplaren van “|(filename\.ext)” toe aan de lijst met bestanden.

meerdere bestandstypen met een wachtwoord beschermen

met deze methode gebruiken we Apache ’s FilesMatch richtlijn om meerdere bestandstypen met een wachtwoord te beschermen. Hier is een voorbeeld:

# password protect mulitple file types<IfModule mod_auth.c> <FilesMatch "\.(inc|txt|log|dat|zip|rar)$"> AuthName "Username and password required" AuthUserFile /home/path/.htpasswd Require valid-user AuthType Basic </FilesMatch></IfModule>

eenmaal op zijn plaats, deze code vereist een wachtwoord voor toegang tot de volgende bestandstypen: .inc, .txt, .log, .dat, .zip, en .rar. Aanpassen aan uw behoeften.

wachtwoordbeveiliging voor alles behalve een enkel bestand

dankzij Brett Batie voor deze krachtige techniek om toegang tot een enkel bestand toe te staan terwijl al het andere met een wachtwoord wordt beschermd:

# password protect everything except a single file<IfModule mod_auth.c> AuthName "Username and password required" AuthUserFile /home/path/.htpasswd Require valid-user AuthType Basic <Files "open-access.html"> Order Deny,Allow Deny from all Allow from 123.456.789 Satisfy any </Files></IfModule>

wanneer geplaatst in de root directory of een bovenliggende directory, zal deze code alles met een wachtwoord beveiligen behalve het bestand met de naam “open-access.html“, dat zelf in een volgende directory of subdirectory kan worden gevestigd.

om alles te beschermen terwijl we toegang tot meerdere bestanden toestaan, kunnen we in plaats daarvan Apache ‘ s FilesMatch richtlijn gebruiken. Hier is een voorbeeld dat toegang geeft tot “open-access-1.html“, “open-access-2.html“, en “open-access-3.html“:

# password protect everything except specified files<IfModule mod_auth.c> AuthName "Username and password required" AuthUserFile /home/path/.htpasswd Require valid-user AuthType Basic <FilesMatch "(open-access-1.html)|(open-access-2.html)|(open-access-3.html)"> Order Deny,Allow Deny from all Allow from 123.456.789 Satisfy any </FilesMatch></IfModule>

merk op dat we de bestandenlijst als volgt kunnen consolideren:

<FilesMatch "open-access-\.html">

een alternatieve benadering van het toestaan van open toegang tot een bestand of groep van bestanden is om ze te lokaliseren in hun eigen directory met de volgende richtlijnen toegevoegd aan het HTAccess-bestand:

Allow from all
satisfy any

Wrap it up dan

zoals u kunt zien, Apache’ mod_auth functionaliteit maakt het mogelijk om ongeveer wachtwoord-bescherming setup die u nodig hebt configureren. Van het voorkomen van toegang vanaf specifieke IP-adressen en domeinen tot het toestaan van toegang alleen voor specifieke bestanden en mappen, Apache maakt het mogelijk om uw bestanden gemakkelijk en veilig te beschermen. En we hebben nog niet eens gekregen in de vele mogelijkheden die beschikbaar zijn voor het configureren van specifieke gebruiker en groep autorisaties. Ik denk dat ik dat bewaar voor een ander artikel. In de tussentijd, voor meer informatie over Apache ‘ s krachtige mod_auth, bekijk de officiële documentatie.

Jeff Starr

over de auteur
Jeff Starr = Web Developer. beveiligingsspecialist. WordPress Buff.