Seguridad básica de Apache htpasswd

6
Seguridad básica de Apache htpasswd/htaccess en Win32 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 [APACHE_HOME]\bin que es donde encontrarás el archivohtpasswd.exe, ejecuta la instrucción: htpasswd -c apache.usr estergios Escribes 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

Transcript of Seguridad básica de Apache htpasswd

Page 1: Seguridad básica de Apache htpasswd

Seguridad básica de Apache htpasswd/htaccess en Win32

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 [APACHE_HOME]\bin que es donde encontrarás el archivohtpasswd.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.

Page 2: Seguridad básica de Apache htpasswd

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 .htaccess

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 .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 yhttp://httpd.apache.org/docs/mod/core.html#authname

Las directivas del archivo .htaccess son:

AuthName "Mi Aplicación"AuthType Basic

Page 3: Seguridad básica de Apache htpasswd

AuthUserFile C:\Apache\bin\apache.usrrequire user estergios invitado

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 [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 LimitOptions MultiViews Indexes SymLinksIfOwnerMatch IncludesNoExec<limit GET POST OPTIONS PROPFIND>Order allow,denyAllow from all</limit><limitexcept GET POST OPTIONS PROPFIND>Order deny,allowDeny 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

Page 4: Seguridad básica de Apache htpasswd

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: