Sei sulla pagina 1di 5

Practica Autenticación de Usuarios

Muchas veces tendremos la necesidad de mantener información sensible en nuestro sitio


web por lo que la seguridad se vuelve un tema crucial. Dicha información solo deberá
ser vista por al gente que se supone debe verla. Como cada persona tendrá distintos
privilegios sobre las cosas que puede o non ver, el administrador tendrá que
implementar una forma segura de autentificación y autorización en el servidor en el
servidor. Definamos estos términos:

Autentificación: Proceso que consiste en determinar si una persona es quien dice ser. Es
decir, consiste en demostrar la identidad de dicha persona.

Autorización: Proceso que permite determinar si la persona, ya identificada, tiene el


derecho de obtener esa información.

Creación del archivo .passwd

El archivo de texto .passwd consiste en una lista de nombres de usuarios con sus
respectivas claves (passwords) encriptadas por lo que este archivo no puede ser creado o
editado a mano. Este archivo deberá residir fuera de nuestra raíz de documentos, es
decir fuera del árbol que contiene todos los archivos de nuestro sitio.

ServerRoot
/usr/local/Apache

DocumentRoot
/usr/local/Apache/htdocs

Crear el directorio
/usr/local/Apache/pass

Para crear el archivo es necesario utilizar el programa htpasswd con la opciòn –c, para
crear un nuevo archivo.
#cd /usr/local/Apache/pass
#/usr/local/Apache/bin/htpasswd –c .passwd luis
New Password :
Re-type new password :
Adding password for user luis

Es primer argumento (después de la –c ) indica el nombre del archivo que se crearà, el


segundo indoca el nombre de usuario.
Si el archivo .passwd ya existe debemos omitir la opcion –c pues de no hacerlo
borraremos a los usuarios que teniamos anteriormente.
#cd /usr/local/Apache/pass
#/usr/local/Apache/bin/htpasswd –c .passwd juan
New Password :
Re-type new password :
Adding password for user juan

En este momento el archivo .passwd se ve así:


ceca: YhW3VOGJDEXQU
usuario: BFIq1GrmtAiy

Configuración de grupos
Probablemente no seamos los únicos en nuestra organización con derechos para entrar
al área privada, por lo que tal vez sea conveniente crear un grupo de usuarios con ese
mismo privilegio. Esto nos permitirá llevar una mejor organización más cuidadosa de
quien puede o no obtener la información privada.

Continuando con el ejemplo, hagamos que tanto luis como juan pertenezcan al grupo
webteam. Para esto crearemos un archivo llamado .groups y lo colocaremos en el
mismo directorio en el que pusimos el archivo .passwd. El archivo .groups se ve de la
siguiente manera:

webteam: luis juan

En este archivo colocaremos los nombres de nuestros grupos seguidos de los nombres
de usuario de ese grupo separados por espacios. Un usuario puede pertenecer a varios
grupos.

Control de acceso y autentificación con Apache

Una vez que hemos creado las bases de datos de usuarios y, en su caso, los grupos, es
necesario configurar el servidor para poder proteger nuestra área privada. Esta
configuración se puede hacer globalmente, modificando el archivo httpd.conf o
utilizando archivos .htaccess

Metodo1. Configuración de httpd.conf

El primer método consiste en agregar una sección en nuestro archivo httpd.conf por
cada directorio que deseemos proteger. Para esto es necesario tener acceso al archivo
httpd.conf, por lo que si no tenemos ese acceso tendremos que usar el método de usar
archivos .htaccess, visto en la siguiente sección de esta pràctica. No es conveniente
saltarse directamente a esa sección, ya que serà en esta sección en donde se explicaràn
las directivas necesarias.

<DIRECTORY> y </DIRECTORY> nos preemitirán agrupar un conjunto de directivas


que se aplicaran a un directorio dentro del arbol de documentos. En nuestro ejemplo, el
directorio que queremos proteger (asi como su contenido es) es:

/usr/local/Apache/htdocs/administrar

Las directivas que utilizaremos son:

 AuthType
 AuthName
 AuthUserFile
 AuthGroupFile
 Require
Si solo luis tendra accesso al àrea privada, deberemos agregar la siguiente sección al
archivo httpd.conf

<DIRECTORY /usr/local/Apache/htdocs/administrar>
AuthType Basic
AuthName “Area de Administration”
AuthUserFile /usr/local/Apache/pass/.passwd
Require user luis
</DIRECTORY>

Otro caso, si luis y juan tendrán acceso

<DIRECTORY /usr/local/Apache/htdocs/administrar>
AuthType Basic
AuthName “Area de Administration”
AuthUserFile /usr/local/Apache/pass/.passwd
Require user luis juan
</DIRECTORY>

Y por ultimo, si todos los miembros del grupo webteam tendrán acceso:

<DIRECTORY /usr/local/Apache/htdocs/administrar>
AuthType Basic
AuthName “Area de Administration”
AuthUserFile /usr/local/Apache/pass/.passwd
AuthGroupFile /usr/local/Apache/pass/.groups
Require group webteam
</DIRECTORY>

AuthType
Permite seleccionar el tipo de autentificación para el directorio

AuthName
Permite especificar el nombre de la autentificación, este nombre aparecerá en el dialogo
del Login provisto por el cliente (navegador).

AuthUserFile
Indica en donde se encuentra el archivo de usuarios

AuthGroupFile
Indica en donde se encuentra el archivo de grupos

Require
Indica aquellos usuarios o grupos que podran acceder al directorio

Por ultimo no olvidemos reiniciar Apache


#/usr/local/Apache/bin/apachectl restart
Metodo 2: Archivos .htaccess

El método visto anteriormente es el mas recomendado pero tiene la desventaja de que


debemos tener acceso al archivo httpd.conf , lo cual muchas veces no es posible. Es por
esto que se explica el método de los archivos .htaccess, sin embargo, debemos de tomar
en cuenta que nuestro servidor debe de estar configurado para aceptar estos archivos. En
especifico, debe existir la directiva AllowOverride con el valor AuthConfig en el
archivo httpd.conf, dentro de la sección <Directory “/usr/local/Apache/htdocs”>

Los archivos .htaccess permiten hacer configuraciones del servidor dependiendo del
directorio en el que estemos. Estos archivos de directivas dejan a un lado las directivas
en htpd.conf y aplica las que contiene tanto el directorio como a todo su contenido.

Para asegurar nuestra área privada, usaremos las mismas directivas vistas en la sección
anterior, pero las pondremos en el archivo .htaccess en el directorio:

/usr/local/Apache/htdocs/admin

Así si solo luis tendrá acceso al área privada, deberemos de crear el archivo .htaccess
con este contenido:

AuthType Basic
AuthName “Area de Admin”
AuthUserFile /usr/local/Apache/pass/.passwd
Require user luis

Otro caso si luis y juan tendrán acceso:

AuthType Basic
AuthName “Area de Admin”
AuthUserFile /usr/local/Apache/pass/.passwd
Require user luis juan

Y por ultimo, si todos los miembros del grupo webteam tendrán acceso:

AuthType Basic
AuthName “Area de Admin”
AuthUserFile /usr/local/Apache/pass/.passwd
AuthGroupFile /usr/local/Apache/pass/.groups
Require group webteam

Ejercicios complementarios: Por el método 1

Crear los siguientes directorios:

/usr/local/Apache/htdocs/admin_usuario/
/usr/local/Apache/htdocs/admin_usuarios/
Implementando el mètodo 1 visto con anterioridad limitar el acceso a los directories
creados de acuerdo a las siguientes consideraciones:

/usr/local/Apache/htdocs/admin_usuario/ únicamente el usuario pedro


/usr/local/Apache/htdocs/admin_usuarios/ únicamente a roberto y edgar

Ejercicios complementarios: Por el método 2

Crear el siguiente directorio


/usr/local/Apache/htdocs/admin_grupo/

Implementando el método 2 visto con anterioridad limitar el acceso a los directorios


creados de acuerdo a las siguientes consideraciones:

/usr/local/Apache/htdocs/admin_grupo/ únicamente a diana y rubi del


grupo de “mujeres team”

Potrebbero piacerti anche