HTAccess Passord-Beskyttelse Triks

♦ Skrevet Av Jeff Starr i .htaccess, Sikkerhet
Oppdatert 30. juni 2018 * 25 kommentarer

nylig spurte en leser om hvordan man passordbeskytter en katalog for hver spesifisert IP, samtidig som alle andre får åpen tilgang. I min artikkel, Dumme htaccess-Triks, viser jeg hvordan du passordbeskytter en katalog for hver IP unntatt den angitte, men ikke for omvendt tilfelle. I denne artikkelen vil jeg demonstrere denne teknikken sammen med et bredt utvalg av andre nyttige passordbeskyttelsestricks, inkludert noen fra Min Dumme htaccess Tricks-artikkel. Før vi går inn i saftige ting, vurderer vi noen grunnleggende Om HTAccess passordbeskyttelse.

HTAccess passordbeskyttelse fungerer i cascading mote

Før Vi begynner, er det få ting du trenger å vite Om Apache ‘ s ulike passordbeskyttelsesdirektiver. For det første gjelder disse passordbeskyttelsestricks for katalogen der de er plassert. For eksempel, for å passordbeskytte hele nettstedet ditt, vil du plassere et av disse triksene i den web-tilgjengelige rot-HTAccess-filen for nettstedet ditt. HTAccess direktiver brukes ned katalogstrukturen, i gjennomgripende måte, slik at alle underkataloger er også beskyttet.

du trenger to filer for passordbeskyttelse: htaccess og htpasswd

den andre tingen du trenger å vite er at i de fleste tilfeller er det to deler til enhver passordbeskyttelsesimplementering: .htaccess-filen og .htpasswd – filen. Filen .htaccess vil inneholde noen av de søte triksene som er gitt i denne artikkelen, mens filen .htpasswd inneholder det nødvendige brukernavnet og en kryptert versjon av passordet ditt.

det er flere måter å generere filen .htpasswd på. Hvis Du er komfortabel Med Unix, kan du bare kjøre kommandoen» htpasswd«. Hvis du for eksempel skriver inn følgende kommando, opprettes en fungerende passordfil i katalogen /home/path/ :

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

Å Plassere passordfilen over den web-tilgjengelige rotkatalogen er et godt sikkerhetstiltak. Hvis du undersøker filen etter at den er opprettet, er det eneste den inneholder en linje som ligner på dette:

username:Mx1lbGn.nkP8

I Stedet for Å kjøre En unix-kommando, kan du foretrekke å bruke en av de 200 000 elektroniske tjenestene som gir en online passordgenerator.

uansett hvordan eller hvor du bestemmer deg for å lage din .htpasswd fil, må du huske plasseringen for bruk i tilhørende HTAccess-fil(er). Og ja, du kan bruke en .htpasswd fil for flere HTAccess-filer plassert i flere kataloger.

Vet hvilken Versjon Av Apache du bruker

i hvert av eksemplene nedenfor er direktivene vedlagt i en <IfModule> – beholder. Dette er for å forhindre at serveren din krasjer hvis De nødvendige Apache-modulene ikke er tilgjengelige eller ikke installert. Vanligvis vil de nødvendige modulene være til stede, men kontrollen <IfModule> er et godt forholdsregel.

når du implementerer noen av passordbeskyttelsesmetodene i denne artikkelen, må du kontrollere hvilken Versjon Av Apache du bruker før du begynner. Eksemplene i denne artikkelen antar at Du bruker Enten Apache 1.3 eller 2.0, da <IfModule> – beholderne kontrollerer tilstedeværelsen av mod_auth – modulen. Dermed, hvis Du kjører Apache 2.2 (eller bedre), vil du erstatte de nåværende <IfModule> – beholderne med følgende:

<IfModule mod_authn_file.c></IfModule>

hvis du er i tvil, spør verten din, installer ShowIP Firefox-utvidelsen, eller grav rundt i serverens kontrollpanel. Og hvis du bare ikke vet, bryr deg ikke, eller ikke kan finne ut det, bare fjern åpning og lukking <IfModule> – kodene fra metoden du vil bruke og kaller det bra. Uten dem, hvis serveren din ikke er utstyrt med den nødvendige modulen, vil den bare returnere en 500 feilmelding, som lett løses ved å fjerne passorddirektivene.

du kan tilpasse dialogen på passordmeldingen

det siste du bør vite før du dykker inn i noen søte triks, er at du kan tilpasse meldingen som vises på passordmeldingen ved å redigere følgende linje i hvert av eksemplene i denne artikkelen:

AuthName "Username and password required"

ved å endre teksten inne i sitatene, kan du bruke hvilket som helst språk du ønsker for passordmeldingen.

så nå på dette punktet i eventyret vårt, er vi klare til å dykke inn i noen saftige HTAccess passordbeskyttelsestricks..

Grunnleggende passordbeskyttelse

hvis du vil passordbeskytte nettstedet ditt eller en katalog, plasserer du denne koden i Den tilknyttede HTAccess-filen:

# 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å grunnleggende som det blir. Husk å opprette passordfilen din og angi katalogen i første linje. La oss gå videre til noe mer interessant.

Åpen tilgang for EN IP, passordbeskytt alle andre

denne metoden er flott under prosjektutvikling, hvor du vil ha åpen tilgang med muligheten til å gi andre tilgang via passord:

# 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 å plassere den koden i HTAccess-filen i katalogen du vil beskytte, vil bare den angitte IP-en få åpen tilgang; alle andre må skrive inn riktig brukernavn og passord.

Åpen tilgang til flere Ip-Adresser, passordbeskytt alle andre

koden ovenfor kan enkelt endres for å gi flere Ip-åpne tilgang mens du nekter 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 legge til så Mange Ip-Adresser som nødvendig. Denne metoden er flott under prosjektutvikling, der følgende betingelser gjelder:

  • Prosjektutvikling forblir privat for vanlige besøkende
  • Tilgang kan gis til klienter (eller hvem som helst) ved å oppgi passordet
  • Medlemmer av utviklingsteamet har åpen tilgang på sine respektive maskiner

i tillegg til å gi ubegrenset tilgang til teamet ditt, kan det også være lurt å huske på visse webtjenester ved å inkludere følgende direktiver (sett inn over Satisfy Any direktivet):

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

Åpen tilgang For alle med passordbeskyttelse For bestemte Ip-Adresser

denne metoden er nyttig For en rekke situasjoner, inkludert tilfeller der du vil blokkere en liste over ondsinnede Ip-Adresser.

# 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 oppgi SÅ MANGE IP-adresser som nødvendig. Du kan også nekte fra HELE IP-blokker ved å avkorte adressen tilsvarende. For eksempel, for å blokkere alle som kommer FRA EN IP-adresse som begynner med » 999.888«, vil vi legge til følgende direktiv:

Deny from 999.888

For mer informasjon om hvordan dette fungerer, se denne delen av Min Dumme htaccess Tricks artikkel.

Åpen tilgang for alle med passordbeskyttelse for spesifikt CIDR-nummer

Ligner på forrige metode, Her er en teknikk for å kreve et passord bare fra et UTVALGT CIDR-nummer. Denne metoden er nyttig for å blokkere mega-spammere som RIPE, Optinet og andre. Hvis du for eksempel finner deg selv å legge til linje Etter Linje Med Apache Deny – direktiver for adresser som begynner med de samme første tallene, velger du en av dem og prøver et whois-oppslag. Oppført i whois-resultatene vil VÆRE CIDR-verdien som representerer HVER IP-adresse som er knyttet til det aktuelle nettverket. Dermed er blokkering via CIDR en effektiv måte å eloquently forhindre ALLE IP-forekomster av lovbryteren fra å få tilgang til nettstedet ditt. Her er et generalisert eksempel for blokkering AV 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>

Passordbeskytt en enkelt fil

jeg har brukt denne teknikken utallige ganger. For å passordbeskytte en enkelt fil, bare legge dette Til 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 som heter «protected.html » fra access. Filen vil kun være tilgjengelig etter innsending av riktig brukernavn og passord.

Passordbeskytt flere filer

for å beskytte flere filer, er metoden veldig lik, bare denne gangen bruker Vi Apache ‘ s FilesMatch direktiv. Dette tillater oss å liste så mange filer som nødvendig:

# 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 eksemplet passordbeskytter vi to filer, «protected.html » og » passwords.txt«. For å legge til flere, bare inkludere flere forekomster av «|(filename\.ext) » i listen over filer.

Passordbeskytte flere filtyper

Med Denne metoden bruker Vi Apache ‘ s FilesMatch direktiv for å passordbeskytte 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å plass, vil denne koden kreve et passord for tilgang til følgende filtyper: .inc, .txt, .log, .dat, .zip, og .rar. Tilpass etter behov.

Passordbeskyttelse for alt unntatt en enkelt fil

Takk Til Brett Batie for denne kraftige teknikken for å gi tilgang til en enkelt fil mens passordbeskytte alt annet:

# 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 plasseres i rotkatalogen eller en hvilken som helst overordnet katalog, vil denne koden passordbeskytte alt unntatt filen som heter » open-access.html«, som i seg selv kan være plassert i en senere katalog eller underkatalog.

for å beskytte alt mens du gir tilgang til flere filer, kan Vi bruke Apache ‘ s FilesMatch direktiv i stedet. Her er et eksempel som gir tilgang 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>

Merk at vi kan konsolidere fillisten som følger:

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

en alternativ tilnærming til å tillate åpen tilgang til en fil eller gruppe av filer er å finne dem i sin egen katalog med følgende direktiver lagt Til Sin HTAccess fil:

Allow from all
satisfy any

Pakk den opp da

Som du kan se, Apache ‘ mod_auth funksjonalitet gjør det mulig å konfigurere omtrent passordbeskyttelse oppsett du trenger. Fra å hindre tilgang fra bestemte IP-adresser og domener for å gi tilgang bare for bestemte filer og kataloger, Gjør Apache Det mulig å beskytte filene dine enkelt og sikkert. Og vi har ikke engang kommet inn i de mange mulighetene som er tilgjengelige for å konfigurere bestemte bruker-og gruppegodkjenninger. Jeg tror jeg vil spare det for en annen artikkel. I mellomtiden, for mer informasjon om Apache kraftige mod_auth, sjekk Ut Den Offisielle Dokumentasjonen.

Jeff Starr

Om Forfatteren
Jeff Starr = Webutvikler. Sikkerhetsspesialist. WordPress Buff.