divendres, 7 de desembre del 2007

Autentifiació bàsica en Apache

Una manera senzilla i poc segura d'autentificar una carpeta en un servidor web públic és emprar el mod_auth de Apache.

Com explica el manual d'Apache, cal crear una arxiu de contrasenyes fora de la ruta pública i un arxiu .htaccess a les carpetes a assegurar.

L'arxiu el creem amb la comanda htpasswd htpasswd -c /var/www/vhosts/xxx/contra/usuaris.pwd amic i ens demanarà la contrasenya per a l'usuari amic. Sense el paràmetre -c si volem afegir-ne més usuaris.

podem crear un arxiu de grups amb aquesta estructura: grup1: usuari1 usuari2
amics: usuari1 amic usuari3


I l'arxiu .htaccess tindrà aquesta fila AuthType Basic
AuthName "Area restringida."
AuthUserFile /var/www/vhosts/xxx/contra/usuaris.pwd
AuthGroupFile /var/www/vhosts/xxx/contra/grups.pwd
Require group amics


Si no definim els grups, farem el Require així
Require valid-user

Amb això ja tindríem una carpeta pública assegurada.

Ara només cal indicar a l'Apache que ha de fer cas d'aquesta parametrització concreta amb la instrucció
AllowOverride AuthConfig
a l'arxiu /etc/apache2/sites-available/elnostrearxiu.

El problema de mod_auth és que un cop ens hem autentificat el codi d'usuari i la contrasenya viatge amb nosaltres en totes les pàgines a la capçalera:
Request Headers
Host xxx
User-Agent Mozilla/5.0 (X11; U; Linux i686; ca; rv:1.8.1.11) Gecko/20071204 Ubuntu/7.10 (gutsy) Firefox/2.0.0.11
Accept text/xml,application/xml,application/xhtml+xml,text/html;q=0.9,text/plain;q=0.8,image/png,*/*;q=0.5
Accept-Language ca,en-us;q=0.7,en;q=0.3
Accept-Encoding gzip,deflate
Accept-Charset ISO-8859-1,utf-8;q=0.7,*;q=0.7
Keep-Alive 300
Connection keep-alive
Authorization Basic YW1pYzpUZXN0Q29udA==


Cert és que ara viatgen codificades en Base64 i no en text pla com ho feien fa anys, però clar, amb una senzilla utilitat de codificació/descodificació de Base64 online com aquesta, coneixereu el nom de l'usuari i la contrasenya.