Proteger carpetas públicas del servidor web

Como ya sabrás obviamente, Apache cuenta con una carpeta configurable en la que desplegamos nuestros websites o aplicaciones webs. Si queremos restringir el acceso a nuestras aplicaciones, normalmente hacemos nuestro formulario de login que valide al usuario, ya sea en ASP, PHP, JSP… Por otra parte los ficheros de configuración (acceso a base de datos, direcciones IP de servidores de base de datos o web services, etc) que conforman la parte pricada de la aplicación para que no sean accesibles lo guardamos en alguna carpeta fuera del directorio público.

En ocasiones necesitamos que algunos ficheros estén accesibles a través del servidor para cierto usuario, pero a su vez, digamos que éstos no forman parte de nuestra aplicación. Imaginemos que nuestra aplicación genera un fichero log con los accesos al sistema. Podríamos ver el contenido de este log a través del servidor desde cualquier equipo, pero realmente no tiene mucho sentido que nos identifiquemos en la aplicación (pues no vamos a usar sus funcionalidades) pero tampoco son datos que deban estar expuestos a cualquiera.

Lo que podemos hacer es proteger este fichero usando la configuración del servidor en lugar del código de nuestra aplicación y que el explorador nos muestre una ventana de logueo. En el caso de Apache y Linux, debemos hacer lo siguiente:

1. Permitir que Apache pueda solicitar Autorización. Para ello editamos con cualquier editor de texto el archivo httpd.conf y buscamos la línea:

AllowOverride None

y sustituimos LA SEGUNDA OCURRENCIA (NUNCA LA PRIMERA; OJO) por

AllowOverride AuthConfig

2. Creamos la carpeta a proteger. Por ejemplo:

/var/www/html/websenior/logs

3. Añadimos la restricción de acceso. Debemos añadir dos ficheros a la carpeta, .htaccess (con el punto) que nos indica las propiedades del acceso y lista de usuarios que podrán acceder y .htpasswd (con el punto también) que incluye cada usuario y contraseña de entrada.

Nuestro .htaccess quedaría:

AuthName "Control de acceso restringido"
AuthType Basic
AuthUserFile /var/www/html/websenior/logs/.htpasswd
Require user kurroman

El .htpasswd no es posible generarlo directamente a través de un editor de texto, aunque existen herramientas para su creación, desde shell podemos hacer:

htpasswd -cmb .htpasswd kurroman mipassword

se finit!

¿Como añadimos mas usuarios? Debemos editar una linea en el .htaccess de la forma:

Require user kurroman fjtorres

y añadir su contraseña al .htpasswd lanzando en el shell la sentencia:

htpasswd -mb .htpasswd fjtorres supassword

fijaros que ahora hemos quitado la opción “-c” del comando. Si no la quito, me borraría y crearía de nuevo el .htpasswd, perdiendo los usuarios que ya existian.

¿y como borro usuarios manteniendo el resto? Pues editamos el .htaccess y quitamos el usuario, luego lanzaríamos la sentencia:

htpasswd D fjtorres

y con esto eliminamos al usuario.

Espero que os sea útil este artículo.

Anuncios

Etiquetado:, ,

Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s

A %d blogueros les gusta esto: