::[INTRO]::
Continuando con esta serie de mini-mini-howto's, voy a explicar como agregar seguridad básica a un directorio Web para poder ver su contenido con previa autenticación. Vamos en este ejemplo a crear una autenticación básica sobre un directorio Web particular, por ejemplo, al solicitar un URL como http://www.cualquier.dominio/cualquier_directorio inmediatamente nos aparezca una ventana solicitando un nombre de usuario y una contraseña.
La configuración se realizará sobre el sevidor Web Apache. Lo descrito en este mini-mini-howto solo aplica para este servidor en cuestión. Para otros servidores no se como se hará. ;)
::[HOWTO]::
- Crear el archivo de usuarios con la utilidad htpasswd para el directorio
que será autenticado
Ejecute:
htpasswd [-c] <archivo de usuarios> <nombre de usuario>
En donde,
[-c]
Indica que se creará un nuevo archivo. Si va agregar un usuario a un archivo existente, deberá omitir este modificador. Cada vez que utilice esta opción con un nombre de archivo existente, el archivo existente será truncado a longitud cero.
<archivo de usuarios>
Indica el nombre del archivo donde serán almacenados los usuarios y claves de acceso al directorio que deseamos proteger. Por estándar, recomiendo guardar estos archivos en /etc/httpd/ y establecer los permisos en el modo 640, esto es: -rw-r-----
<nombre de usuario>
Corresponde al nombre de usuario que desea agregar al archivo de usuarios especificado por <archivo de usuarios>.
Ejemplo:
La primera vez haríamos:
htpasswd -c /etc/httpd/basic.passwd juanmuno New password: (Entramos el passwd para el usuario juanmuno) Re-type new password: (Confirmamos el passwd para el usuario juanmuno) Adding password for user juanmuno
Para agregar un segundo usuario:
htpasswd /etc/httpd/basic.passwd juanrest New password: (Entramos el passwd para el usuario juanrest) Re-type new password: (Confirmamos el passwd para el usuario juanrest) Adding password for user juanrest
Note en este ultimo ejemplo la ausencia del modificador –c ya que estamos trabajando sobre el mismo archivo de usuarios, es decir, /etc/httpd/basic.passwd.
- Crear el archivo de grupos.
Para facilidad de manejo, podemos crear un archivo de grupos con los usuarios agregados en el archivo de usuarios del paso anterior. Para crear un archivo de grupos, cree un archivo con la siguiente sintaxis:
<Nombre del grupo 1>: <lista de nombres de usuarios del grupo 1> <Nombre del grupo 2>: <lista de nombres de usuarios del grupo 2> <Nombre del grupo n>: <lista de nombres de usuarios del grupo n>
Donde,
<Nombre del grupo>
Indica el nombre del grupo en donde serán agregados los usuarios que creamos en el primer paso. Ejemplos de nombres de grupos pueden ser: Managers, Administradores etc.
<lista de nombres de usuarios del grupo n>
Corresponde a la lista de nombres de usuarios agregados al archivo de usuarios del paso 1 que serán miembros de este grupo. Separe cada nombre de usuario por un espacio en blanco.
Ejemplo:
El siguiente ejemplo ilustra un archivo de grupos con los usuarios creados en el ejemplo del numeral 1.
Managers: juanmuno juanrest
En el archivo se ha creado un grupo Managers y como miembros de este grupo están los usuarios juanmuno y juanrest.
- Cambiar los permisos y propietarios al archivo de usuarios y grupos.
Cambie los permisos al archivo de usuarios y de grupos creado en el numeral 1 y 2 respectivamente al modo 640.
chmod 640 <archivo de usuarios> chmod 640 <archivo de grupos>
Para los ejemplos anteriores, esto sería:
chmod 640 /etc/httpd/basic.passwd chmod 640 /etc/httpd/basic.groups
Ahora cambie el propietario y grupo de los dos archivos anteriores al usuario y grupo apache
chown apache:apache
chown apache:apache Para los ejemplos anteriores, esto sería:
chown apache:apache /etc/httpd/basic.passwd chown apache:apache /etc/httpd/basic.groups
-
Crear el directorio a proteger debajo del directorio especificado por la directiva DocumentRoot de su archivo de configuración de Apache Web Server.
Continuando con el ejemplo, debajo de nuestra directiva DocumentRoot, la cual apunta a /var/www/html, en el archivo de configuración del servidor Web Apache (/etc/httpd/conf/httpd.conf) vamos a crear el directorio que llamaremos protegido. Esto es:
cd /var/www/html/ mkdir protegido
De esta manera tenemos en el disco duro la siguiente estructura:
/ | | +--/etc | | +--/var | +--/www | +--/html | +--/protegidoY la estructura de nuestro servidor Web, será la siguiente:
/html | +--/protegido - Inserte una directiva Directory
en el archivo de configuración del Apache Web Server, httpd.conf.
Inserte la siguiente directiva ilustrada aquí:
<Directory {/ruta/al/directorio/protegido}> AuthType Basic AuthName "{Titulo de la ventana de autenticación}" AuthUserFile {/ruta/al/archivo/de/usuarios} AuthGroupFile {/ruta/al/archivo/de/grupos} Require group {Nombre del o de los grupos autorizados} </Directory>Donde,
{/ruta/al/directorio/protegido}
Corresponde a la ruta completa del directorio que deseamos proteger.
{Titulo de la ventana de autenticación}
Entre comillas dobles especifique un titulo para la ventana de autenticación que será mostrada al usuario que desea acceder al contenido del directorio protegido.
{/ruta/al/archivo/de/usuarios}
Especifique la ruta completa del archivo de usuarios creado en el numeral 1.
{/ruta/al/archivo/de/grupos}
Especifique la ruta completa del archivo de grupos creado en el numeral 2.
{Nombre del o de los grupos autorizados}
Especifique el nombre de o de los grupos autorizados a ver el contenido del directorio protegido. Recuerde que debe ser un nombre de grupo especificado en el archivo de grupos. Puede especificar varios grupos separando cada uno por en espacio en blanco del otro.
Continuando con el ejemplo anterior, tendríamos lo siguiente:
<Directory /var/www/html/protegido> AuthType Basic AuthName "Entrada a directorio protegido" AuthUserFile /etc/httpd/basic.passwd AuthGroupFile /etc/httpd/basic.groups Require group Managers </Directory>
Note como la directiva Require group hace referencia al nombre del grupo creado en el numeral 2. De esta manera autorizamos a todos los usuarios miembros de este grupo.
Nota: Para prohibir el ingreso de un usuario particular al directorio, bien puede editar el archivo de grupos y sacarlo del o de los grupos del cual es miembro, o bien puede editar el archivo de usuarios y eliminar la entrada para el registro del usuario.
- Reinicie su servidor Apache Web Server
Reinicie el servicio Web. Para estas notas, estamos trabajando sobre un Apache Web Server el cual corre en un RedHat 9.0 y se reinicia como se ilustra aquí:
/etc/init.d/httpd restart
O bien:service httpd restart
::[FINAL]::
Pues no se que decir....estoy tan emocionado al recibir este premio...un saludo a mis patrocinadores y fans....

Cómo listar los archivos del directorio protegido?
No sé como se pueda listar (visualizar) los distintos archivos del directorio protegido, o sea , que el Apache sepa hacer un "dir" para ver todo el contenido bajo la carpeta protegida. Actualmente me sale mal y me da error.
Lo anterior me han dicho sin darme el detalle que es bajo una propiedad del httpd.conf que permite hacerlo, pero cuál es?
De antemano, gracias.
Marco
y ya tienes una fans más.
y ya tienes una fans más.
Muchas gracias