Seguridad en Joomla 1.6

seguridadA la hora de estudiar la seguridad en Joomla debemos tener en cuenta diferentes tipos de factores. En este artículo vamos a hacer un repaso para enseñaros algunos consejos de seguridad para Joomla, desde el punto de vista de la administración del servidor, el desarrollo de extensiones propias o el uso de extensiones de terceros, sin olvidarnos de ver algunas extensiones que ayudarán a mejorar y aumentar la seguridad de vuestros sitios Joomla.

1. Índice

  • 1. Índice
  • 2. Introducción
    • 2.1. Conceptos base
    • 2.2. Tareas principales de seguridad
  • 3. Infraestructuras web
    • 3.1. Servidor
    • 3.2. Servidor web - APACHE
    • 3.3. Servidor de aplicaciones - PHP
    • 3.4. Servidor de base de datos - MySQL
    • 3.5. Aplicación Web - Joomla!
  • 4. Ataques más comunes
    • 4.1. Autenticación
    • 4.2.Autorización
    • 4.3.Ataques en la parte de cliente
    • 4.4. Revelación de información
  • 5. Seguridad básica en Joomla
    • 5.1. Conceptos básicos
    • 5.2. Seguridad en la programación
  • 6. Comprobación de la seguridad
  • 7. Comprobación de la seguridad

2. Introducción

2.1. Conceptos base

- Vulnerabilidad: Debilidad o defecto de un sistema que puede ser aprovechada para atacar-lo.

- Exploit: Es un fragmento de datos o una secuencia de comandos con la finalidad de automatizar el aprovechamiento de un error, fallo o vulnerabilidad.

- Fuentes de información: Secunia, Exploit-Db, JoomlaExploit, etc.

2.2. Tareas principales de seguridad

- Escoger buenas contraseñas (que no se puedan encontrar a diccionarios de contraseñas)

  • Mínimo de 8 caracteres
  • Tendría que contener un mínimo de símbolos de los grupos [0-9], [a-z], [A-Z].

- Gestionar las contraseñas con algún software, ya que tendrían que ser diferentes para cada proyecto (ftp, administrador, ssh, etc.)

- No compartir usuarios entre varias personas.

3. Infraestructuras web

3.1. Servidor

Servidor

- Una pregunta muy común a la hora de escoger un servicio de hosting es que cojo un servidor compartido o dedicado.

Compartido
Dedicado
Ventajas
- Económico.
- No es necesario el mantenimiento.
- Podemos hacerlo tan seguro como queramos.
Desventajas
- Si la administración del servidor no es buena nos pone en riesgo.
- Requiere conocimientos avanzados.
- Requiere mucho tiempo y dedicación.

- Administrar el servidor de manera segura.

  • Utilizar SSH, no Telnet.
  • Utilizar SCP, SFTP o FTPS, no FTP.
  • Utilizar HTTPS, no HTTP para tratar datos de confidencialidad.

- Tareas básicas.

  • Solo abrir los puertos imprescindibles (80 y 443).
  • Actualizar el sistema operativo de manera constante (Windows Update, apt-get update, up2date, yum, etc.) y el resto de software (PHP, Joomla, extensiones, etc.).
  • Hacer copias de seguridad diarias (Totales, incrementales, diferenciales, etc.)
3.2. Servidor web - APACHE

apache server

- SSL.

- Permite transferir datos entre cliente y servidor de forma segura.

- Permite al usuario verificar la identidad del servidor.

- Es recomendable comprar certificado digital de una CA (Autoridad Certificadora) de confianza.

- También nos permite autentificar a los usuarios con certificados.

- Seguridad del APACHE

- Quitar los banners.

- Reducir el número de módulos utilizando el mínimo.

- Utilizar un firewall de aplicación como ModSecurity.

- Monitorizar los logs (ie. Splunk) //Requiere mucho tiempo

3.3. Servidor de aplicaciones - PHP

php

- Reducir los módulos al mínimo.

- Directivas a tener en cuenta (PHP5):

  • register_globals = Off
  • display_errors = Off
  • log_errors = On
  • allow_url_fopen = Off
  • allow_url_include = Off
  • expose_php = Off
3.4. Servidor de base de datos - MySQL

- Medidas básicas

  • Asignar una contraseña al usuario root.
  • Crear un usuario con los permisos necesarios para Joomla! (SELECT, UPDATE, DELETE, INSERT).
  • Borrar las base de datos de pruebas.
3.5. Aplicación Web - Joomla!

joomla -

¿Es Joomla es el más seguro o más seguro que los otros CMS?

  • Según veremos más adelante es algo inseguro.
  • Es debido, muchas veces, a la gran variedad de extensiones que no son seguras.

4. Ataques más comunes

4.1. Autenticación

- Fuerza bruta: Es un proceso automatizado de prueba y error utilizado para adivinar un nombre de usuario, contraseña, numero de tarjeta de crédito, etc.

- Autenticación insuficiente: La autenticación insuficiente ocurre cuando un lugar web permite a un atacante acceder a contenido sensible o funcionalidades sin haberse autenticado correctamente. (ej. poder acceder a una UDL escondida sin una autentificación correcta).

- Débil validación en recuperación de contraseñas: Se produce cuando un lugar web permite a un atacante obtener, modificar o recuperar, de forma ilegal, la contraseña de otro usuario.

4.2.Autorización

- Predicción de credenciales/sesión: Es un método de secuestro o suplantación de un usuario del lugar web. (ej. poner contraseñas como el nombre o apellidos, fecha de nacimiento, ciudad o población de residencia, etc.)

- Autorización insuficiente:  Se produce cuando un lugar web permite acceso a contenido sensible o funcionalidades que tendrían que requerir de un aumento de restricciones y de un control de acceso.

- Expiración de sesion insuficiente: Se produce cuando un lugar web permite a un atacante reutilizar credenciales de sesión o identificaciones de sesión antiguas para llevar a cabo la autorización.

4.3.Ataques en la parte de cliente

- Suplantación de contenido: Es una técnica de ataque utilizada para engañar al usuario haciendo creer que cierto contenido que aparece en el lugar web es legítimo, cuando en realidad no lo es.

- Coss-site scriptiong (XSS):

  • Es una técnica de ataque que fuerza a un lugar web a repetir código ejecutable facilitado por el atacante y que se cargará en el navegador del usuario.
  • No se limita solo a los lugares web ya que pueden haber aplicaciones locales vulnerables a XSS, o incluso el navegador web en si.
  • Hay dos tipos:
    • Directa (persistente): Consiste en invadir código HTML peligroso en lugares que así lo permitan; incluyendo así etiquetas como son o .
    • Indirecta (reflejada): Modifica valores que la aplicación web utiliza para pasar variables entre dos páginas, sin hacer servir sesión y sucede cuando hay un mensaje o una ruta en la URL del navegador, en una Cookie o en cualquier otro cabecera HTTP.

- Desbordamiento del buffer: Es un ataque que altera el flujo de una aplicación sobreescribiendo parte de la memoria.

- Ataque de formatos de cadena: Alteran el flujo de una aplicación utilizando las capacidades proporcionadas por las librerías de formato de cadenas para acceder a otro espacio de memoria.

- Inyección LDAP: Es una técnica de ataque para explotar lugares web que construyen sentencias LDAP a partir de datos de entrada subministrados por el usuario.

- Inyección de código SQL: Es una técnica usada para explotar lugares web que construyen sentencias SQL a partir de entradas facilitadas por el usuario.

- Inyeccion de código SSI: Es una técnica de explotación a la parte servidora que permite a un atacante enviar código a una aplicación web, que posteriormente será ejecutado localmente por el servidor web.

- Inyección XPath: Es una técnica de ataque utilizada para explotar lugares web que construyan consultas XPath con datos de entrada facilitadas por el usuario.

4.4. Revelación de información

- Fuga de información: Se produce cuando un lugar web revela información sensible, como comentarios de los desarrolladores o mensajes de error, que puede ayudar a un atacante para explotar el sistema.

5. Seguridad básica en Joomla

5.1. Conceptos básicos

- Borrar los ficheros de instalación y ejemplos.

- Register_Globals = Off

- Ninguna extensión que necesite la característica Register_Globals = On querrá decir que tenemos una puerta de entrada para los hackers.

- Es muy importante aunque ha veces no se tiene en cuenta.

- Eliminar el archivo configuration.php-dist.

- Es importante eliminar este archivo ya que es el que utiliza Google para anunciar que su sitio web está desarrollada en Joomla.

- Mover el fichero configuration.php fuera del espacio público.

- No necesita estar en el espacio público para ejecutarse, por lo tanto, aconseguiremos que nadie pueda obtener los datos del servidor o base de datos.

- Cambiar el nombre de la carpeta "administrator"

- Cualquier referencia a este directorio supone una menor seguridad.

- Este paso requiere muchas modificaciones al núcleo del sistema por lo que existen algunos plugins para dificultar la entrada a la administración que ya comentaremos más adelante en este tutorial.

- Eliminar el usuario admin por defecto.

- Cuando instalamos Joomla! 1.5.x nos crea un usuario admin por defecto que tendríamos que eliminar y crear otro de nuevo con el nombre de usuario diferente.

- En Joomla! 1.6 nos deja escoger un nombre diferente en el proceso de instalación.

- Dar permisos 644 a todos los ficheros.

- Dar permisos 755 a todos los directorios.

- Cambiar las iniciales de las tablas "jos" por otro distinto.

- Esto será posible cambiarlo en el proceso de instalación.

- Proteger el directorio "administrator" con una contraseña.

- Esto lo podemos hacer creando un archivo .htpasswd.

- Utilizar una conexión segura SSL con el servidor.

- Asegurar que el .htaccess tenga las lineas siguientes:

 
order allow,deny
Deny from all
 
5.2. Seguridad en la programación

- No crear ficheros individuales o independientes de la estructura de Joomla.

- Añadir la restricción de acceso directo a los ficheros.

// Check to ensure this file is included in Joomla!
defined('_JEXEC') or die('Restricted access');

- Añadir "hash" para la descarga o visualizar ficheros adjuntos al sitio web.

- Asegurarse que los botones utilicen tokens.

6. Aumentar la seguridad

- Akeeba Backup

- RSFirewall

- Backend Secure

7. Comprobación de la seguridad

- Existen diferentes herramientas para comprobar la seguridad, por ejemplo:

- Joomscan: Script en PERL.

- GuardXT: Componente de Joomla. *SOLO JOOMLA! ?1.5*

- RSFirewall: Componente de Joomla.

 

Por WebActualizable (www.webactualizable.com), empresa especializada en el desarrollo de proyectos sobre Joomla.

 

En AyudaJoomla | Seguridad con RSFirewall, Mejorar seguridad con Admin Tools , Tutorial Akeebabackup

Escribir un comentario

Por favor procura que tus comentarios estén relacionados con la entrada, comenta con tu nombre y no pongas enlaces en tu comentario. Intenta también respetar a los demás lectores, los comentarios off topic, promocionales, ofensivos o ilegales serán editados y borrados.


Código de seguridad
Refescar