Cómo limpiar un sitio WordPress infectado
Un buen día descubres con horror que en los resultados de búsqueda aparecen referencias en tu sitio web hacia productos farmacéuticos. Revisas el contenido y encuentras enlaces extraños hacia sitios web que no deberían estar ahí… Para colmo de males, tu sitio es catalogado como peligroso por Google, con la mala imagen que eso supone de cara al exterior. ¿Y ahora qué hago?, te preguntarás.
Mantener la calma, fundamental
La primera reacción será experimentar un gran estrés, agobio y prisas por solucionar el problema. En una situación así es fácil cometer errores e incluso llevar a cabo acciones precipitadas que tal vez luego resulten irreversibles.
Así que lo principal es que mantengas la calma, respires profundamente y sigas cuidadosamente las siguientes indicaciones:
Proceso de desinfección
1. ACTIVA EL “MODO MANTENIMIENTO”
De esta forma vas a evitar el dar mala imagen y que tanto usuarios como motores de búsqueda detecten una actividad no deseada. Esto lo puedes hacer de dos maneras: instalando el plugin WP Maintenance Mode o, si tienes experiencia editando código, puedes realizarlo de forma manual de la siguiente manera:
1.1. Crea un fichero en el ráiz al que puedes llamar por ejemplo “mantenimiento.php“.
1.2. Edita este fichero que acabas de crear y maquétalo a tu gusto. Para simplificar las cosas, un ejemplo de código sencillo sería el siguiente:
Estamos realizando tareas de mantenimiento.
Por favor, vuelva a intentarlo más tarde. Disculpe las molestias.
1.3. Edita el fichero functions.php de tu tema WordPress y añade el siguiente código:
function modo_mantenimiento() {
global $pagenow;
if ( $pagenow !== ‘wp-login.php’ && ! current_user_can( ‘manage_options’ ) && ! is_admin() ) {
header( $_SERVER[«SERVER_PROTOCOL»] . ‘ 503 Service Temporarily Unavailable’, true, 503 );
header( ‘Content-Type: text/html; charset=utf-8’ );
if ( file_exists(ABSPATH . ‘mantenimiento.php’) ) {
require_once(ABSPATH . ‘mantenimiento.php’);
}
die();
}
}
add_action( ‘wp_loaded’, ‘modo_mantenimiento’ );
Con esto conseguimos evitar que nuestros usuarios vean cosas extrañas en nuestro sitio web y, por otro lado, mantenemos intacta la capacidad de acceder a la administración de WordPress.
2. IDENTIFICA EL PROBLEMA
El siguiente paso es tratar de identificar el problema. Para ello puedes visitar la web de diagnóstico de Google y ver si tu sitio está infectado con malware. Además, te recomiendo que utilices la herramienta gratuita de Sucuri.
Seguramente ahora ya dispongas de algo más de información. Con esto, más los síntomas que estés experimentando en tu sitio web, te recomiendo que te pongas en contacto con tu empresa de alojamiento para comunicarles el problema y sigue sus indicaciones. Esto es muy importante, sobre todo en alojamientos compartidos, ya que el ataque puede haber afectado a más de un sitio. Si el servicio técnico deja mucho que desear y no están por la labor de ofrecerte ayuda, plantéate cambiar de empresa de hosting al término de esta guía.
3. ANALIZA TU EQUIPO
Aunque no lo creas, suele ser muy común que el equipo que utilizamos habitualmente sea el principal origen de todos los problemas. Asegúrate de que tienes un buen antivirus instalado y actualizado, y realiza un primer escaneo completo. Existen muy buenas soluciones en el mercado como el Antivirus Kaspersky, Panda Global Protection, etc. Es bueno, además, complementarlo con herramientas especializadas en la detección de malware, como Malwarebytes Anti-Malware.
4. REALIZA UNA COPIA COMPLETA DEL SITIO Y DE LA BASE DE DATOS
Fundamental, antes de efectuar cualquier cambio, realizar una copia del sitio web y de la base de datos. De esta forma, evitarás riegos de pérdida de información si algo saliera mal. Esta copia la dejas guardada aparte.
5. CAMBIA TODAS LAS CONTRASEÑAS
Es imprescindible que cambies todas las contraseñas para impedir que los atacantes puedan seguir actuando sobre tu sitio web:
Acceso de WordPress: cambia la contraseña de todos los usuarios. Verifica que no han sido añadido usuarios administradores que no deberían estar. Elimina cualquier usuario que consideres sospechoso.
Panel de control del alojamiento.
FTP.
Base de datos.
Al modificar la contraseña de la base de datos, debes editar inmediatamente el fichero wp-config.php y escribir la nueva contraseña, ya que si no WordPress no podrá establecer conexión con la base de datos y tu sitio quedará inaccesible.
Además, en este mismo fichero debes cambiar las claves de seguridad. Para ello, accede al generador oficial de claves de seguridad de WordPress, copia el código generado, y reemplázalo donde corresponde en el fichero wp-config.php.
Aprovecha que estás editándolo para asegurarte de que no hay nada extraño en él.
6. LIMPIA FICHEROS Y DIRECTORIOS
Ya estamos preparados para comenzar con la limpieza:
6.1. Si utilizas algún plugin de caché, te recomiendo que lo deshabilites y limpies la caché, ya que si se queda algún fichero infectado en la caché, puede volver a dejar tu sitio infectado.
6.2. Instala el plugin WordFence o Anti-Malware Security and Brute-Force Firewall con el objetivo de realizar un chequeo de tu sitio web. Así podrás ver qué ficheros parecen infectados, qué líneas de código se han insertado y dónde. Esto es fundamental si utilizas un tema propio customizado.
6.3. Descarga tu tema, que se encuentra dentro de la carpeta /wp-content/ y ve revisando y editando los ficheros según las indicaciones del plugin de seguridad. Como resultado, tendrás en tu ordenador tu tema limpio. Para asegurarte, puedes analizar los ficheros de tu tema con tu antivirus y tu herramienta antimalware. Si empleas un tema comercial, te recomiendo que te descargues una copia limpia desde su sitio oficial.
6.4. Entra en el apartado de plugins de tu instalación de WordPress y apunta los plugins que tienes activos y descárgate las versiones más actualizadas de los mismos en tu equipo.
Muy bien. Por ahora disponemos de un tema y plugins limpios.
Revisa el contenido de tu sitio web y busca iframes, códigos raros, enlaces internos y externos que apunten a sitios sospechosos para eliminarlos.
6.5. Ahora conéctate vía FTP y ordena los ficheros por fecha de modificación. Presta especial atención a los últimos modificados, ya que normalmente suelen ser los que contienen código malicioso. Descarga la última versión de WordPress desde el sitio oficial. Descomprime el fichero descargado en una carpeta en tu ordenador. Revisa esa estructura de carpetas y ficheros y compáralo con la existente en tu servidor. Así podrás detectar ficheros extraños que no deberían estar.
6.6. A veces puedes encontrarte con que no es posible eliminar todo el código malicioso. En ese caso, lo más aconsejable es que sustituyas los ficheros de tu instalación de WordPress por los ficheros de WordPress descargados desde el sitio oficial.
Elimina todo lo que haya en el ráiz salvo la carpeta /wp-content/, el fichero .htaccess y el fichero robots.txt, que tendrás que revisar que no contengan nada raro.
En la carpeta /wp-content/ verás lo siguiente:
plugins: deberías eliminar todos los plugins e insertar las versiones nuevas que descargaste en tu equipo anteriormente.
themes: elimina todos los temas y sube única y exclusivamente tu tema ya limpio que tienes en tu ordenador.
uploads: revisa que no haya ficheros ejecutables .php. Si los hubiera, elimínalos.
index.php: revisa que no contenga códigos maliciosos.
En este punto, sube la copia de WordPress que descargaste, prescindiendo de la carpeta /wp-content/ y los ficheros wp-config.php y .htaccess, que ya tienes listos en tu servidor.
Comprueba que todo funciona correctamente y, para finalizar, elimina o deja comentada la función que creaste al comienzo del artículo y así desactivar el “modo mantenimiento”.
6.7. Para terminar, accede a las herramientas para webmasters de Google y solicita que realicen una revisión de tu sitio web. Si no sabes cómo hacerlo, puedes consultar la ayuda de Google.
7. PREVIENE FUTUROS ATAQUES
Ya tienes de nuevo tu sitio limpio y perfectamente operativo. Sin embargo, para evitar en la medida de lo posible que vuelvas a verte en situaciones comprometidas es fundamental que adoptes las siguientes medidas:
7.1. Cambia el prefijo de tu base de datos. Puedes utilizar el plugin Change DB Prefix. Eso sí, como siempre, antes de cualquier cambio importante, realiza una copia de seguridad de tu base de datos.
7.2. Modifica los permisos de los ficheros alojados en tu servidor a 755 y los directorios a 644. Olvídate de otorgar permisos 777 a ficheros o directorios. No des facilidades.
7.3. Genera ficheros index.php vacíos para evitar que los directorios sean accesibles a través del navegador.
7.4. Comprueba que no existe el usuario “admin”, ya que es el primero que buscan los posibles atacantes.
7.5. Crea un fichero .htaccess con el siguiente código:
deny from all
Y ubícalo en la carpeta /wp-content/uploads. De esta manera evitarás que se ejecuten ficheros .php dentro de la carpeta “uploads“, algo que suelen intentar muchos atacantes.
7.6. Realiza copias de seguridad peródicas, tanto del sitio web como de la base de datos. Y guárdala en algún lugar seguro, a ser posible fuera del servidor de alojamiento.
7.7. Mantén actualizado tu WordPress, así como el tema y los plugins que utilices.
7.8. Elimina comentarios de tipo spam. Puedes ayudarte de plugins como Akismet o Antispam Bee.
7.9. Activa un plugin de seguridad como Wordfence, All In One WP Security & Firewall o iThemes Security.
7.10. Utiliza siempre contraseñas seguras y educa a tus colaboradores en la vital importancia de esta práctica. Para facilitarte la vida, puedes utilizar este generador de contraseñas online.
7.11. Aplica, como complemento de seguridad, algún sistema de doble factor de autenticación como Latch, del que ya hablamos anteriormente en un artículo sobre aumentar la seguridad de WordPress con Latch.
¿Alguna vez han atacado tu sitio web? ¿Nos hemos dejado algún paso que consideras importante? ¿Conoces algún plugin o herramienta eficiente en la detección/prevención de ataques? Comparte con nosotros tu experiencia y, si necesitas ayuda, no dudes en contactar con nosotros.