Versi�n 2.0 del Servidor HTTP Apache

This document refers to the 2.0 version of Apache httpd, which is no longer maintained. Upgrade, and refer to the current version of httpd instead, documented at:
You may follow this link to go to the current version of this document.
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.
| M�dulos Relacionados | Directivas Relacionadas |
|---|---|
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.
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.
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.
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.
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.
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.
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.