Instalación de Joomla y permisos de los directorios

Hace relativamente poco tiempo las páginas webs se hacían de forma artesanal escribiendo un archivo HTML que contenía los textos y las imágenes. La unión de muchos archivos HTML y un archivo índice era todo lo necesario para tener una página web. Esta forma de trabajar tiene algunos inconvenientes como la dificultad en el mantenimiento al crecer la web o el coste en tiempo de un cambio en el diseño. Una solución a este problema sin tener que aprender a programar un lenguaje como PHP o ASP es usar un gestor de contenidos o CMS. Algunos ejemplos de gestores de contenido son Joomla, Drupal o WordPress. Esta guía se centra en Joomla aunque muchas partes se pueden aplicar a otros gestores de contenido. Este primer artículo explica la forma de instalar Joomla y de asegurarlo, en posteriores artículos veremos la forma de añadir extensiones, actualizar un sistema en producción o modificar las plantillas.

Introducción

Para trabajar con un CMS necesitamos un servidor web (Apache), un lenguaje de programación (PHP) y una base de datos (MySQL). Una forma cómoda de trabajar es instalando todo lo relacionado con la web en una máquina virtual. Se puede usar cualquier cualquier distribución siempre que tengamos los paquetes necesarios. En mi caso utilizo una máquina virtual con Ubuntu Server ya que es rápido de preparar y empezar a trabajar. De forma auxiliar también es necesario instalar el programa phpMyAdmin, que nos permitirá acceder a las bases de datos del CMS de forma gráfica y sencilla.

 Podemos encontrar Joomla en dos formas:

Con el paquete original tenemos la versión más reciente y es la que primero recibe las actualizaciones de seguridad. Por contra, es necesario instalar los idiomas de forma separada. Esto no pasa con la versión de Joomla Spanish que ya incluye los idiomas. Su inconveniente es que tardan un poco más en aplicar los parches de Joomla. Es posible usando la versión de Joomla Spanish aplicar un parche de seguridad de la versión original de Joomla aunque alguna traducción puede aparecer en inglés. Recordar que una aplicación web está disponible desde todo el mundo y cuando sale un fallo de seguridad es muy sencillo encontrar aquellas páginas que lo tienen usando Google para aprovecharlo. El daño causado se puede limitar teniendo backups actualizados del servidor y poniendo lo más pronto posible las actualizaciones de seguridad.

Preparando el entorno

Por comodidad vamos a mover la carpeta /var/www a la carpeta /home del usuario

mkdir ~/Web cd /var su / sudo -i ln -s /home/usuario/Web www

Creamos un archivo .html y lo ponemos en el raíz de ~/Web. Accedemos al navegador con la dirección localhost y debe aparecer si todo está funcionando correctamente.

Instalación de Joomla 2.5.6

Necesitamos descargar los archivos de Joomla 2.5.6 y tener un usuario con permisos de escritura en la base de datos. Esto lo hemos configurado durante la instalación del entorno de desarrollo siendo el usuario root. No tiene relación con los usuarios de la distribución que estamos usando.

  1. Descargamos el archivo de Joomla Spanish.

  2. Descomprimimos el archivo en la carpeta ~/Web

  3. Desde el navegador, ponemos la dirección http://localhost

  4. Si todo es correcto veremos la primera pantalla del instalador de Joomla.

  5. Seguimos los pasos del asistente.

  6. En el último paso crearemos el archivo configuration.php y borraremos la carpeta installation. El archivo se crea normalmente de forma automática mientras que la carpeta se tiene que borrar de forma manual.

  7. Una vez finalizada la instalación ya podemos trabajar con Joomla.

Aumentar la seguridad de la instalación

La instalación es sencilla y no debe de dar problemas. Hay dos pasos importantes que aumentan la seguridad de la versión que instalamos. El primero es el nombre de la base de datos y el segundo los nombres de usuario y de contraseña. Un servidor bien configurado no debe permitir conexiones desde el exterior de la máquina. Si por alguna razón necesitamos permitir conexiones desde una máquina externa (por ejemplo para actualizar de forma remota) corremos un riesgo importante a nivel de seguridad.

Comprobar estos dos nombres de bases de datos joomla_web1 y BZuEBDZ5UtY7ZxHtJfF8rgjQ2. El primer nombre es sencillo de encontrar mientras que el segundo es más complicado. Naturalmente la conexión se realizaría usando https, en el caso de usar http sería muy sencillo sacar el nombre de la base de datos. Lo mismo aparece

Algo similar ocurre con el nombre de usuario y la contraseña. Todas las páginas con Joomla permiten acceder al panel de control en la dirección http://www.miweb.com/administrator. Si cualquiera puede acceder es posible probar el usuario genérico (admin) y varias contraseñas hasta que podamos acceder al panel de control. En un servidor que no limite el número de conexiones es cuestión de tiempo que saquen la contraseña y tengan acceso total a Joomla. La solución es sencilla en este caso:

  1. Usar un alojamiento web serio que detecte muchas conexiones en poco tiempo.

  2. Modificar el nombre del administrador: admin => administrador_de_mi_web

  3. Modificar la contraseña: pasamos de una contraseña sencilla como m1w3b a Bx57M1DOOFpswEnyAJWTqwGsc.

En un servidor web hay que olvidarse de contraseñas sencillas y pasar a usar aplicaciones de contraseñas (como KeepassX) y generar contraseñas largas y con todos los caracteres posibles. Esto nos permitirá mejorar la seguridad y dificultar el acceso de terceros. Igual que en el caso del acceso de la base de datos tenemos que usar una conexión segura para trabajar con el panel de control.

Los permisos de los directorios

Para preparar el servidor en local los permisos no tienen mucha importancia, dependiendo de la configuración del sistema es posible tener permisos totales en las pruebas. Esto en local, en un servidor de producción está prohibido tener permisos 777. Joomla tiene muchas funciones mediante la utilización de extensiones y plugins. Cada extensión es un posible foco de seguridad y debemos trabajar con los permisos mínimos aunque esto afecte al funcionamiento de la web. Por ejemplo, tenemos una galería de imágenes que necesita tener permisos 777 para trabajar. Si respetamos los permisos la extensión funciona correctamente pero ante un fallo de seguridad en la extensión puede darnos problemas de seguridad. Como regla general:

  • Carpetas: permisos 755

  • Archivos: permisos 644

 Con estos permisos habrá extensiones que no funcionarán completamente. Esto parece que no puede darse si tenemos el sistema bien instalado, pero si que aparece el problema. Ejemplo:

  • Servidor web compartido (son más baratos).

  • Apache ejecutándose con un usuario determinado.

  • La aplicación web se ejecuta con unos permisos diferentes (por ejemplo de grupo).

  • Para que funcione la extensión necesita más permisos que los que debería tener teóricamente.

Llegados a este punto tendremos que decidir seguridad o funcionalidad. En el caso de elegir funcionalidad tendremos que ver continuamente si las extensiones que usamos tienen fallos de seguridad y aplicar las actualizaciones de forma instantánea. Si no lo hacemos aprovecharán el fallo de seguridad y entrarán en la web. Algunos archivos como el de configuración de Joomla (configuration.php) tendrán únicamente permisos de lectura. Estas medidas hacen que se trabaje de forma un poco incomoda con Joomla pero conseguiremos asegurar la página web ante ataques de terceros.

0 comentarios

Dejar un comentario

¿Quieres unirte a la conversación?
Siéntete libre de contribuir

Deja un comentario

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