Salta el contingut

UD5 - Pràctica 1E - Autenticació en Apache

Autenticació i control d'accés

Pel que fa al procés d'autenticació d'usuaris en Apache 2, existeixen dos mètodes:

  • Bàsic o Simple: l'usuari en el navegador web introdueix el seu login o nom d'usuari i s'envien al servidor sense xifrar.
  • Digest: l'usuari en el navegador web introdueix el seu login y contrassenya i s'envien al servidor xifrats.

Aquests dos mètodes tan sols autentiquen a l'usuari quan intenta accedir a un recurs. Però en ningun dels dos mètodes les dades que a continuació s'intervanvien el servidor i el client van xifrades. Son mètodes que controlen l'accés als recursos, però no protegeixen la informació intercanviada a la comunicació client-servidor una vegada s'ha comprovat que l'accés és vàlid.

Autenticació bàsica

El mòdul que controla aquest mètode d'autenticació és auth_basic i té l'avantatge d'estar suportat per tots els navegadors web. Per la seua contra, té l'inconvenient de que el login i la contrassenya no van xifrats, com ja hem dit abans.

En el fitxer /etc/apache2/sites-available/000-default.conf, o en el fitxer relatiu al host virtual corresponent, haurem d'afegir un bloc ... per cada directori que es vullga protegir:

ApacheConf
1
2
3
4
5
6
<Directory "/var/www/html/privat">
    AuthType Basic
    AuthName "Accés restringit"
    AuthUserFile /etc/apache2/.htpasswd
    Require valid-user
</Directory>

On:

  • Haurem de subtituir /var/www/html/privat per el directori arrel del lloc que vullgam protegir.
  • AuthName: nom del domini d'autenticació. Defineix el conjunt de recursos que estaran subjectes als mateixos requisits d'autenticació. També és el text que apareixerà a la finestra que demana l'usuari i la contrassenya.
  • AuthType: tipus d'autenticació.
    • Basic: el login i contrassenya es negocia sense xifrar.
    • Digest: el login i contrassenya es negocia xifrat/encriptat.
  • AuthUserFile: ubicació del fitxer de text que contindrà els noms d'usuari i contrassenyes emprades a l'autenticació HTTP bàsica. Sol anomenar-se .htpasswd. Previament caldrà crear-lo i ubicar-lo al directori referenciat.
  • Require: usuaris que tenen accés als recursos especificats. Opcions disponibles:
    • valid-user: qualsevol usuari inclòs al fitxer de contrassenyes .htpasswd.
    • user : llistat d'usuaris d'*.htpasswd, separats per espais, que poden accedir.

Per tal de generar el fitxer .htpasswd amb els usuaris que tindran accés al recurs protegit, podem fer ús de la comanda htpasswd:

# htpasswd -c /etc/apache2/.htpasswd usuari1

L'opció -c permet crear el fitxer .htpasswd amb el primer usuari donat d'alta, que, a més a més, no te perquè ser un usuari existent al sistema.

Els permissos del fitxer .htpasswd haurien de ser 644, és a dir, lectura i escriptura per al propietari, que és root i lectura per al grup i altres.

Per tal de seguir donant d'alta usuaris al fitxer, no s'ha de posar l'argument -c perquè en compte d'afegir usuaris crearà de nou el fitxer amb l'últim usuari incorporat.

Amb tot açò, en accedir al recurs protegit veurem una finestra com aquesta:

Finestra d'autenticació

Es pot protegir també d'un grup d'usuaris:

ApacheConf
1
2
3
4
5
6
7
<Directory "/var/www/html/privat">
    AuthType Basic
    AuthName "Directori privat"
    AuthUserFile /etc/apache2/.htpasswd
    AuthGroupFile /etc/apache2/.grpasswd
    Require group nom_del_grup
</Directory>

El fitxer .grpasswd s'haurà de crear mitjançant un editor (nano?) i estarà format per els noms dels grups i els seus corresponents membres. Per exemple:

Text Only
Grup1: pepa pep pepeta pepet
Grup2: usuari1 usuari2

S'haurà d'activar el mòdul authz_groupfile amb # a2enmod authz_groupfile i reiniciar el servidor # service apache2 restart.

Directiva Require

La directiva Require admet els paràmetres: valid-user (usuari autenticat), group nom_del_grup (grup d'usuaris autenticats) i user nom_usuari (per a únicament eixe usuari).