Fecha de publicación: Vie, 22/02/2019 - 17:13

Buenas Prácticas de Seguridad para Joomla!

Introducción

Joomla! es un sistema de gestión de contenido (CMS), que le permite crear sitios web y aplicaciones, en los últimos años se ha popularizado bastante para la creación de sitios web tanto personales como profesionales.

Su popularidad ha logrado que resulte muy atractivo para los “black hackers”, con el fin de explotar vulnerabilidades con objetivos dudosos, incluso existen programas malintencionados automatizados “BOTS”, cuya única misión es rastrear el internet buscando “sitios web joomla! con vulnerabilidades”.

Existen diferentes tipos de ataque para sitios web que implementan Joomla! Como:

  • Ataques de Denegación de Servicio (DOS).
  • Ataques de Denegación de Servicio Distribuidos (DDOS).
  • Ataques por fuerza bruta.
  • Ataques que aprovechan vulnerabilidades del gestor de contenidos web de joomla!.

Para mitigar el riesgo de que estos ataques tengan éxito, recomendamos las siguientes prácticas de seguridad para Joomla!.

Verifica que esten instalados todos los parches de seguridad para Joomla!

Compruebe de vez en cuando si hay nuevos parches de seguridad disponibles para solucionar vulnerabilidades de seguridad y asegúrese de instalarlos. En el mismo orden de cosas, es importante que actualice las extensiones utilizadas (Si es que tienen actualizaciones de seguridad).

Para versiones que llegaron al final de su ciclo de vida los parches de seguridad se pueden encontrar en el siguiente enlace:

https://docs.joomla.org/Security_hotfixes_for_Joomla_EOL_versions/es

Sin embargo se recomienda la actualización de joomla! a una versión con soporte en la brevedad posible.

También se recomienda que se considere actualizar las tecnologías complementarias para el uso de joomla! como es php, mysql y el sistema operativo, tomando en cuenta que estas actualizaciones sean compatibles con la versión de joomla! que utiliza, aplicando estos cambios primero en un entorno de pruebas.

Utiliza un nombre de usuario y contraseña seguros

No utilice el nombre de usuario admin predeterminado: cámbielo por uno más seguro y escoja también una contraseña robusta. Por ejemplo, que contenga mayúsculas, minúsculas, cifras y caracteres especiales.

Protege el archivo de configuración de tu Joomla

Proteja el archivo configuration.php, que se encuentra en el directorio raíz de tu hosting, para impedir que se puede editar (algunas versiones de Joomla ya lo protegen por defecto).

Puede hacerlo fácilmente, marcando la opción “Make unwriteable after saving” en la configuración de Joomla!. También se recomienda que lo abra y añada en el archivo .htaccess:

<FilesMatch “configuration.php”>
 Order allow,deny
 Deny from all
 </FilesMatch>
/p>

Nota: si utilizas la versión de Apache 2.4, deberá añadir las siguientes líneas de código:

<FilesMatch “configuration.php”>
 Require all denied
</FilesMatch>

Protege el acceso a /administrator

Dado que durante la instalación estándar de Joomla! no podemos modificar ni el directorio de administración ni la Url de acceso al back-end, cualquiera puede llegar a la pantalla de login del panel de control añadiendo la palabra “administrator” a la Url de la página. Para evitar esto e impedir que personas ajenas a su página web intenten acceder al back-end, se puede emplear ciertas extensiones o tomar alguna de las medidas extra de protección como es el adicionar un login con el archivo .htaccess y .htpasswd.

Debe recordar que el directorio miotroadm es solo un ejemplo, usted debe seleccionar un directorio que únicamente conozcan los usuarios administradores del sitio web, igualmente cambiar la cookie por una mas larga y difícil de adivinar.

$ sudo mkdir miotroadm

$ sudo nano index.php

<?php
        $admin_cookie_code="1254789654258"
        setcookie("JoomlaAdminSession",$admin_cookie_code,0,"/");
        header("Location: ../administrator/index.php");
?>

Introducir en el principio del index.php del directorio “administrator” que solicite la cookie, caso contrario devolver al index.php

$ sudo nano administrator/index.php

if($_COOKIE['JoomlaAdminSession']!="1254789654258")
{
    setcookie('JoomlaAdminSession', null, -1, '/');
    header("Location: ../../index.php");
}

En el index.php si existe una cookie creada, eliminarla.

$ sudo nano index.php

if ($_COOKIE['JoomlaAdminSession']!="")
{
    setcookie('JoomlaAdminSession', null, -1, '/');
}

Borre las plantillas y extensiones que no utiliza (separar y averiguar cuales vienen por defecto)

Mantenga su instalación limpia: aunque pruebe varias plantillas o extensiones, es recomendable que las elimine cuando decidida cuáles no utilizará. Lo mismo ocurre con las plantillas que vienen instaladas en Joomla por defecto.

Cambie los permisos de los archivos

Es mejor que restrinja los permisos de los archivos más importantes para impedir que se puedan editar o modificar. Aquí hay una sugerencia de ficheros a los cuales deberia presentar especial atencion:

   /index.php
   /configuration.php
   /templates/*tuplantilla*/index.php
   /templates/*tuplantilla*/

Considerando que para establecer los permisos debe realizarlo de acuerdo a su funcionalidad, considerando siempre otorgar el mínimo privilegio necesario para realizar sus funciones.

Protege el fichero .htaccess añadiendo el siguiente código dentro del fichero .htaccess:

<Files .htaccess>
 order allow, deny
 deny from all
 </Files>

Dentro del directorio images, evite que se ejecuten scripts creando un archivo .htaccess.

<FilesMatch “\.(phtml|php|php3|php4|php5|php6|phps|cgi|exe|pl|py|asp|aspx|shtml|shtm|fcgi|fpl|jsp|htm|html|wml|cgi|cgi|sh)$”>
 Order Allow,Deny
 Deny from all
</FilesMatch>


Deshabilite el registro de usuarios

A menos que la web sea una comunidad en la que el registro de usuarios sea una opción necesaria, por motivos de seguridad es mejor deshabilitarlo para que esto no sea posible. Así, los bots que rastrean la red en busca de agujeros de seguridad no serán capaces de crear usuarios en tu portal.

Cambie el prefijo de la base de datos (jos_)

Si modificas el prefijo de la base de datos por uno aleatorio o personalizado, mitigarás el riesgo que los atacantes cibernéticos puedan tratar de adivinar el nombre de las tablas. El cambio requerirá que el sitio esté fuera de línea durante un tiempo (unos pocos minutos como mucho, normalmente si se realiza de manera correcta).

Elimine las referencias a Joomla! del código fuente

Con esto conseguirá que sea más difícil saber la versión de Joomla! que está utilizando, lo que resultará en un mayor nivel de seguridad para su proyecto.

Referencias

https://es.godaddy.com/blog/consejos-y-extensiones-de-seguridad-para-joomla/
https://www.cert.gov.py/index.php/noticias/vulnerabilidades-criticas-en-wordpress-y-joomla