
El servidor web Apache cuenta con un esquema de seguridad sencillo pero eficiente para establecer autenticación sobre directorios en los que se desea restringir el acceso mediante un usuario y contraseña. Este procedimiento funciona para Apache 1.3.x, del cual puedes descargarte la última versión aquí o descargarte el paquete de archivos ejecutables que hice a partir de los fuentes de Apache, mod_ssl y OpenSSL de aquí el cual sólo descomprimes y corres. Para efectos de este tutorial utilizaré este último.
Abre una sesión de línea de comandos y desplázate al directorio
Escribes la contraseña para el usuario estergios y la confirmas reescribiéndola nuevamente.

Puedes verificar el contenido del archivo con el comando
Si necesitas agregar más de un usuario ejecuta la instrucción:
después de la opción

Poniéndole atención al archivo apache.usr podrás observar, hasta este momento, un par de líneas de caracteres de las cuales sólo se distinguen del lado izquierdo los nombres de usuarios. El resto pertenece a la contraseña la cual
Una vez creado el archivo de usuarios, el siguiente paso es configurar el archivo
Lo que hace es establecer el nombre del archivo donde Apache buscará los accesos sobre el directorio. Ahora bien, cada directorio que deseas restringir debe tener un archivo
Dentro del directorio

Las directivas del archivo
En la tercera directiva especificas la ruta del archivo de usuarios que creaste y en la última línea especificas a quienes les permitirás el acceso. Hasta este momento Apache tiene información suficiente de los usuarios, no así del directorio, ya que si desde tu navegador intentas ver el directorio, se mostrará sin mayor contratiempo.
El siguiente paso es configurar en Apache el directorio cómo restringido, abre tu archivo
Quita los comentarios(#) que van de la directiva <directory> hasta </directory>, cambia la ruta
Por último, el directorio
Lo anterior crea un alias, por lo que ahora puedes acceder desde tu navegador la ruta protegida: http://testserver/aplicacion
Inicia Apache o bájalo y vuélvelo a levantar si es que lo tenías arriba e intenta acceder a la ruta: http://testserver/aplicacion si tu configuración es correcta te aparecerá la ventana de acceso:

Si presionas el botón Cancelar, veras una pantalla como esta:

o si escribes un usuario y contraseña correctos, ingresarás al directorio:

Abre una sesión de línea de comandos y desplázate al directorio
[APACHE_HOME]\bin que es donde encontrarás el archivo htpasswd.exe, ejecuta la instrucción:htpasswd -c apache.usr estergiosEscribes la contraseña para el usuario estergios y la confirmas reescribiéndola nuevamente.

Puedes verificar el contenido del archivo con el comando
type apache.usr

Si necesitas agregar más de un usuario ejecuta la instrucción:
htpasswd -b apache.usr invitado invitadodespués de la opción
-b va el nombre del archivo de usuarios previamente creado seguido del usuario y por último la contraseña, en el caso del ejemplo el usuario y contraseña son iguales.
Poniéndole atención al archivo apache.usr podrás observar, hasta este momento, un par de líneas de caracteres de las cuales sólo se distinguen del lado izquierdo los nombres de usuarios. El resto pertenece a la contraseña la cual
htpasswd.exe en automático encripta usando el algoritmo MD5.Una vez creado el archivo de usuarios, el siguiente paso es configurar el archivo
[APACHE_HOME]\conf\httpd.conf. Verifica que la directiva AccessFileName exista o no esté comentada(#).#
# AccessFileName: The name of the file to look for in each directory
# for access control information.
#
AccessFileName .htaccessLo que hace es establecer el nombre del archivo donde Apache buscará los accesos sobre el directorio. Ahora bien, cada directorio que deseas restringir debe tener un archivo
.htaccess. Un ejemplo sencillo sería restringir el acceso al directorio c:\aplicacion.Dentro del directorio
c:\aplicacion crearé un archivo .htaccess con directivas específicas para el contexto llamado mod_auth. Más información en http://httpd.apache.org/docs/mod/mod_auth.html y http://httpd.apache.org/docs/mod/core.html#authname
Las directivas del archivo
.htaccess son:AuthName "Mi Aplicación"
AuthType Basic
AuthUserFile C:\Apache\bin\apache.usr
require user estergios invitadoEn la tercera directiva especificas la ruta del archivo de usuarios que creaste y en la última línea especificas a quienes les permitirás el acceso. Hasta este momento Apache tiene información suficiente de los usuarios, no así del directorio, ya que si desde tu navegador intentas ver el directorio, se mostrará sin mayor contratiempo.
El siguiente paso es configurar en Apache el directorio cómo restringido, abre tu archivo
[APACHE_HOME]\conf\httpd.conf y busca:# Control access to UserDir directories. The following is an example
# for a site where these directories are restricted to read-only.
#
#<directory "/Apache/users">
# AllowOverride FileInfo AuthConfig Limit
# Options MultiViews Indexes SymLinksIfOwnerMatch IncludesNoExec
# <Limit GET POST OPTIONS PROPFIND>
# Order allow,deny
# Allow from all
# </limit>
# <limitexcept GET POST OPTIONS PROPFIND>
# Order deny,allow
# Deny from all
# </limitexcept>
#Quita los comentarios(#) que van de la directiva <directory> hasta </directory>, cambia la ruta
"/Apache/users" por "c:/aplicacion" que es la ruta donde se encuentra el archivo .htaccess, es decir, el directorio restringido el cual quedaría como:# Control access to UserDir directories. The following is an example
# for a site where these directories are restricted to read-only.
#
<directory "c:/aplicacion">
AllowOverride FileInfo AuthConfig Limit
Options MultiViews Indexes SymLinksIfOwnerMatch IncludesNoExec
<limit GET POST OPTIONS PROPFIND>
Order allow,deny
Allow from all
</limit>
<limitexcept GET POST OPTIONS PROPFIND>
Order deny,allow
Deny from all
</limitexcept>
</directory>Por último, el directorio
c:\aplicacion no está configurado para que Apache lo pueda accesar, por lo que será necesario que busques la directiva <IfModule mod_alias.c> e immediatamente después de esta escribas la línea:Alias /aplicacion "C:/aplicacion/"Lo anterior crea un alias, por lo que ahora puedes acceder desde tu navegador la ruta protegida: http://testserver/aplicacion
Inicia Apache o bájalo y vuélvelo a levantar si es que lo tenías arriba e intenta acceder a la ruta: http://testserver/aplicacion si tu configuración es correcta te aparecerá la ventana de acceso:

Si presionas el botón Cancelar, veras una pantalla como esta:

o si escribes un usuario y contraseña correctos, ingresarás al directorio:

Continuar leyendo...
