Tutoriales
Seguridad en Joomla 1.6
A 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

- 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

- 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

- 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!
-
¿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
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
- Joomla 2.5.4 - Actualización de seguridad
- Liberado Joomla 1.5.26
- ¿Tendrá Joomla 1.5 soporte hasta Septiembre de 2012?
- Gestión de extensiones en Joomla 2.5
- Plantillas en Joomla 2.5
- Habilitar las URL´s amigables en Joomla 1.6
- Mandar emails a usuarios en Joomla 1.6
- Tutorial CiviCRM: CRM para Joomla 1.6
- Layout override en Joomla 1.6
- Problemas al copiar texto de Microsoft Word en Joomla
- Help Desk en Joomla 1.6 con RsTickets!Pro
- Cambiar los permisos a los ficheros y carpetas de Joomla
- Autenticación en Joomla 1.6
- Añadir código en Joomla 1.6 con Jumi
- Formularios en Joomla 1.6 con ChronoForms
Artículos Recientes
- Migración de Joomla 1.5 a Joomla 2.5
- Joomla 2.5.4 - Actualización de seguridad
- El nuevo iPad es Joomlero
- Liberado Joomla 1.5.26
- Joomla 3.0: así será su interfaz
- ¿Tendrá Joomla 1.5 soporte hasta Septiembre de 2012?
- Gestión de extensiones en Joomla 2.5
- Plantillas en Joomla 2.5
- Plugins en Joomla 2.5
- Modulos en Joomla 2.5
Más Leidos
- Plantillas gratuitas para Joomla
- Contador de visitas para Joomla
- Plantillas tipo revista o periódico
- Insertar pdf en Joomla
- Como conocer la posición de un módulo en una plantilla
- Insertar código HTML en Joomla
- Tutorial de JoomlaPack - Realizar backups de Joomla (Parte 1)
- Galería de Imágenes para Joomla: Phoca Gallery
- Plantillas gratis para Joomla 1.7
- Crear mapa web o sitemap para Joomla con XMAP
Comentarios recientes
En el foro...
Artículos relacionados
- ¿Qué es AyudaJoomla?
- ¿Qué es Joomla?
- Legacy Mode en Joomla 1.5
- Backup de un sitio web Joomla
- Virtuemart - Tienda Electrónica para Joomla
- Formación gratuita para Joomla
- Permite a tus usuarios elegir su plantilla favorita con Template Chooser
- Como conocer la posición de un módulo en una plantilla
- Joomla 1.6: los bloggers opinan
- Premios Joomleros 2009
- Esquema de la base de datos de Joomla 1.5
- Pasar parámetros a un wrapper en Joomla
- Insertar pdf en Joomla
- Torneos deportivos con JoomLeague
- Zaragoza News Template 1.0
- Eventos Joomla para Abril 2009
- Instalar y desinstalar extensiones, plantillas e idiomas en Joomla
- Joomla presenta Community Showcase
- Contador de visitas para Joomla
- eXtplorer. Un completo explorador de archivos para Joomla
- Convertir templates de Joomla 1.0 a Joomla 1.5
- Joomla loves Twitter!
- AJ!Toolbar. Barra de herramientas para tu navegador web
- Crea tu propio template para Joomla!
- Joomla Esenciales desde Joomla Argentina
- Template con estilo: Epic
- Eventos Joomla para Mayo 2009
- Eventos Joomla para Junio 2009
- Joomla llega a los 10 millones de descargas
- Preview del gestor de menús de Joomla 1.6
- Vulnerabilidad crítica detectada en Community Builder 1.0 y 1.1
- Eventos Joomla para Julio 2009
- Nube de Tags para Joomla
- Favicon animado para tu Joomla
- Y la mejor extensión para Joomla es....
- Joomla 1.6 Beta 1 cuenta atrás...
- Bluestork - Nueva plantilla de administración para Joomla 1.6
- 21 Set de iconos útiles para diseñadores y desarrolladores Joomla
- Queda poco para el lanzamiento de Joomla Esenciales 2
- Nomina a Joomla para la cuarta edición de Annual Open Source CMS Awards
- AdminPraise Lite - La plantilla de administración más rápida
- Ahorra espacio con Tabs & Slides para Joomla
- Todo que tienes que saber sobre Joomla
- AyudaJoomla se apunta a la tarifa plana de Redcoruna
- Plugin para Wibiya toolbar
- Eventos Joomla para Octubre 2009
- Ayuda Joomla cumple su primer año!
- Joomla 1.5 Template Design
- Menús desplegables en Joomla con JE Smooth Navigation Menu
- Plantilla gratis para VirtueMart - VWorks Simple Box
- Eventos Joomla para Noviembre y Diciembre de 2009
- cbNews Module - Un slideshow gratuito para artículos en la portada.
- Eventos Joomla para Febrero de 2010
- Eventos Joomla para Enero de 2010
- ¿Cómo cambiar la hora en Joomla?
- ¿Cómo hacer un análisis SEO de vuestro sitio web Joomla?
- Cambiar el editor de contenidos de Joomla
- Joomla!Day Mallorca 2010
- Adelanto de Joomla 1.5 Multimedia
- Ampliado el plazo de propuestas para Joomla!Day Mallorca 2010
- Gestor de proyectos para Joomla: ProjectFork
- Adelanto de Joomla 1.5 Beginner's Guide
- Hotel Guide - Directorio temático para hoteles en Joomla
- Incluir audio en Joomla con JosDewplayer
- Inserta videos de youtube en los artículos de Joomla con Youtube Embedder
- Mejora la usabilidad del buscador de Joomla con RokAjaxSearch
- Ya puedes ver Google Analytics desde la administración de Joomla con AG Google Analytics
- Plugin para Image Space Media
- Acelera tu Joomla (Parte 2) - Caché en los módulos de Joomla
- Acelera tu Joomla (Parte 1) - Uso de la función de caché
- Galería de Imágenes para Joomla: Phoca Gallery
- Esquema de la base de datos de Joomla 1.6
- Publicidad
- Cómo cambiar la cantidad de paginas mostradas en la paginación de Joomla
- Próximas reviews de libros en AyudaJoomla
- Quinta edición de Annual Open Source CMS Awards
- Insertar iconos de redes sociales y rss en modulos personalizados de Joomla
- Instalar Joomla en Linux (Ubuntu) con LAMP
- Hackear Joomla! Admin Password Reset en versiones anteriores a la 1.5.6
- Joomla 1.5.21 [senu takaa ama wepulai] - Actualización de seguridad
- Adelanto ChronoForms 1.3 for Joomla! Site Cookbook
- Molajo: una distribución basada en Joomla 1.6.
- Como usar el AcyMailing para enviar boletines de notícias
- Ayuda Joomla asistirá al Joomla Day Valencia 2010
- Representación esquemática de una plantilla. Paso previo antes de diseñar una web
- Cómo usar el JCal Pro para gestionar eventos
- Realizar copia de seguridad de Joomla con Akeeba Backup
- Ganarse la vida con Joomla
- Liberado Joomla 1.5.22 [senu takaa ama woi] - Actualización de seguridad
- Formulario de contacto con aiContactSafe
- Crear un blog con Joomla
- ChronoForms 1.3 for Joomla! Site Cookbook
- Adjuntar archivos en un artículo mediante el componente Attachments
- Elección del gestor de descargas. Montar una intranet con Joomla II
- Google adsense en Joomla
- Open Source Training - Análisis de casos de éxito Joomla
- Mejorar la seguridad con Admin Tools
- Encuestas en Joomla con Apoll
- Migrar Joomla de un servidor local a un servidor de Internet
- Presentaciones de Slideshare en Joomla
- Chat en Joomla con JPFChat
- AdminPraise Lite - Plantilla de administración para Joomla 1.6
- Paquetes de idioma español para Joomla 1.6
- Álbumes de música con Music Manager
- Template de Joomla 1.6 ButterflyMeadow
- ¿Lo sabes todo sobre Joomla?
- RSFirewall - Aumenta la seguridad de Joomla
- Convertir Joomla en una página de documentación con Phoca Documentation
- Cómo incrustar vídeos de YouTube en un artículo (sin o con plugin)
- Joomla Upgrade: ¿Qué será de mi web?
- Anuncios clasificados con Ads Manager
- Review del libro Joomla 1.5 Top Extensions Cookbook
- Sorteamos un libro sobre Joomla de la editorial Packt
- Desarrollo de componentes para Joomla 1.6. Backend Básico
- Descargas en Joomla 1.6 con Phoca Download
- Joomla 1.6.1 ya está disponible. Actualización de seguridad
- Tutorial de Sobi2 - Creación de un directorio de contenidos
- Joomla 1.6: las comunidades opinan
- ¿Cómo puedo saber que un sitio web esta hecho con Joomla?
- Joomla 1.5.23 ya está aquí. Actualización de seguridad
- Joomla 1.6: las empresas opinan
- Joomla 1.6.2. Actualización de Seguridad
- Programación de extensiones en Joomla avanzada
- Formularios en Joomla 1.6 con ChronoForms
- Joomla 1.6 First Look [Review]
- Editando los archivos de Joomla con notepad++
- Sigue el J and Beyond 2011 por twitter
- Autenticación en Joomla 1.6
- Problemas al copiar texto de Microsoft Word en Joomla
- Mandar emails a usuarios en Joomla 1.6
- Campos adicionales en el registro de usuarios de Joomla 1.6
- JFile: Leyendo ficheros con el framework de Joomla
- Integrar Joomla y Moodle empleando el componente Joomdle
- Tutorial de K2 en Joomla 1.6
- Joomla!Night Chile 2011. ¡Síguela online!
- Windows Live Writer en Joomla 1.6 con MovableyType XMLRPC
- Partilhator - Social Bookmarking
- Tutorial de JV Framework
- Que hacer después de que tu sitio Joomla haya sido Hackeado. (recuperar el control y medidas a tomar
- Ofertas de empleo en Joomla 1.6 con Job Board
- EducaJoomla: Crea tu tienda online con Joomla! y Virtuemart
- BBJSocial - Acceso a redes sociales Joomla desde Blackberry
- Joomla! Virtuemart 1.1 Theme and Template Design
- Plantillas gratis para Joomla 1.7
- JoomlaScan - Analizando vulnerabilidades de seguridad en sitios Joomla
- Obtener los parámetros de modulos, plugins, componentes y plantillas en Joomla 1.7
- Instalar Joomla con Web Platform Installer
- Busca en el JED desde tu Firefox
- Instalar y Configurar Zoo en Joomla 1.7
- Creación de tiendas online multilenguaje usando Virtuemart y JoomFish
- Pestañas, Slides y páginas utilizando la paginación de Joomla 1.7
- ¡6 años junto a Joomla!
- Do the Workshop. Cursos Joomla en Mallorca
- Manual de Virtuemart creado por Web Empresa
- ¡Ayuda Joomla cumple 3 años!
- Roller Text - Una forma diferente de mostrar tus contenidos
- Joomla 1.7.1 ya está disponible. Actualización de seguridad
- Review del libro Joomla Explained
- Insertar código php, html, css y javascript en Joomla 1.7 con Sourcerer
- 5 módulos Slideshows para Joomla 1.7
- El Joomla!Day Spain 2011 será en Zaragoza
- ModuList: una forma diferente de presentar tus artículos en una tabla!
- Tienda online en Joomla 1.7 con JoomShopping. Empieza a vender (2/3)
- ¿Cómo crear un Joomla User Group?
- Cupón de descuento para el Joomla!Day Zaragoza 2011
- Cupón de descuento para el Joomla!Day Zaragoza 2011
- ¿Cómo funcionan los menús en Joomla 1.7?
- Liberado Joomla 1.5.24 y 1.7.2
- El Joomla!Day Spain 2011 será en Zaragoza
- Tienda online en Joomla 1.7 con JoomShopping. Módulos, plugins y addons (3/3)
- Trabajando con Joomla!
- Tienda online en Joomla 1.7 con JoomShopping. Configuración del componente (1/3)
- Histórico Social del Joomla Day Zaragoza 2011
- Liberado Joomla 1.7.3 y Joomla 1.5.25
- Insertar galerías de imágenes en tus artículos Joomla
- Comparativa de seguridad entre Wordpress, Drupal y Joomla
- ACL Manager : Simplificando la gestión de permisos en Joomla 1.7
- Migrar páginas HTML a Joomla 1.7 con HTMl2Articles
- Pasarela de pago Pasat 4b para pagar con tarjetas de crédito en Virtuemart
- Liberado Joomla 1.7.4
- Manual de joomla 2.5 - Guía de Joomla 2.5 para principiantes
- Paso 2: Instalación Joomla 2.5
- Paso 3: Traducción Joomla 2.5 a español
- ¿Cuántas versiones de Joomla existen?
- Modulos en Joomla 2.5
- Instalar Joomla 2.5 en Windows: Instalación de WAMP
- Instalar Joomla 2.5 en Linux: Instalación de LAMP
- Instalar Joomla 2.5 en Mac OS: Instalación de MAMP
- Configurando Joomla 2.5
- Familiarizándote con Joomla 2.5
- Términos de Joomla 2.5
- El Backend de Joomla 2.5
- Liberado Joomla 2.5.2
- Joomla en números - Infografía
- Plugins en Joomla 2.5
- Administrando contenidos en Joomla 2.5
- Joomla! and Beyond 2012
- Gestión de extensiones en Joomla 2.5
- ¿Tendrá Joomla 1.5 soporte hasta Septiembre de 2012?
- Liberado Joomla 1.5.26
- Joomla 2.5.4 - Actualización de seguridad











