Te ha ocurrido lo peor posible. Un día al entrar en tu blog, tienes un aviso de que ha sido hackeado. Y claro, ahora te preguntas cómo recuperar un sitio WordPress hackeado y qué podías haber hecho para evitarlo.
Y además sigues preguntándote quién es Jim Walker… Pues tienes que saber que es el chico de thehackrepairguy.com. Probablemente la empresa y persona del mundo anglosajón que más páginas webs y plataformas recupera tras haber sido hackeadas. ¿A que ahora entiendes mejor el título?
Y es que contar con un checklist a mano, que te pueda ayudar a reparar por ti mismo tu sitio web, se puede convertir en algo imprescindible.
No hay nadie fuera para ayudarte
Ésta es la primera premisa que tienes que tener clara. La mayoría de hostings simplemente se desentenderán del asunto, y se limitarán a dejarte caída la web si lo detectan.
Todo lo que puedes hacer para recuperar tu sitio web depende de ti. De lo que sepas hacer, o porque contrates un profesional que lo haga por ti.
En muy pocos casos tu hosting se meterá a averiguar qué pasó y menos a dejarte tu sitio web limpio y funcionando. Lo que suele pasar es que te lo dejan fuera de línea hasta que demuestres que está solucionado.
Si contactas con Google, te dirán que lo soluciones, y contactes con ellos para revisar de nuevo el sitio, y «quitarte la marca» de infectado.
Como mucho lo que consigues es un listado genérico de acciones a tomar, pero que no te funcionarán, porque no están adaptadas a WordPress.
Y un paso en falso y acabarás borrando tu sitio entero o tu base de datos. ¿Y no es lo que queremos verdad?
Lo primero es detectar que tienes WordPress hackeado
Pues sí, evidentemente es lo primero que tienes que saber.
Sin problema, no tienes nada que reparar.
¡Ojala nunca uses esto!
Pero si consigues detectar si tu WordPress fue infectado por malware a tiempo, tendrás mucho ganado, antes de que se produzca más daño.
Y hoy por hoy, existen plugins para detectar si fuiste infectado, o escáneres de malware online.
Para mi uno de los mejores programas para detectar si fuiste infectado sigue siendo Sucuri. Además, usando el plugin Sucuri para WordPress, no solo estarás alerta, si no que implantarás del tirón varias medidas de seguridad.
Pero vamos al “meollo” de la cuestión. Te enteras que tu sitio web con WordPress está infectado. ¿Cómo lo recuperás?
Paso a paso para recuperar un WordPress hackeado
Lógicamente todas estas medidas no son sencillas, y requieren de ciertos conocimientos técnicos, y de accesos fuera de lo habitual a tu WordPress.
Tienes que dominar lo siguiente y disponer de las siguientes herramientas:
- Acceso FTP a tu servidor, o a un administrador de ficheros como el de cPanel.
- Editor de texto avanzado, tipo Notepad++ o similar. En verdad te vale un editor de texto normal y corriente, pero con uno de estos es más sencillo visualizar el código.
Paso #1. Poner tu sitio en mantenimiento
Tan pronto como te enteras que tu WordPress está infectado, tienes que echarlo abajo, para prevenir que los hackers abusen mucho de él, y tus visitas se puedan ver infectadas.
Además, no hay forma de poder limpiar un sitio web que está online, mientras nos siguen infectando.
Para eso lo mejor es ponerlo en modo mantenimiento, y poder trabajar con los ficheros y base de datos tranquilamente.
Sigue los siguientes pasos para poner tu sitio en mantenimiento de una manera amigable para el SEO, y no perder posicionamiento.
Vamos a crear un fichero en la raíz de tu carpeta pública del servidor. Normalmente es la misma donde se encuentran las carpetas wp-includes, wp-admin o wp-content.
Crea una página Web de “Modo en mantenimiento”, la cual vas a llamar 503.php, y lleva el siguiente código:
<?php
header(“HTTP/1.1 503 Service Temporarily Unavailable”);
header(“Status: 503 Service Temporarily Unavailable”);
header(“Retry-After: 3600″);
?>
<html>
<h1>Esta página web está en mantenimiento, y pronto volveremos a estar online.</h1>
<h2>Por favor, vuelve a visitarnos en un rato.</h2>
</html>
Aquí le dices a Google y buscadores que estás fuera de servicio temporalmente, para que no te penalice, y que te vuelva a visitar en una hora.
Entre las etiquetas <html> pones el mensaje que quieras que aparezca a las personas que te visiten.
Además si quieres le puedes añadir el código de Google Analytics para saber qué visitas tuvimos durante el “apagón”.
Ahora tenemos que modificar el fichero .htaccess. Añade las siguientes líneas al principio del todo:
RewriteEngine on
RewriteCond %{REMOTE_ADDR} !^111\.111\.111\.111
RewriteCond %{REQUEST_URI} !/503.php$ [NC]
RewriteRule .* /503.php [R=302,L]
Con este código en el .htaccess rediriges todo el tráfico de tu web a la página que hemos creado. De esta forma no importa como llegue un visitante a tu web, que verá esta página.
Si lo quieres más sencillo todavía, te he preparado para que te lo descargues, los dos ficheros ya modificados. Sólo tienes que subirlos a tu servidor. ¡Y recuerda hacer antes una copia de tu fichero .htaccess! Cuando todo este OK nos hará falta.
Paso #2. Cambiar todas las contraseñas
Para prevenir que nos sigan infectando y usando nuestro WordPress, tenemos que cambiar todas las contraseñas que le afectan:
- Contraseñas de todos y cada uno de los administradores de WordPress.
- Acceso al panel de control del servidor
- Cuenta de FTP
- Base de datos
Cuando cambias la contraseña de la base de datos desde tu panel de control, también debes cambiarla inmediatamente en el fichero wp-config.php, para que después no tengas problemas.
Abre el fichero wp-config.php mediante FTP o el administrador de ficheros, y localiza la sección donde se configura la base de datos:
/* The name of the database for WordPress */
define(‘DB_NAME’, ‘putyourdbnamehere’);
/* MySQL database username /
define(‘DB_USER’, ‘usernamehere’);
/* MySQL database password /
define(‘DB_PASSWORD’, ‘yourpasswordhere’); <=Actualiza tu contraseña aquí.
/* MySQL hostname */
define(‘DB_HOST’, ‘localhost’);
Paso #3. Cambiar las claves de autentificación de WordPress (Keys y Salts)
WordPress usa diferentes claves de autentificación en WordPress para encriptar la información almacenada en las cookies de sesión, y así hacer tu sitio web más difícil de hackear.
Además al cambiarlas, vamos a invalidar cualquier sesión que ya esté abierta, dejando sin acceso a nuestro escritorio de WordPress a los “chicos malos”.
Así que el siguiente paso es asegurarnos de que las usas, y si es que sí, cambiarlas. Entre las “keys” y las Salts” tenemos un total de 8 claves.
¡Pero no te preocupes que no las tienes que recordar! Simplemente no las compartas nunca.
Puedes generar unas nuevas usando el generador oficial de claves de WordPress.
Aprovecha que tienes abierto wp-config.php para localizar dónde van estas claves, y sustitúyelas por las nuevas generadas.
Paso #4. Realizar una copia de seguridad de tus temas y ficheros importantes
Asegúrate que no pierdes nada importante en el proceso de limpieza y restauración.
A través del FTP o administrador de ficheros, descarga los siguientes ficheros a tu ordenador:
- Carpeta /wp-content/ completa. Contiene tus temas, plugins, imágenes y vídeos.
- Fichero /wp-config.php. Es donde está la configuración importante de WordPress, como la conexión a la base de datos.
- Fichero /.htaccess (¡de este ya deberías tener una copia del paso #1!).
- Fichero /.robots.txt
- Fichero /favicon.ico, aunque éste suele ir en la carpeta del tema.
Cada uno de estos ficheros son únicos en las instalaciones de WordPress, y son los importantes de conservar.
Paso #5. Realizar un backup de tu base de datos
No nos podemos olvidar de la parte más importante de la instalación. Si tu base de datos se corrompe o borra, habrás perdido todas tus entradas, páginas, comentarios, etc…
Para realizar esta copia, tenemos varios métodos.
Si usas cPanel, puedes ir a “Respaldos”, y desde allí hacer una copia de la base de datos, que se descargará a tu ordenador.
Diferentes servicios de alojamiento pueden tener opciones diferentes.
La más estándar pero avanzada, sería acceder a la base de datos por phpMyAdmin y realizar una exportación completa.
Si has tenido suerte y eres organizado, tendrás ya una copia de seguridad completa de WordPress en la nube realizada recientemente.
Y yo como soy un poco maniático, te recomiendo tener de todos modos más de una copia, por si acaso….
Paso #6. Usar Google Safe Browsing y Google Webmaster Tools para detectar las incidencias y el malware
¿A que no sabías que Google Chrome es de los mejores para detectar malware? Mucho mejor que software más caro.
Si antes de realizar el desvío a la página 503.php, navegaste por tu web, pudiste recibir ya avisos de infección. Eso te dará la primera pista de dónde hay que empezar a limpiar.
Otra opción es verificar los escaneos que Google hizo de tu Web, para ver qué ficheros maliciosos detectó. Para ello visita https://www.google.com/safebrowsing/diagnostic?site=tudominio.com
Y recuerda sustituir tudominio.com, por la url de tu web.
Aquí puedes ver dónde se aloja el código malicioso, por lo que estos sitios han sido insertados en tu código sin enterarte por hackers.
Necesitas encontrar estos links y eliminarlos de tus ficheros. Normalmente los vas a encontrar en los ficheros de tu tema, que es donde los hackers suelen ponerlo.
En otras ocasiones verás que han subido ficheros propios, que no forman parte ni de tu tema ni de WordPress, y enlazan a éstos. En estos casos te será útil contar con los ficheros originales del tema, si no has modificado nada, puedes eliminarlo todo y volverlo a subir, o guarda solo las modificaciones.
Además, ¿recuerdas que tienes una copia de seguridad?
De todos modos, también puedes usar Google Webmaster Tools para obtener más detalles de lo que encuentres.
En Google Webmasters Tools, ve al dominio que quieras revisar, y haz clic en “Problemas de Seguridad”. Tendrás un detalle de lo que Google tenga indexado.
También puedes usar la herramienta de escaneo gratuita de Sucuri para obtener más información de la infección.
Paso #7. Revisar directorios en busca de ficheros maliciosos en tu servidor
Descarga una copia limpia del último WordPress disponible que estuvieras usando en tu sitio web. Si eres precavido estarás actualizado a la última.
Descomprímela y navega por los ficheros, para familiarizarte con los que vienen en una instalación por defecto.
Una vez los has recorrido, accede a tu servidor por FTP y busca ficheros sospechosos que no sean los habituales. Los que encuentres probablemente sean malware.
El sitio habitual suele ser el directorio /wp-content/.
La razón: Puedes borrar con tranquilidad los directorios /wp-admin/ y /wp-includes/, y restaurarlos con la copia limpia recién descargada. Así que no interesa infectar estos directorios, pues son fácilmente “limpiables”.
En /wp-content/, puedes ir borrando carpetas de plugins, y sustituyéndolas por descargas limpias. ¡Siempre que sean la misma versión!
¿Ves lo importante que es estar actualizado? No sólo para protegerte, hasta para reparar es bueno.
Paso #8. Revisar si hay código malicioso en tu servidor
Siguiendo la lógica anterior, a veces los hackers no infectan los ficheros de WordPress, sino que infectan o te colocan ficheros en tu servidor directamente.
Utilizan en muchas ocasiones etiquetas Iframes, para cargar sitios remotos, o un fichero ejecutable tipo exe, cmd, etc… que infecte el ordenador de tus visitas.
¡Así que atento a este código!
Busca por ejemplo:
- Iframes ocultos: <iframe style=”width:0;height:0;”> al principio de un fichero html.
- Bloques de código ininteligibles: %wwww%yyy%zzz%/999/. Esto normalmente es código encriptado para ocultar el malware, así que lo puedes eliminar. Herramientas como Screaming Frog SEO Spider te ayudarán a encontrarlo.
- Busca en comentarios o áreas que puedan ser editadas por usuarios. Recuerda que usar plugins como Akismet te ayuda a reducir el SPAM y las infecciones.
- A través de la herramienta anterior (Screaming Frog SEO Spider), mira los enlaces internos y externos, y así podrás averiguar a dónde estás mandando tráfico y si hay algún sitio sospechoso.
- Revisa tu fichero .htaccess. Es el sitio favorito por hackers para hacer redirecciones y añadir código malicioso. Asegúrate de revisarlo desde el principio hasta el final. A veces el código malicioso está debajo de cientos de líneas vacías.
- En el mismo caso que el anterior, revisa a fondo el fichero wp-config.php, sobre todo tras la línea “Require_once(ABSPATH.’wp-settings.php’);”
- Por supuesto revisa todos los ficheros que son descargables en tu sitio web.
- Elimina los siguientes ficheros:
- /wp-includes/xmlrpc.php
- /wp-includes/css/css.php
- /wp-includes/css/style.php
- /wp-includes/js/jquery/jquery.js
- /wp-content/upd.php
- /wp-content/themes/[nombre del tema]/temp/e9815adced6d3.php (o similar)
- /wp-admin/upd.php
- Elimina todas las imágenes, ficheros zip u otros ficheros que ya no se necesiten
- Elimina todos los plugins que no se usen.
- Elimina todos los temas de WordPress que no se usen.
Paso #9. Buscar administradores ocultos en tu sitio web
Comprueba que usuarios tienen privilegios de administrador pero no los reconoces. ¡No deben ser muchos!
Los que encuentres, elimínalos.
Paso #10. Encontrar puertas traseras y eliminarlas
El mayor problema cuando eres infectado, es que los hackers colocan puertas traseras para asegurarse el acceso a tu sitio web de nuevo.
Tienes que revisar cada fichero de WordPress, plugins y temas que tu instalación.
¡Pero eso es un latazo!
Por eso verás que te he ido diciendo las carpetas que puedes eliminar y sustituir directamente con una instalación limpia. Hazlo con todos los plugins y temas, y ¡cerrarás todas las puertas traseras!
De los ficheros que hayas modificado a mano, y están en tu backup, y claro, tienes que volverlos a subir a tu servidor, escanéalos antes con un antivirus, como anti-malwarebytes free.
Paso #11. Cambiar tu proveedor de hosting
Si la respuesta de tu proveedor cuando fuiste infectado y pediste ayuda fue un tutorial web, o que te buscaras las habichuelas, ha llegado el momento de tomar una decisión.
El momento de contratar un alojamiento web seguro.
Mi recomendación es que contrates con Webempresa, y comiences a tener un soporte que no se desentiende. Además que la probabilidad de verte infectado de nuevo se reducirá notablemente.
Paso #12. Finalizando.
En este momento tienes una instalación de WordPress prácticamente limpia, y todo debe estar funcionando bien. Es el momento de quitar el código que añadimos al fichero .htaccess en el paso 1, y retirar el fichero 503.php.
Nuestro sitio volverá a la normalidad.
No olvides mandar a Google una petición de que vuelva a escanear tu sitio web para que te elimine de las listas de sitios infectados, a través de las Google Webmaster Tools. Así en más o menos un día, Google quitará el aviso de sitio infectado de tu web.
Y aunque sea repetitivo, vuelve a cambiar las contraseñas y las claves de autentificación.
Previniendo nuevos ataques
De nada sirve saber recuperar tu WordPress hackeado, si te lo hackean una y otra vez.
¡Defiéndete!
Pero artículos sobre cómo proteger WordPress tienes muchos. Como muestra un botón:
- ¿Cómo aumentar la seguridad en WordPress sin morirse en el intento?
- Wordfence, el seguro de vida para blindar la seguridad WordPress de tu plataforma digital
Así que me saldré un poco de lo normal.
Realiza un test de penetración.
Como nada te garantiza que no seas atacado de nuevo, la mejor forma de prevenir es saber de qué forma eres vulnerable.
Existe una disciplina o grupo de los hackers, que practican el “hacking ético”. Son auténticos expertos en seguridad que explorarán todas las vulnerabilidades de tu web, y las pondrán en tu conocimiento.
Asegura bien fuerte tus cuentas de email
La mayor puerta de entrada a tu WordPress. De nada sirve asegurar servidor, panel de control, ec… si un simple “recuperar contraseña” las pone en bandeja.
Para proteger el email, y tu WordPress, una gran idea es usar los servicios de doble autentificación.
Añade también preguntas de seguridad, una cuenta de correo alternativa, y un móvil, para que puedas recuperar tu correo en caso de que la contraseña de acceso cambie.
Escanea tu ordenador regularmente
Mantén tu ordenador protegido, especialmente si es Windows.
Muchas veces se infecta nuestro sitio web a través de ficheros infectados en nuestro ordenador, o bien tenemos contraseñas súper seguras que un keylogger nos captura con facilidad.
Por último, pero no menos importante, usa servicios premium como Sucuri
Este blog, y mi propio blog, usan Sucuri. Además es un servicio que incluyo en todos mis planes de mantenimiento.
¿Por qué?
Porque evita dolores de cabeza.
Sucuri es un servicio muy útil, que escanea tu sitio web regularmente, y en caso de infección te ayuda a limpiarlo. Puedes ver los pasos de este checklist reducidos a la mitad o menos, y el tiempo en tener tu web lista de nuevo será mínimo.
Merece la pena echarle un vistazo, y probar aunque sea su plugin, y servicios gratuitos.
¿Tuviste alguna vez WordPress Hackeado?
Por suerte, y toco madera, nunca tuve que usar algo así para mí mismo.
Siempre he sido más de prevenir, y eso espero que hagas.
Pero si alguna vez te encuentras en esta situación, espero que toda esta información te sea útil.
Si quieres saber más sobre seguridad, te invito a descubrir mi ebook + curso gratis para fortalecer tu blog WordPress, y ¡tener una defensa numantina!