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
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
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;
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
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:
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!
Publicar un comentario