HTAccess Password-Protection Tricks

♦ postat de Jeff Starr în .htaccess, securitate
actualizat la 30 iunie 2018 • 25 comentarii

recent, un cititor a întrebat cum să protejeze prin parolă un director pentru fiecare IP specificat, permițând în același timp accesul deschis tuturor celorlalți. În articolul meu, trucuri htaccess stupide, arăt cum să protejez prin parolă un director pentru fiecare IP, cu excepția celui specificat, dar nu pentru cazul invers. În acest articol, voi demonstra această tehnică împreună cu o mare varietate de alte trucuri utile de protecție a parolei, inclusiv câteva din articolul meu stupid htaccess Tricks. Înainte de a intra în lucrurile Suculente, vom examina câteva elemente de bază ale protecției prin parolă HTAccess.

HTAccess protecție cu parolă funcționează în cascadă de moda

înainte de a începe, există câteva lucruri pe care trebuie să știți despre diverse directive de protecție cu parolă Apache. În primul rând, aceste trucuri de protecție cu parolă se aplică directorului în care sunt plasate. De exemplu, pentru a proteja prin parolă întregul site, ați plasa unul dintre aceste trucuri în fișierul htaccess rădăcină accesibil pe web pentru site-ul dvs. Directivele HTAccess sunt aplicate în jos structura de directoare, în mod cascadă, astfel încât toate subdirectoarele sunt, de asemenea, protejate.

aveți nevoie de două fișiere pentru protecție prin parolă: htaccess și htpasswd

al doilea lucru pe care trebuie să știți este că, în cele mai multe cazuri, există două părți la orice implementare de protecție prin parolă: fișierul .htaccessși fișierul .htpasswd. Fișierul .htaccessva conține oricare dintre trucurile dulci furnizate în acest articol, în timp ce fișierul .htpasswd va conține numele de utilizator necesar și o versiune criptată a parolei.

există mai multe moduri de a genera fișierul .htpasswd. Dacă sunteți confortabil cu Unix, puteți rula pur și simplu Comanda „htpasswd„. De exemplu, introducerea următoarei comenzi va crea un fișier de parolă de lucru în directorul /home/path/ :

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

plasarea fișierului de parolă deasupra directorului rădăcină accesibil pe web este o măsură bună de securitate. Dacă examinați fișierul după ce a fost creat, singurul lucru pe care îl va conține este o linie care arată similar cu aceasta:

username:Mx1lbGn.nkP8

în loc să rulați o comandă Unix, este posibil să preferați să utilizați unul dintre cele 200.000 de servicii online care oferă un generator de parole online.

indiferent de modul sau locul în care decideți să creați fișierul .htpasswd, țineți cont de locația sa pentru a fi utilizată în fișierele HTAccess asociate. Și da, puteți utiliza un fișier .htpasswd pentru mai multe fișiere HTAccess plasate în mai multe directoare.

aflați ce versiune de Apache utilizați

în fiecare dintre exemplele de mai jos, directivele sunt incluse într-un container <IfModule>. Acest lucru este de a preveni serverul de la crashing dacă modulele Apache necesare nu sunt disponibile sau nu sunt instalate. În general, modulele necesare vor fi prezente, dar verificarea <IfModule> este o măsură de precauție bună.

când implementați oricare dintre metodele de protecție prin parolă din acest articol, asigurați-vă că verificați din nou ce versiune de Apache utilizați înainte de a începe. Exemplele din acest articol presupun că utilizați fie Apache 1.3, fie 2.0, deoarece containerele <IfModule> verifică prezența modulului mod_auth. Astfel, Dacă executați Apache 2.2( sau mai bine), veți dori să înlocuiți containerele curente <IfModule> cu următoarele:

<IfModule mod_authn_file.c></IfModule>

dacă aveți îndoieli, întrebați-vă gazda, instalați extensia ShowIP Firefox sau săpați în panoul de control al serverului. Și, dacă pur și simplu nu știți, nu vă pasă sau nu vă puteți da seama, trebuie doar să eliminați etichetele de deschidere și închidere <IfModule> din metoda pe care doriți să o utilizați și să o numiți bună. Fără ele, dacă serverul dvs. nu este echipat cu modulul necesar, acesta va returna pur și simplu un mesaj de eroare 500, care este ușor de rezolvat prin eliminarea directivelor de parolă.

puteți personaliza dialogul din promptul de parolă

ultimul lucru pe care ar trebui să îl știți înainte de a vă scufunda în câteva trucuri dulci este că puteți personaliza mesajul afișat pe promptul de parolă editând următoarea linie în fiecare dintre exemplele din acest articol:

AuthName "Username and password required"

prin schimbarea textului din interiorul ghilimelelor, puteți utiliza orice limbă doriți pentru solicitarea parolei.

Deci, acum, în acest moment al aventurii noastre, suntem gata să ne scufundăm în câteva trucuri suculente de protecție a parolei HTAccess..

protecție de bază cu parolă

pentru a proteja prin parolă site-ul dvs. sau orice director, plasați acest cod în fișierul HTAccess asociat:

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

asta e la fel de simplu ca acesta devine. Nu uitați să creați fișierul de parolă și să specificați directorul acestuia în prima linie. Să trecem la ceva mai interesant.

Open-access pentru un singur IP, parola-proteja oricine altcineva

această metodă este mare în timpul dezvoltării proiectului, în cazul în care doriți acces deschis, cu capacitatea de a da altora acces prin parolă:

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

prin plasarea acelui cod în fișierul HTAccess al directorului pe care doriți să îl protejați, numai IP-ul specificat va avea acces deschis; toți ceilalți vor trebui să introducă numele de utilizator și parola corespunzătoare.

Open access multiple IPs, parola-a proteja oricine altcineva

codul de mai sus pot fi modificate cu ușurință pentru a oferi mai multe IPs acces deschis în timp ce neagă toată lumea:

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

puteți adăuga cât mai multe IP-uri după cum este necesar. Această metodă este excelentă în timpul dezvoltării proiectului, unde se vor aplica următoarele condiții:

  • dezvoltarea proiectului rămâne privată pentru vizitatorii obișnuiți
  • accesul poate fi acordat clienților (sau oricui) prin furnizarea parolei
  • membrii echipei de dezvoltare au acces liber pe mașinile lor respective

în plus față de furnizarea accesului nerestricționat echipei dvs., vă recomandăm, de asemenea, să țineți cont de anumite servicii web prin includerea următoarelor directive 7865> directivă):

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

acces deschis pentru toată lumea cu protecție prin parolă pentru anumite IP-uri

această metodă este utilă pentru o varietate de situații, inclusiv cazurile în care doriți să blocați o listă de IP-uri rău intenționate.

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

puteți lista câte adrese IP este necesar. De asemenea, puteți refuza de la blocuri IP întregi prin trunchierea adresei în consecință. De exemplu, pentru a bloca pe toți cei care provin de la o adresă IP care începe cu ” 999.888„, am adăuga următoarea directivă:

Deny from 999.888

pentru mai multe informații despre cum funcționează, consultați această secțiune a articolului meu stupid htaccess Tricks.

acces deschis pentru toți cei cu protecție prin parolă pentru un anumit număr CIDR

Similar cu metoda anterioară, aici este o tehnică pentru solicitarea unei parole numai de la un număr CIDR selectat. Această metodă este utilă pentru blocarea mega-spammerilor, cum ar fi RIPE, Optinet și altele. Dacă, de exemplu, vă aflați adăugând linie după linie de directive Apache Deny pentru adrese care încep cu aceleași prime numere, Alegeți una dintre ele și încercați o căutare whois. Listate în rezultatele whois va fi valoarea CIDR reprezentând fiecare adresă IP asociată cu acea rețea special. Astfel, blocarea prin CIDR este o modalitate eficientă de a împiedica elocvent toate instanțele IP ale infractorului să acceseze site-ul dvs. Iată un exemplu generalizat pentru blocarea de către 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>

parola proteja un singur fișier

am folosit aceasta tehnica de nenumărate ori. Pentru a proteja prin parolă un singur fișier, pur și simplu adăugați acest lucru la fișierul HTAccess:

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

aici protejăm un fișier numit „protected.html” de acces. Fișierul va fi disponibil numai după trimiterea numelui de utilizator și a parolei corespunzătoare.

parola proteja mai multe fișiere

pentru a proteja mai multe fișiere, metoda este foarte asemănătoare, numai de data aceasta folosim Apache FilesMatch Directiva. Acest lucru ne permite să enumerăm cât mai multe fișiere necesare:

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

în acest exemplu, protejăm prin parolă două fișiere,” protected.html „și”passwords.txt„. Pentru a adăuga mai multe, pur și simplu includeți mai multe instanțe de „|(filename\.ext)” în lista de fișiere.

parola proteja mai multe tipuri de fișiere

cu această metodă, folosim Apache FilesMatch Directiva pentru a proteja prin parolă mai multe tipuri de fișiere. Iată un exemplu:

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

Odată instalat, acest cod va necesita o parolă pentru accesul la următoarele tipuri de fișiere: .inc, .txt, .log, .dat, .zip, și .rar. Personalizați pentru a se potrivi nevoilor dvs.

protecție cu parolă pentru orice, cu excepția unui singur fișier

datorită Brett Batie pentru această tehnică puternică pentru a permite accesul la un singur fișier în timp ce protejează cu parolă orice altceva:

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

când este plasat în directorul rădăcină sau în orice director părinte, acest cod va proteja prin parolă totul, cu excepția fișierului numit „open-access.html„, care poate fi localizat în orice director sau subdirector ulterior.

pentru a proteja totul, permițând în același timp accesul la mai multe fișiere, putem folosi în schimb Directiva FilesMatch a Apache. Iată un exemplu care permite accesul la „open-access-1.html„, „open-access-2.html„, și „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>

rețineți că putem consolida lista de fișiere după cum urmează:

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

o abordare alternativă pentru a permite accesul deschis la orice fișier sau grup de fișiere este de a le localiza în propriul director cu următoarele directive adăugate la fișierul HTAccess:

Allow from all
satisfy any

Wrap-l apoi

după cum puteți vedea, Apache’ mod_auth funcționalitate face posibilă pentru a configura doar despre parola de protecție de configurare ar putea fi necesar. De la prevenirea accesului de la adrese IP specifice și domenii pentru a permite accesul numai pentru anumite fișiere și directoare, Apache face posibilă pentru a proteja fișierele cu ușurință și în siguranță. Și nici măcar nu am intrat în numeroasele posibilități disponibile pentru configurarea autorizațiilor specifice pentru utilizatori și grupuri. Cred că o să păstrez asta pentru un alt articol. Între timp, pentru mai multe informații despre puternicul Apache mod_auth, consultați documentația oficială.

Jeff Starr

despre autor
Jeff Starr = Dezvoltator Web. Specialist În Securitate. WordPress Piele De Bivol.