04 diciembre 2012

Proteger directorios con Contraseñas en Apache, Debian Wheezy


Este artículo va relacionado para las personas que tienen un servidor de ficheros en http, si tenemos un sitio web donde proporcione archivos para su descarga directamente desde el navegador, la opción más idónea es protegiéndolo usando .htaccess, este archivo permite ocultar las carpetas que no quieren ser vista desde la web, esta función también es efectiva si usamos gestores de contenidos como Joomla, para realizar este paso, abrimos nuestro terminal como root y escribimos;

En primera estancia, creamos el archivo que van contener el usuario y la contraseña;

htpasswd -c /etc/apache2/.htpasswd usuario1
htpasswd /etc/apache2/.htpasswd usuario2

En la línea anterior estamos creando el usuario1 con su contraseña y la segunda línea es para agregar otro usuario al archivo de .htpasswd 

Ahora creamos el archivo que va contener la restricciones y la validación con los usuarios creados;

nano /var/www/privado/.htaccess

En la línea anterior especificamos la carpeta donde va contener el archivo que permite validar al usuario, este archivo se puede reutilizar copiándolo en las carpetas que queremos bloquear, en mi caso, tengo mi servidor de archivos en /var/www/ y el directorio a proteger es privado, una vez que abra el nano escribimos esto;

AuthType Basic
AuthUserFile /etc/apache2/.htpasswd
AuthName "Enter password"
Require valid-user

Guardamos con Ctrl + O y salimos Ctrl + X, para que se haga efecto estos cambios, parte de esa seguridad incluye deshabilitar los SSI (Server Side Includes o Inclusiones del Lado del Servidor) y el uso de los archivos .htaccess. Estos últimos sirven para modificar o agregar funciones a directorios.

Básicamente solo se necesita modificar las siguientes líneas a cualquier definición del directorio que se encuentra por defecto en:


nano /etc/apache2/sites-enableb/000-default

Donde se encuentre;

DocumentRoot /var/www y < Directory /home/www/ >

Representa donde está almacenado nuestra página web, varía según la configuración de cada usuario donde se encuentra alojado su sitio web en su PC;

Modificamos;

AllowOverride None

por

AllowOverride All

Guardamos nuevamente con Ctrl + O y Ctrl + X para salir, una vez completado este paso reiniciamos nuestro servidor apache con;

/etc/init.d/apache2 restart

Si queremos entrar al directorio protegido y validarnos con nuestra contraseña, escribo los ejemplos a continuación directamente en nuestro navegador;

http://localhost/privado
http://192.168.1.101/privado
http://midominio.com/privado

Nos mostrara una ventana indicando el nombre de usuario y contraseña, la introducimos deberíamos entrar a la carpeta, espero que le sirva de gran ayuda, les recuerdo nuevamente antes de despedirme, que si queremos proteger otra carpeta que este contenido dentro /var/www, por ejemplo, imagenes lo haríamos de esta forma;

cp /var/www/privado/.htaccess /var/www/imagenes

Nota: Si se producen errores de servidor, asegúrese de que el usuario de Apache tiene permiso para leer tanto el archivo .htaccess y .htpasswd, ejecutamos desde nuestro terminal como root;


chmod 755 /var/www/publico/.htaccess
chmod 755 /etc/apache2/.htpasswd


1 comentario:

Blasko dijo...

Eres un genio. Soy estudiante de ingeniería informática, llevo tiempo buscando información y tutoriales. Tu tutorial explicado con tanta claridad me ha dado los resultados que deseaba. Por fin después de dos días puedo entregar mi practica de Apache2 para la universidad! Muchísimas gracias!