url seguras en apache2 con mod_auth_token

A veces el publicar en nuestra web algo para que la gente se descargue, puede provocar que si el link es publicado en algun sitio, puede generar un exceso de trafico en nuestros servidores por una descarga masiva.
El modulo de apache2 mod_auth_token, nos puede ayudar a generar uris temporales para limitar en el tiempo y en base a la IP de origen la url generada.
http://code.google.com/p/mod-auth-token/

Para poder compilar el modulo tenemos que instalar algunos paquetes, si no los tenemos instalados ya

root@lnxport:~# apt-get install apache2-prefork-dev autoconf automake  libtool

Ahora nos descargamos el modulo y lo instalamos

root@lnxport:~# wget http://mod-auth-token.googlecode.com/files/mod_auth_token-1.0.5.tar.gz
root@lnxport:~# tar xvfz mod_auth_token-1.0.5.tar.gz
root@lnxport:~# cd mod_auth_token-1.0.5

Como el modulo puede haberse generado por el autor con una version diferente de automake para que nos compile tenemos que ejecutar el script buildconf que hay en el directorio antes de hacer el configure

root@lnxport:~/mod_auth_token-1.0.5# ./buildconf
root@lnxport:~/mod_auth_token-1.0.5# ./configure
root@lnxport:~/mod_auth_token-1.0.5# make
root@lnxport:~/mod_auth_token-1.0.5# make install

Si todo ha ido bien, nos dira que ha instalado y activado el modulo. Ahora debemos configurar apache para que use el modulo. Añadimos la siguiente configuración en el virtualhost de nuestro apache2

root@lnxport:~# vi /etc/apache2/sites-enabled/000-default

   AuthTokenSecret       "clavesecreta"
   AuthTokenPrefix       /downloads/
   AuthTokenTimeout      60
   #AuthTokenLimitByIp    off


Como veis he comentado el parametro AuthTokenLimitByIp ya que al chequear la configuración me da un error. Con esto lo unico que no tendremos son los tokens basados en IP. Tambien tenemos que poner la clave secreata que queramos. Guardamos la configuración, la chequeamos y reiniciamos

root@lnxport:~# apache2ctl configtest 
Syntax OK
root@lnxport:/var/www# apache2ctl restart

Ahora vamos a hacer un script en php para generar url`s dimanicas. Primero creamos el directorio downloads en el DocumentRoot del apache y copiamos el archivo que queremos proteger en el

root@lnxport:~# cd /var/www/
root@lnxport:/var/www# mkdir downloads

Y creamos un script php siguiendo la base del ejemplo de la pagina del desarrollador:

download_file.php

".$url."";
?>

Ahora llamamos desde el navegador a este php http://localhost/download_file.php veremos la url que se genera:
http://localhost/downloads/db7c7ea61b5be373315e92a5eb90496e/4ddaea11/lnxnet_download.doc
Si esta todo configurado correctamente, nos descargara el archivo que hayamos configurado. Pero si esperamos los 60 segundos que hemos configurado en la sección de apache, veremos que el servidor nos devuelve en código 410 Gone, informándonos que el link ya no esta disponible.
Incluso podemos ver en el log de apache, los intentos de acceso no autorizados porque el token a caducado

[Tue May 24 01:18:01 2011] [warn] [client 127.0.0.1] mod_auth_token: token expired at 1306191109, now is 1306192681

Con esto podemos, evitar que nos descargen archivos desde sitios de descargas y links

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *