htaccess Adgangskode-Beskyttelse Tricks

♦ indsendt af Jeff Starr i .htaccess, sikkerhed
opdateret 30.juni 2018 • 25 kommentarer

for nylig spurgte en læser om, hvordan man adgangskodebeskytter en mappe til hver specificeret IP, samtidig med at man tillader åben adgang til alle andre. I min artikel, dumme htaccess-Tricks, viser jeg, hvordan man adgangskodebeskytter en mappe til hver IP undtagen den angivne, men ikke for omvendt tilfælde. I denne artikel vil jeg demonstrere denne teknik sammen med en lang række andre nyttige adgangskodebeskyttelsestricks, herunder et par fra min dumme htaccess Tricks-artikel. Før vi går ind i de saftige ting, gennemgår vi et par grundlæggende elementer i htaccess-adgangskodebeskyttelse.

htaccess adgangskodebeskyttelse fungerer i cascading mode

før vi begynder, er der få ting, du skal vide om Apaches forskellige adgangskodebeskyttelsesdirektiver. For det første gælder disse adgangskodebeskyttelsestricks for den mappe, hvor de er placeret. For eksempel, for at beskytte hele din hjemmeside med adgangskode, vil du placere et af disse tricks i den internet-tilgængelige root HTAccess-fil til din hjemmeside. Htaccess direktiver anvendes ned mappestrukturen, i cascading mode, således at alle undermapper er også beskyttet.

du har brug for to filer til adgangskodebeskyttelse: htaccess og htpass

den anden ting du skal vide er, at der i de fleste tilfælde er to dele til enhver implementering af adgangskodebeskyttelse: filen .htaccessog filen .htpasswd. Filen . htaccessindeholder et af de søde tricks, der er angivet i denne artikel, mens filen .htpasswd indeholder det krævede brugernavn og en krypteret version af din adgangskode.

der er flere måder at generere din .htpasswd fil. Hvis du har det godt, kan du blot køre kommandoen “htpasswd“. For eksempel vil indtastning af følgende kommando oprette en fungerende adgangskodefil i /home/path/ – mappen:

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

placering af adgangskodefilen over den internettilgængelige rodmappe er en god sikkerhedsforanstaltning. Hvis du undersøger filen, efter at den er oprettet, er det eneste, den vil indeholde, en linje, der ligner denne:

username:Mx1lbGn.nkP8

i stedet for at køre en unik kommando, foretrækker du måske at bruge en af de 200.000 onlinetjenester, der leverer en online adgangskodegenerator.

uanset hvordan eller hvor du beslutter dig for at oprette din .htpasswd fil, skal du huske dens placering til brug i dens tilknyttede htaccess-fil(er). Og ja, du kan bruge en . htpasswd fil til flere HTAccess-filer placeret i flere mapper.

ved, hvilken version af Apache du bruger

i hvert af nedenstående eksempler er direktiverne vedlagt en <IfModule> container. Dette er for at forhindre, at din server går ned, hvis de krævede Apache-moduler ikke er tilgængelige eller ikke installeret. Generelt vil de krævede moduler være til stede, men <IfModule> – kontrollen er en god forsigtighedsforanstaltning.

når du implementerer en af adgangskodebeskyttelsesmetoderne i denne artikel, skal du kontrollere, hvilken version af Apache du bruger, før du begynder. Eksemplerne i denne artikel antager, at du bruger enten Apache 1.3 eller 2.0, da <IfModule> containerne kontrollerer tilstedeværelsen af mod_auth modulet. Således, Hvis du kører Apache 2.2 (eller bedre), vil du gerne erstatte de nuværende <IfModule> containere med følgende:

<IfModule mod_authn_file.c></IfModule>

hvis du er i tvivl, skal du spørge din vært, installere udvidelsen eller grave rundt i serverens Kontrolpanel. Og hvis du bare ikke ved det, er ligeglad eller ikke kan finde ud af det, skal du bare fjerne åbning og lukning <IfModule> tags fra den metode, du gerne vil bruge, og kalde det godt. Uden dem, hvis din server ikke er udstyret med det krævede modul, vil det simpelthen returnere en 500 fejlmeddelelse, som let løses ved at fjerne adgangskodedirektiverne.

du kan tilpasse dialogen på adgangskodeprompten

den sidste ting, du bør vide, før du dykker ned i nogle søde tricks, er at du kan tilpasse meddelelsen vist på adgangskodeprompten ved at redigere følgende linje i hvert af eksemplerne i denne artikel:

AuthName "Username and password required"

ved at ændre teksten inde i citaterne kan du bruge ethvert sprog, du ønsker til adgangskodeprompten.

så nu på dette tidspunkt i vores eventyr er vi klar til at dykke ned i nogle saftige htaccess-adgangskodebeskyttelsestricks..

grundlæggende adgangskodebeskyttelse

for at beskytte din side eller et bibliotek med adgangskode skal du placere denne kode i den tilknyttede htaccess-fil:

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

det er omtrent så grundlæggende som det bliver. Husk at oprette din adgangskodefil og angive dens mappe i første linje. Lad os gå videre til noget mere interessant.

Open-access for en IP, adgangskodebeskyttelse alle andre

denne metode er fantastisk under projektudvikling, hvor du vil have åben adgang med evnen til at give andre adgang via adgangskode:

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

ved at placere denne kode i HTAccess-filen i det Bibliotek, du gerne vil beskytte, er det kun den angivne IP, der får åben adgang; alle andre skal indtaste det rigtige brugernavn og adgangskode.

åben adgang flere IP ‘er, adgangskodebeskyttelse af alle andre

ovenstående kode kan let ændres for at give flere IP’ er åben adgang, mens du nægter alle andre:

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

du kan tilføje så mange IP ‘ er som nødvendigt. Denne metode er stor under projektudvikling, hvor følgende betingelser gælder:

  • projektudvikling forbliver privat for regelmæssige besøgende
  • adgang kan gives til klienter (eller nogen) ved at angive adgangskoden
  • medlemmer af udviklingsholdet har åben adgang på deres respektive maskiner

ud over at give ubegrænset adgang til dit team, kan du også have visse internettjenester i tankerne ved at inkludere følgende direktiver (Indsæt over Satisfy Any direktiv):

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

åben adgang for alle med adgangskodebeskyttelse til specifikke IP ‘er

denne metode er nyttig i forskellige situationer, herunder tilfælde, hvor du gerne vil blokere en liste over ondsindede IP’ er.

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

du kan angive så mange IP-adresser som nødvendigt. Du kan også nægte fra hele IP-blokke ved at afkorte adressen i overensstemmelse hermed. For eksempel for at blokere alle, der kommer fra en IP-adresse, der begynder med ” 999.888“, tilføjer vi følgende direktiv:

Deny from 999.888

For mere information om, hvordan dette fungerer, se dette afsnit af min dumme htaccess Tricks artikel.

åben adgang for alle med adgangskodebeskyttelse til specifikt CIDR-nummer

i lighed med den foregående metode er her en teknik til kun at kræve en adgangskode fra et udvalgt CIDR-nummer. Denne metode er nyttig til blokering af mega-spammere som RIPE, Optinet og andre. Hvis du for eksempel finder dig selv at tilføje linje efter linje med Apache Deny direktiver til adresser, der begynder med de samme første par numre, skal du vælge en af dem og prøve et opslag. CIDR-værdien, der repræsenterer hver IP-adresse, der er knyttet til det pågældende netværk. Således er blokering via CIDR en effektiv måde at veltalende forhindre alle IP-forekomster af lovovertræderen i at få adgang til din side. Her er et generaliseret eksempel på blokering af 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>

adgangskodebeskyttelse en enkelt fil

jeg har brugt denne teknik utallige gange. For at beskytte en enkelt fil med adgangskode skal du blot tilføje dette til din HTAccess-fil:

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

her beskytter vi en fil med navnet “protected.html” fra adgang. Filen vil kun være tilgængelig efter indsendelse af det korrekte brugernavn og adgangskode.

adgangskodebeskyttelse af flere filer

for at beskytte flere filer er metoden meget ens, kun denne gang bruger vi Apache ‘ s FilesMatch direktiv. Dette giver os mulighed for at liste så mange filer som nødvendigt:

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

i dette eksempel beskytter vi to filer med adgangskode, “protected.html“og” passwords.txt“. For at tilføje flere skal du blot medtage flere forekomster af “|(filename\.ext)” på listen over filer.

adgangskodebeskyttelse af flere filtyper

med denne metode bruger vi Apaches FilesMatch direktiv til adgangskodebeskyttelse af flere filtyper. Her er et eksempel:

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

når den er på plads, kræver denne kode en adgangskode for at få adgang til følgende filtyper: .inc, .txt, .log, .dat, .zip, og .rar. Tilpas til dine behov.

adgangskodebeskyttelse til alt undtagen en enkelt fil

tak til Brett Batie for denne kraftfulde teknik til at give adgang til en enkelt fil, mens adgangskodebeskyttelse af alt andet:

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

når den placeres i rodmappen eller en hvilken som helst overordnet mappe, beskytter denne kode alt undtagen filen med navnet “open-access.html“, som i sig selv kan være placeret i en hvilken som helst efterfølgende mappe eller undermappe.

for at beskytte alt og samtidig give adgang til flere filer, kan vi bruge Apache ‘ s FilesMatch direktiv i stedet. Her er et eksempel, der giver adgang til “open-access-1.html“, “open-access-2.html“, og “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>

Bemærk, at vi kan konsolidere fillisten som følger:

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

en alternativ tilgang til at give åben adgang til enhver fil eller gruppe af filer er at finde dem i deres egen mappe med følgende direktiver tilføjet til sin HTAccess-fil:

Allow from all
satisfy any

pak det derefter

som du kan se, Apache’ mod_auth funktionalitet gør det muligt at konfigurere næsten adgangskodebeskyttelsesopsætning, du muligvis har brug for. Fra at forhindre adgang fra specifikke IP-adresser og domæner til kun at tillade adgang til bestemte filer og mapper, gør Apache det muligt at beskytte dine filer nemt og sikkert. Og vi har ikke engang fået ind i de mange muligheder for at konfigurere specifikke bruger-og gruppetilladelser. Jeg tror, jeg gemmer det til en anden artikel. I mellemtiden, for mere information om Apaches magtfulde mod_auth, tjek Den officielle dokumentation.

Jeff Starr

om forfatteren
Jeff Starr = Netudvikler. Sikkerhedsspecialist. Buff.