HTAccess Password-Protection Tricks
äskettäin eräs lukija kysyi, miten suojata salasanalla Hakemisto jokaiselle määritetylle IP: lle samalla, kun kaikille muille annetaan avoin pääsy. Minun artikkeli, tyhmä htaccess temppuja, näytän, miten salasanasuojaus hakemiston jokaisen IP paitsi yksi määritetty, mutta ei päinvastaisessa tapauksessa. Tässä artikkelissa, aion osoittaa tämän tekniikan sekä monenlaisia muita hyödyllisiä salasanasuojaus temppuja, mukaan lukien muutamia minun tyhmä htaccess temppuja artikkeli. Ennen kuin pääsemme mehukas tavaraa, käymme läpi muutamia perusasioita HTAccess salasanasuojaus.
HTAccess-salasanasuojaus toimii ryöppyävällä tavalla
ennen kuin aloitamme, Apachen erilaisista salasanasuojadirektiiveistä ei tarvitse tietää juuri mitään. Ensinnäkin nämä salasanasuojaustemput koskevat hakemistoa, johon ne on sijoitettu. Esimerkiksi, salasanasuojaus koko sivuston, voit sijoittaa yksi näistä temppuja web-saatavilla root HTAccess tiedosto sivustosi. HTAccess-direktiivejä sovelletaan hakemistorakennetta pitkin kaskadatiivisesti siten, että kaikki alihakemistot ovat myös suojattuja.
salasanasuojaukseen tarvitaan kaksi tiedostoa: htaccess ja htpasswd
toinen tieto on, että useimmissa tapauksissa salasanasuojauksen toteutuksessa on kaksi osaa: .
htaccess
tiedosto ja .
htpasswd
tiedosto. .
htaccess
– tiedosto sisältää minkä tahansa tässä artikkelissa esitetyistä makeista tempuista, kun taas .
htpasswd
– tiedosto sisältää vaaditun käyttäjätunnuksen ja salatun version salasanastasi.
on useita tapoja luoda .
htpasswd
tiedosto. Jos olet sinut Unixin kanssa, voit yksinkertaisesti suorittaa komennon ”htpasswd
”. Esimerkiksi seuraavan komennon syöttäminen luo toimivan salasanatiedoston /home/path/
– kansioon:
htpasswd -bc /home/path/.htpasswd username password
Salasanatiedoston sijoittaminen verkkoon pääsevän juurihakemiston yläpuolelle on hyvä turvatoimenpide. Jos tutkit tiedostoa sen jälkeen, kun se on luotu, ainoa asia, joka sisältää on rivi, joka näyttää samanlaiselta kuin tämä:
username:Mx1lbGn.nkP8
Unix-komennon suorittamisen sijaan saatat mieluummin käyttää jotakin 200 000 verkkopalvelusta, jotka tarjoavat online-salasanageneraattorin.
riippumatta siitä, miten tai missä päätät luoda .
htpasswd
– tiedostosi, pidä sen sijainti mielessä, jotta voit käyttää siihen liittyviä HTAccess-tiedostoja. Ja kyllä, voit käyttää yhtä .
htpasswd
– tiedostoa useisiin eri hakemistoihin sijoitettuihin HTAccess-tiedostoihin.
tiedä, mitä Apache-versiota käytät
kussakin alla olevassa esimerkissä direktiivit on suljettu <IfModule>
säiliöön. Tämä estää palvelimen kaatumisen, jos tarvittavat Apache-moduulit eivät ole käytettävissä tai niitä ei ole asennettu. Yleensä tarvittavat moduulit ovat paikalla, mutta <IfModule>
tarkistus on hyvä varotoimenpide.
kun otat käyttöön jonkin tämän artikkelin salasanasuojausmenetelmistä, tarkista ennen kuin aloitat, mitä Apache-versiota käytät. Tämän artikkelin esimerkeissä oletetaan, että käytät joko Apache 1.3: A tai 2.0: aa, sillä <IfModule>
kontit tarkistavat mod_auth
– moduulin olemassaolon. Jos siis käytät Apache 2.2: ta (tai parempaa), haluat korvata nykyiset <IfModule>
kontit seuraavalla:
<IfModule mod_authn_file.c></IfModule>
jos olet epävarma, kysy palvelimeltasi, asenna Showip Firefox-laajennus tai kaiva palvelimesi ohjauspaneelista. Ja jos et vain tiedä, et välitä tai et saa sitä selville, poista avaus ja sulkeminen <IfModule>
tagit menetelmästä, jota haluat käyttää, ja kutsu sitä hyväksi. Ilman niitä, jos palvelimellasi ei ole vaadittua moduulia, se yksinkertaisesti palauttaa 500 virheilmoituksen, joka on helppo ratkaista poistamalla salasanadirektiivit.
voit muokata salasanakehotteen dialogia
viimeinen asia, joka sinun pitäisi tietää ennen kuin sukellat joihinkin makeisiin temppuihin, on, että voit muokata salasanakehotteessa näkyvää viestiä muokkaamalla seuraavaa riviä jokaisessa tämän artikkelin esimerkissä:
AuthName "Username and password required"
muuttamalla tekstiä sisällä lainausmerkit, Voit käyttää mitä kieltä haluat salasanakehote.
joten nyt tässä vaiheessa seikkailuamme olemme valmiita sukeltamaan mehukkaisiin HTAccess-salasanasuojaustemppuihin..
perus salasanasuojaus
jos haluat suojata salasanalla sivustosi tai minkä tahansa hakemiston, laita tämä koodi siihen liittyvään HTAccess-tiedostoon:
# 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>
sen perusteellisempaa ei ole. Muista luoda salasanatiedosto ja määrittää sen Hakemisto ensimmäisellä rivillä. Siirrytään johonkin mielenkiintoisempaan.
Open-access for one IP, password-protect every other
tämä menetelmä on loistava projektikehityksen aikana, jossa halutaan avoin pääsy ja mahdollisuus antaa muille pääsy salasanan kautta:
# 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>
asettamalla kyseinen koodi HTAccess-tiedostoon hakemistossa, jonka haluat suojata, vain määritetty IP saa avoimen pääsyn; kaikkien muiden on annettava oikea käyttäjätunnus ja salasana.
Open access multiple IPs, password-protect everyone else
yllä olevaa koodia voidaan muokata helposti niin, että useita IP-osoitteita voidaan käyttää vapaasti ja samalla kieltää kaikki muut:
# 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>
voit lisätä niin monta IP-osoitetta kuin tarvitaan. Tämä menetelmä on suuri hankkeen kehittämisen aikana, jossa seuraavat ehdot sovelletaan:
- hankekehitys pysyy yksityisenä vakituisille kävijöille
- pääsy voidaan myöntää asiakkaille (tai kenelle tahansa) antamalla salasana
- kehitystiimin Jäsenillä on vapaa pääsy omilla koneillaan
sen lisäksi, että tarjoamme rajoittamattoman pääsyn tiimiisi, saatat myös haluta pitää tietyt verkkopalvelut mielessä sisällyttämällä seuraavat ohjeet (lisää edellä 7865> direktiivi):
Allow from validator.w3.org
Allow from jigsaw.w3.org
Allow from google.com
avoin pääsy kaikille, joilla on salasanasuojaus tietyille IP-osoitteille
tämä menetelmä on hyödyllinen erilaisissa tilanteissa, mukaan lukien tapaukset, joissa haluat estää haitallisten IP-osoitteiden luettelon.
# 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>
voit luetella niin monta IP-osoitetta kuin on tarpeen. Voit myös kieltää koko IP-lohkojen katkaisemalla osoite vastaavasti. Esimerkiksi, estää kaikki tulevat IP-osoite alkaa ” 999.888
”, lisäämme seuraavan direktiivin:
Deny from 999.888
lisätietoja siitä, miten tämä toimii, katso tämä osa minun tyhmä htaccess temppuja artikkeli.
avoin pääsy kaikille, joilla on salasanasuojaus tietylle CIDR-numerolle
samaan tapaan kuin edellisessä menetelmässä, tässä on tekniikka, jolla salasanan voi vaatia vain valitusta CIDR-numerosta. Tämä menetelmä on hyödyllinen estää mega-roskapostittajien kuten RIPE, Optinet, ja muut. Jos huomaat esimerkiksi lisääväsi rivin perään Apache Deny
direktiivit samoista alkunumeroista alkaville osoitteille, valitse yksi niistä ja kokeile whois-hakua. Whois: n tuloksissa on lueteltu CIDR-arvo, joka edustaa jokaista kyseiseen verkkoon liittyvää IP-osoitetta. Näin, esto kautta CIDR on tehokas tapa kaunopuheisesti estää kaikki IP tapauksissa rikoksentekijän pääsemästä sivustoosi. Tässä on yleistetty esimerkki CIDR: n estämisestä:
# 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>
Salasanasuojaus yksittäiselle tiedostolle
olen käyttänyt tätä tekniikkaa lukemattomia kertoja. Voit suojata yksittäisen tiedoston salasanalla lisäämällä tämän HTAccess-tiedostoon:
# 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>
tässä suojaamme tiedostoa nimeltä ”protected.html
” pääsyltä. Tiedosto on käytettävissä vasta asianmukaisen käyttäjätunnuksen ja salasanan toimittamisen jälkeen.
Salasanasuojaus useita tiedostoja
useiden tiedostojen suojaamiseksi menetelmä on hyvin samankaltainen, vain tällä kertaa käytetään Apachen FilesMatch
direktiiviä. Näin voimme luetella niin monta tiedostoa kuin tarvitaan:
# 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>
tässä esimerkissä suojaamme salasanalla kahta tiedostoa,” protected.html
”ja”passwords.txt
”. Lisätäksesi lisää, lisää tiedostoluetteloon lisää tapauksia ”|(filename\.ext)
”.
salasana suojaa useita tiedostotyyppejä
tällä menetelmällä käytämme Apachen FilesMatch
direktiiviä suojaamaan salasanalla useita tiedostotyyppejä. Tässä on esimerkki:
# 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>
kun tämä koodi on otettu käyttöön, se vaatii salasanan, jolla pääsee seuraaviin tiedostotyyppeihin: .inc
, .txt
, .log
, .dat
, .zip
, ja .rar
. Mukauta tarpeisiisi.
Salasanasuojaus kaikelle paitsi yksittäiselle tiedostolle
Kiitos Brett Batielle tästä tehokkaasta tekniikasta, joka mahdollistaa pääsyn yhteen tiedostoon ja salasanasuojauksen kaikkeen muuhun:
# 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>
kun tämä koodi sijoitetaan juurihakemistoon tai mihin tahansa ylähakemistoon, se suojaa salasanalla kaiken paitsi tiedoston nimeltä ”open-access.html
”, joka itsessään voi sijaita missä tahansa myöhemmässä hakemistossa tai alihakemistossa.
kaiken suojaamiseksi samalla kun sallimme pääsyn useisiin tiedostoihin, saatamme käyttää Apachen FilesMatch
direktiiviä sen sijaan. Tässä on esimerkki mahdollistaa pääsyn ”open-access-1.html
”, ”open-access-2.html
”, ja ”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>
huomaa, että voimme konsolidoida tiedostoluettelon seuraavasti:
<FilesMatch "open-access-\.html">
vaihtoehtoinen tapa sallia avoin pääsy tiedostoihin tai tiedostoryhmiin on löytää ne omasta hakemistostaan, johon on lisätty HTAccess-tiedostoon seuraavat ohjeet:
Allow from all
satisfy any
Wrap it up then
As you see, Apache ’ mod_auth
functionality makes it possible to configure just about password-protection setup you may need. Apache estää pääsyn tietyistä IP-osoitteista ja verkkotunnuksista vain tiettyihin tiedostoihin ja hakemistoihin, joten se mahdollistaa tiedostojen suojaamisen helposti ja turvallisesti. Ja emme ole edes päässyt monia mahdollisuuksia konfiguroida tiettyjä käyttäjä-ja ryhmälupia. Säästän sen toiseen artikkeliin. Sillä välin, lisätietoja Apache voimakas mod_auth
, tutustu virallisiin asiakirjoihin.