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”:
- Guarda el archivo "configuration.php", así como las imágenes y archivos modificados o personalizados (por ejemplo los overrides) uno por uno
- Elimina por completo el contenido del directorio en el que estaba instalado Joomla
- 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)
- Vuelve a subir el archivo "configuration.php" y las imágenes que guardaste en el paso 1
- 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)
- Borrando todos los archivos te aseguras de que cualquier código malicioso que haya sido inyectado, ha sido eliminado con un 100% de seguridad.
- 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.
- 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:
- Akeeba Site Diff - Se trata de un programa de escritorio para Windows. Es un poco antiguo, pero permite hacer en este sistema operativo lo que en Linux puede hacerse con un comando: comparar archivos e identificar cambios. Esto es especialmente útil si se hace periódicamente, para ir viendo qué archivos han sido modificados y poder determinar de este modo si algo cambió sin que tuviera que hacerlo, lo que probablemente indique que fue modificado por un tercero.
- Akeeba Admin Tools Scanner - También de Akeeba, la extensión Admin Tools (que ya recomendamos en el anterior hangout sobre seguridad) incluye un escáner de archivos, en este caso únicamente para archivos con extensión .php, que es muy fácil de usar y nos permite examinar rápidamente los archivos más “sensibles” de cualquier aplicación web basada en PHP. M
- JAMSS - Joomla! Anti-Malware Scan Script - Se trata de un script recomendado en los foros oficiales de seguridad de joomla.org. Es similar al de Ciro, aunque con algunas funcionalidades más.
- “My Joomla”, auditoría de seguridad “en la nube” myjoomla.com/ - Se trata de un servicio relativamente nuevo bastante completo. Su autor, Phil Taylor, es experto en seguridad Joomla, y esta herramienta cubre bastante bien la mayoría de los aspectos necesarios para auditar un sitio... y lo mejor es que lo hace ella solita, devolviendo unos informes muy completos. La gran pega es que está únicamente en inglés
Unos consejos para terminar
- 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.
- 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