HTAccess Password-Protection Tricks

♦ julkaissut Jeff Starr vuonna .htaccess, Security
päivitetty 30.kesäkuuta 2018 • 25 kommenttia

ä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.

Jeff Starr

tekijästä
Jeff Starr = Web Developer. Turvallisuusasiantuntija. WordPress Harrastaja.