<-
Apache > Servidor HTTP > Documentaci�n > Versi�n 2.0 > How-To / Tutoriales

Autentificaci�n, Autorizaci�n y Control de Acceso

Idiomas disponibles:  en  |  es  |  ja  |  ko 

Esta traducci�n podr�a estar obsoleta. Consulte la versi�n en ingl�s de la documentaci�n para comprobar si se han producido cambios recientemente.

La autentificaci�n es cualquier proceso mediante el cual se verifica que alguien es quien dice ser. La autorizaci�n es cualquier proceso por el cual a alguien se le permite estar donde quiere ir, o tener la informaci�n que quiere tener.

top

M�dulos y Directivas relacionadas

top

Introducci�n

Si en su sitio web tiene informaci�n sensible o dirigida s�lo a un peque�o grupo de personas, las t�cnicas explicadas en �ste art�culo le ayudar�n a asegurarse de que las personas que ven esas p�ginas son las personas que usted quiere que las vean.

Este art�culo cubre la manera "est�ndar" de proteger partes de su sitio web que la mayor�a de ustedes van a usar.

top

Los Prerrequisitos

Las directivas tratadas en �ste art�culo necesitar�n ir en el archivo de configuraci�n principal de su servidor (t�picamente en una secci�n del tipo <Directory>), o en archivos de configuraci�n por directorios (archivos .htaccess).

Si planea usar archivos .htaccess, necesitar� tener una configuraci�n en el servidor que permita poner directivas de autentificaci�n en estos archivos. Esto se logra con la directiva AllowOverride, la cual especifica cu�les directivas, en caso de existir, pueden ser colocadas en los archivos de configuraci�n por directorios.

Ya que se est� hablando de autentificaci�n, necesitar� una directiva AllowOverride como la siguiente:

AllowOverride AuthConfig

O, si s�lo va a colocar directivas directamente en el principal archivo de configuraci�n del servidor, por supuesto necesitar� tener permiso de escritura a ese archivo.

Y necesitar� saber un poco acerca de la estructura de directorios de su servidor, con la finalidad de que sepa d�nde est�n algunos archivos. Esto no deber�a ser muy dif�cil, y tratar� de hacerlo sencillo cuando lleguemos a ese punto.

top

Puesta en funcionamiento

Aqu� est� lo esencial en cuanto a proteger con contrase�a un directorio de su servidor.

Necesitar� crear un archivo de contrase�as. �ste archivo deber�a colocarlo en alg�n sitio no accesible mediante la Web. Por ejemplo, si sus documentos son servidos desde /usr/local/apache/htdocs usted podr�a querer colocar el(los) archivo(s) de contrase�as en /usr/local/apache/passwd.

Para crear un archivo de contrase�as, use la utilidad htpasswd que viene con Apache. �sta utilidad puede encontrarla en el directorio bin de cualquier sitio en que haya instalado Apache. Para crear el archivo, escriba:

htpasswd -c /usr/local/apache/passwd/passwords rbowen

htpasswd le pedir� la contrase�a, y luego se la volver� a pedir para confirmarla:

# htpasswd -c /usr/local/apache/passwd/passwords rbowen
New password: mypassword
Re-type new password: mypassword
Adding password for user rbowen

Si htpasswd no est� en su ruta, por supuesto tendr� que escribir la ruta completa al archivo para ejecutarlo. En mi servidor, �ste archivo est� en /usr/local/apache/bin/htpasswd

El siguiente paso es configurar el servidor para que solicite una contrase�a y decirle al servidor a qu� usuarios se les permite el acceso. Puede hacer esto editando el archivo httpd.conf o usando un archivo .htaccess. Por ejemplo, si desea proteger el directorio /usr/local/apache/htdocs/secret, puede usar las siguientes directivas, ya sea coloc�ndolas en el archivo /usr/local/apache/htdocs/secret/.htaccess, o en httpd.conf dentro de una secci�n <Directory /usr/local/apache/apache/htdocs/secret>.

AuthType Basic
AuthName "Restricted Files"
AuthUserFile /usr/local/apache/passwd/passwords
Require user rbowen

Vamos a examinar cada una de estas directivas por separado. La directiva AuthType selecciona el m�todo que se va a usar para autentificar al usuario. El m�todo m�s com�n es Basic, y �ste m�todo est� implementado en mod_auth. Es importante ser consciente, sin embargo, de que la autentificaci�n B�sica env�a la contrase�a desde el cliente hasta el navegador sin encriptar. Por lo tanto, este m�todo no deber�a ser usado para informaci�n altamente sensible. Apache soporta otro m�todo de autentificaci�n: AuthType Digest. Este m�todo est� implementado en mod_auth_digest y es mucho m�s seguro. S�lo las versiones m�s recientes de clientes soportan la autentificaci�n del tipo Digest.

La directiva AuthName establece el Dominio (Realm) a usar en la autentificaci�n. El dominio (realm) cumple dos funciones importantes. Primero, el cliente frecuentemente presenta esta informaci�n al usuario como parte del cuatro de di�logo para la contrase�a. Segundo, es usado por el cliente para determinar qu� contrase�a enviar para un �rea autentificada dada.

As�, por ejemplo, una vez que el cliente se haya autentificado en el �rea "Restricted Files", autom�ticamente se volver� a tratar de usar la misma contrase�a en cualquier �rea del mismo servidor que est� marcado con el Dominio (Realm) "Restricted Files". Por lo tanto, puede evitar que se le pida al usuario la contrase�a m�s de una vez permitiendo compartir el mismo dominio (realm) para m�ltiples �reas restringidas. Por supuesto, por razones de seguridad, el cliente siempre necesitar� pedir de nuevo la contrase�a cuando cambie el nombre de la m�quina del servidor.

La directiva AuthUserFile establece la ruta al archivo de contrase�a que acabamos de crear con htpasswd. Si tiene un gran n�mero de usuarios, ser�a bastante lento buscar por medio de un archivo en texto plano para autentificar al usuario en cada solicitud. Apache tambi�n tiene la capacidad de almacenar la informaci�n del usuario en archivos r�pidos de bases de datos. El m�dulo mod_auth_dbm proporciona la directiva AuthDBMUserFile. Estos archivos pueden ser creados y manipulados con el programa dbmmanage. Muchos otros tipos de opciones de autentificaci�n est�n disponibles en m�dulos de terceras partes en la Base de datos de M�dulos de Apache.

Finalmente, la directiva Require proporciona la parte de la autorizaci�n del proceso estableciendo el usuario al que se le permite acceder a ese �rea del servidor. En la pr�xima secci�n, discutimos varias formas de usar la directiva Require.

top

Permitir el acceso a m�s de una persona

Las directivas anteriores s�lo permiten que una persona (espec�ficamente alguien con un nombre de usuario de rbowen) acceda al directorio. En la mayor�a de los casos, usted querr� permitir el acceso a m�s de una persona. Aqu� es donde entra la directiva AuthGroupFile.

Si desea permitir la entrada a m�s de una persona, necesitar� crear un archivo de grupo que asocie nombres de grupo con una lista de usuarios perteneciente a ese grupo. El formato de este archivo es muy sencillo, y puede crearlo con su editor favorito. El contenido del archivo ser� parecido a este:

GroupName: rbowen dpitts sungo rshersey

Esto es solo una lista de miembros del grupo escritos en una l�nea separados por espacios.

Para agregar un usuario a un archivo de contrase�as ya existente, escriba:

htpasswd /usr/local/apache/passwd/passwords dpitts

Obtendr� la misma respuesta que antes, pero el nuevo usuario ser� agregado al archivo existente, en lugar de crear un nuevo archivo. (Es la opci�n -c la que se cree un nuevo archivo de contrase�as).

Ahora, necesita modificar su archivo .htaccess para que sea como el siguiente:

AuthType Basic
AuthName "By Invitation Only"
AuthUserFile /usr/local/apache/passwd/passwords
AuthGroupFile /usr/local/apache/passwd/groups
Require group GroupName

Ahora, cualquiera que est� listado en el grupo GroupName, y figure en el archivo password, se le permitir� el acceso, si escribe la contrase�a correcta.

Existe otra manera de permitir entrar a m�ltiples usuarios que es menos espec�fica. En lugar de crear un archivo de grupo, puede usar s�lo la siguiente directiva:

Require valid-user

Usando eso en vez de la l�nea Require user rbowen, le permitir� el acceso a cualquiera que est� listado en el archivo de contrase�as y que haya introducido correctamente su contrase�a. Incluso puede emular el comportamiento del grupo aqu�, s�lo manteniendo un archivo de contrase�a para cada grupo. La ventaja de esta t�cnica es que Apache s�lo tiene que verificar un archivo, en vez de dos. La desventaja es que usted tiene que mantener un grupo de archivos de contrase�a, y recordar referirse al correcto en la directiva AuthUserFile.

top

Posibles Problemas

Por la manera en la que la autentificaci�n b�sica est� especificada, su nombre de usuario y contrase�a debe ser verificado cada vez que se solicita un documento del servidor. Incluso si est� recargando la misma p�gina, y por cada imagen de la p�gina (si vienen de un directorio protegido). Como se puede imaginar, esto retrasa un poco las cosas. El retraso es proporcional al tama�o del archivo de contrase�a, porque se tiene que abrir ese archivo, y recorrer la lista de usuarios hasta que encuentre su nombre. Y eso se tiene que hacer cada vez que se cargue la p�gina.

Una consecuencia de esto es que hay un l�mite pr�ctico de cu�ntos usuarios puede colocar en un archivo de contrase�as. Este l�mite variar� dependiendo del rendimiento de su equipo servidor en particular, pero puede esperar observar una disminuci�n una vez que inserte unos cientos de entradas, y puede que entonces considere un m�todo distinto de autentificaci�n.

top

�Qu� otra cosa sencilla y efectiva puedo hacer?

La autentificaci�n por nombre de usuario y contrase�a es s�lo parte del cuento. Frecuentemente se desea permitir el acceso a los usuarios basandose en algo m�s que qui�nes son. Algo como de d�nde vienen.

Las directivas Allow y Deny posibilitan permitir y rechazar el acceso dependiendo del nombre o la direcci�n de la m�quina que solicita un documento. La directiva Order va de la mano con estas dos, y le dice a Apache en qu� orden aplicar los filtros.

El uso de estas directivas es:

Allow from address

donde address es una direcci�n IP (o una direcci�n IP parcial) o un nombre de dominio completamente cualificado (o un nombre de dominio parcial); puede proporcionar m�ltiples direcciones o nombres de dominio, si lo desea.

Por ejemplo, si usted tiene a alguien que manda mensajes no deseados a su foro, y quiere que no vuelva a acceder, podr�a hacer lo siguiente:

Deny from 205.252.46.165

Los visitantes que vengan de esa direcci�n no podr�n ver el contenido afectado por esta directiva. Si, por el contrario, usted tiene un nombre de m�quina pero no una direcci�n IP, tambi�n puede usarlo.

Deny from host.example.com

Y, si le gustar�a bloquear el acceso de un dominio entero, puede especificar s�lo parte de una direcci�n o nombre de dominio:

Deny from 192.101.205
Deny from cyberthugs.com moreidiots.com
Deny from ke

Usar Order le permitir� estar seguro de que efectivamente est� restringiendo el acceso al grupo al que quiere permitir el acceso, combinando una directiva Deny y una Allow:

Order deny,allow
Deny from all
Allow from dev.example.com

Usando s�lo la directiva Allow no har�a lo que desea, porque le permitir�a entrar a la gente proveniente de esa m�quina, y adicionalmente a cualquier persona. Lo que usted quiere es dejar entrar s�lo aquellos.

top

M�s informaci�n

Tambi�n deber�a leer la documentaci�n de mod_auth y mod_access que contiene m�s informaci�n acerca de c�mo funciona todo esto.

Idiomas disponibles:  en  |  es  |  ja  |  ko