> Manuales > Manual de Joomla!

Este artículo complementa al hangout Consejos y herramientas para conseguir recuperar un sitio Joomla que ha sido hackeado y no morir en el intento.

Anteriormente debatimos sobre los distintos aspectos a tener en cuenta a la hora de mantener nuestros sitios Joomla seguros. Si bien es cierto que siguiendo las recomendaciones de dicho hangout y del artículo que lo acompañó, nuestros sitios serán bastante seguros, la verdad es que ningún sitio web (de hecho, ningún sistema informático) puede ser 100% seguro (o sea, invulnerable), y a la vez, operativo. Por tanto, siempre existirá el riesgo real de que en algún momento alguno de los múltiples ataques que todo sitio web sufre a diario tenga éxito, y nuestro sitio acabe hackeado de alguna manera (defacement, hijacking, spoofing, inyección de links ocultos...). ¿Qué hacer en estos casos?

Paso 0: ¡¡¡Backup, backup, backup!!!

Antes que nada, y como “punto cero” de nuestra lista, recordar el que, para mí, éste es el más importante de todos los consejos de seguridad, o al menos el que puede resolverte más problemas: mantén una política de copias de seguridad seria. Almacena periódicamente copias de seguridad completas del sitio; dependiendo del volumen de contenidos que el sitio genere, esta periodicidad puede ser mayor o menor, aunque de cara a realizar auditorías de seguridad lo ideal sería como mínimo una cada quince días. Y recuerda lo que siempre dice Nicholas, el creador de Akeeba Backup: “Una copia de seguridad que no ha sido probada NO es una copia de seguridad”. Asegúrate de que tus copias se están haciendo bien y de que puedes restaurarlas sin problema. No serías el primero en decir “tranquilos, tengo copia de seguridad, la restauro en cinco minutos” solo para descubrir que el archivo está corrompido o que no tienes ni idea de cómo restaurarla.

Paso 1: Mantén la calma, busca y pide ayuda

Como asiduo de los foros de soporte, esto es tanto una recomendación como una súplica: por favor, nunca, nunca, jamás vayas a un foro y publiques un mensaje en mayúscula titulado “AYUDA”, “URGENTE - SITIO HACKEADO” o “POR FAVOR, SITIO HACKEADO”. Haciendo esto, el riesgo de que no te contesten o de que lo hagan de mala gana es alto.

Antes de pedir ayuda, BUSCA a ver si alguien se encontró con el mismo problema, bien en Google, bien en los foros oficiales de Joomla (los de habla inglesa tienen miles de mensajes útiles) o en cualquier otro, como ComunidadJoomla. La mayoría de los ataques que sufren sitios Joomla son llevados a cabo por script kiddies que usan programas automáticos para ello, de modo que es posible que hayan entrado en otros sitios y puedas obtener información sobre cómo resolverlo.

Después de buscar y leer varios mensajes es posible que sepas un poco mejor qué es lo que necesitas, y será el momento de escribir uno o varios mensajes (en distintos foros) pidiendo ayuda. Procura ser lo más específico posible, y acompaña el mensaje con tantos datos como se te ocurran: versión de Joomla, de PHP, hosting que usas, qué extensiones tenías, cuándo descubriste el problema, si tienes copias de seguridad... cualquier cosa que pueda ser relevante para ayudarte a resolver el problema.

Paso 2: Contacta con tu hosting

Muchas compañías pueden bloquear tu cuenta si descubren que tu sitio está infectado. Informándoles tú antes de que ellos descubran que tu sitio ha sido atacado con éxito, tomas la iniciativa, y además puedes conseguir que te ayuden escaneando tus archivos y buscando posibles fuentes de infección. En situaciones como esta es cuando pondrás a prueba de verdad la calidad del soporte de tu hosting.

Por otro lado, ten en cuenta que en alojamientos compartidos o máquinas mal configuradas, puede ser que la infección provenga de la cuenta de otro usuario cuyo sitio era vulnerable. Si descubres que es así o tienes grandes sospechas, háblalo con el soporte. Si no te dan una respuesta satisfactoria deberías pensarte seriamente cambiar de proveedor. También puede ocurrir que hayan entrado por un agujero de seguridad que, por lo que sea, se les había pasado, y ayudar a subsanarlo. Mientras no te demuestren lo contrario, tu hosting es tu amigo.

Paso 3: Muerto el perro, se acabó la rabia

El concepto es bien claro: dado que no sé en qué estado se encuentra mi sitio tras estar en manos de los atacantes, en lugar de ponerme a buscar qué ha sido modificado lo que haré será reconstruirlo todo desde cero y con archivos 100% fiables.

Así, la opción infalible para “desinfectar” por completo tu sitio puedes encontrarla en la documentación oficial de Joomla:

docs.joomla.org/Security_Checklist/You_have_been_hacked_or_defaced#A_Safe_route_for_disaster_relief

Dado que el documento está en inglés, aquí va una traducción de los 5 pasos indicados en la “Ruta segura para la recuperación del desastre”:

  1. Guarda el archivo "configuration.php", así como las imágenes y archivos modificados o personalizados (por ejemplo los overrides) uno por uno
  2. Elimina por completo el contenido del directorio en el que estaba instalado Joomla
  3. Sube una copia completa del paquete original de la última versión de Joomla 1.5.x o Joomla 2.5.x (excepto el directorio /installation)
  4. Vuelve a subir el archivo "configuration.php" y las imágenes que guardaste en el paso 1
  5. Vuelve a subir o reinstala las últimas versiones de tus extensiones y plantillas (mucho mejor si usas copias limpias en lugar de copias de seguridad antiguas del sitio, ya que de este modo te aseguras de que el hacker/defacer no dejó ningún archivo de shell script en tu sitio)
Básicamente, lo que se propone ahí es borrar todos los archivos (y todos es todos), reinstalar una copia limpia de Joomla y de las extensiones “a mano” (o sea, subiendo los archivos por FTP, no ejecutando el instalador, aunque en Joomla 2.5 podría hacerse con el instalador). Aparte de eso, en ese mismo enlace un poco antes se recomienda cambiar todas las claves de los usuarios que pueden tener acceso a zonas sensibles (admins y super admins, usuario FTP, usuario de la BD). Puede parecer engorroso (y lo es), pero tiene varias ventajas:
  1. Borrando todos los archivos te aseguras de que cualquier código malicioso que haya sido inyectado, ha sido eliminado con un 100% de seguridad.
  2. Aunque puede suponer un buen rato reinstalar todo, siempre será menos tiempo que tener que hacer un chequeo completo del sitio archivo por archivo, que puede llevar muchas más horas si quiere hacerse bien.
  3. Aunque es trabajoso, es fácil de hacer, puede hacerlo cualquiera con unas nociones mínimas y por tanto, puede salirte gratis (salvo por el tiempo que le dediques).

El documento enlazado un poco más arriba contiene mucha más información imprescindible, y deberías tratar de leerlo por completo, pues abarca muchos más aspectos que únicamente recuperar tu sitio (por ejemplo, recomienda escanear tu propio ordenador en busca de virus, pues es posible que el atacante no haya entrado en el sitio por agujeros del mismo, sino accediendo a tus claves a través de tu sistema de escritorio.

Paso 4: Auditoría de seguridad

Aunque a la hora de devolver el sitio a su estado original podemos optar por hacer lo indicado en el paso anterior y no “investigar” acerca de cuál fue el agujero de seguridad que aprovechó el atacante para hackear nuestro sitio, una vez que el sitio está de nuevo en línea es importante dedicar el tiempo que haga falta a ello. El motivo es simple: si entraron una vez por ahí y no solucionamos el problema, antes o después volverán a entrar. Es aquí donde entran en juego las herramientas de auditoría de seguridad.

Durante el hangout, Ciro Artigot nos mostró un script desarrollado por él mismo para escanear nuestro sitio en profundidad. Al final de este artículo tenéis un enlace para descargaros su presentación y los archivos; y por supuesto, lo ideal es que veais de nuevo el hangout para aprender a usarlo. Debéis tener en cuenta que este script NO es una extensión de Joomla (no se instala en Joomla a través de su gestor de extensiones). Es un script que sirve para auditar cualquier servidor que permita ejecutar scripts PHP. Como bien nos indicaba el amigo Roberto Segura en Twitter durante el hangout, la gran ventaja que tiene esto es que podremos usarlo incluso si Joomla ha sido totalmente inutilizado, y no podemos ni acceder al "backend".

Además del script de Ciro, existen otras herramientas disponibles para auditar nuestros sitios. Aquí os dejo algunas de ellas:

Unos consejos para terminar

  1. Para hacer auditoría (o como dice Brian Teeman, “análisis forense”) lo mejor es preservar los datos originales, de modo que es importante tomar una copia de seguridad del sitio infectado para poder “restaurarlo” en un servidor local para su análisis.
  2. Una medida “preventiva” bastante útil es tomar un backup del sitio justo en el momento de ponerlo en producción y guardarlo a buen recaudo. Este puede ser utilizado más adelante para ser comparado con nuevos backups (por ejemplo, con "site diff") e identificar archivos modificados, añadidos, etc. También nos proporciona un punto de restauración completo al que echar mano si ocurre el desastre; usando Akeeba Kickstart podremos restaurarlo en cuestión de minutos, y después unos simples clics para actualizar nuestras extensiones y el core y ya tenemos nuestro sitio listo :).

Isidro Baquero

Freelance, fundamentalmente desarrollando sitios web basados en Joomla

Manual