WordPress | 25 de septiembre de 2013

Qué hacer si tu sitio en WordPress fue hackeado


Notice: Undefined offset: 0 in /home/francisc/public_html/wp-content/themes/FranciscoAMK-2017/single.php on line 42
wordpress hackeado

El día de ayer me encontré con la desagradable noticia de que uno de mis sitios desarrollados sobre WordPress había sido hackeado. Afortunadamente no fue nada tan grave y lo pude solucionar en cosa de minutos, además tenía un respaldo reciente de la base de datos para restaurar (aunque en este caso no fue necesario).

A continuación voy a contarte los pasos que comunmente se deben seguir para restaurar un WordPress que ha sido hackeado, pero antes, déjame hacer una pequeña aclaración:

WordPress es seguro

El hecho de que uno de mis sitios  haya sido hackeado no significa que WordPress sea inseguro. De hecho, es el primero de mis sitios que ha sido víctima de hackeo.

Al decir que WordPress es seguro, tampoco estoy diciendo que sea completamente a prueba de balas, hay ciertas prácticas que se deben seguir para tener la mayor seguridad posible.

Lamentablemente el mundo de la tecnología no es color de rosa y aún hay «gente mala» desarrollando nuevas técnicas para vulnerar todo tipo de seguridad. Por otra parte, como WordPress es un software de código abierto la comunidad de desarrolladores se encuentra constantemente y de manera muy ágil añadiendo mejoras al código para aumentar cada día más los niveles de seguridad.

No quiero extenderme mucho en este tema, así que te invito a leer este artículo de AyudaWordPress en donde Fernando Tellado explica bien en detalle por qué podemos considerar a WordPress como uno de los CMS más seguros.

Vamos a la parte práctica

Ok, habiendo hecho esa aclaración, es momento de ponernos en movimiento y comenzar a recuperar nuestro sitio, vamos paso a paso:

Respaldar todo

Antes de realizar cualquier actividad para recuperar el sitio, debemos respaldar lo que tengamos actualmente, aunque esté infectado. Esto es muy relevante, siempre existe la posibilidad de que todo salga mal, demos un paso en falso y borremos todo. Si eso ocurre, por lo menos tendremos un respaldo.

Si tienes tu sitio alojado en un hosting con cpanel, basta con ingresar a tu PhpMyAdmin y exportar la base de datos y desde el administrador de archivos generar un zip, con todos los archivos de tu carpeta de WordPress. También es buena idea generar un respaldo completo de TODO lo que tengas en el hosting. Aún no hemos analizado el detalle del hackeo y no sabemos que tan lejos pueden haber llegado, así que un respaldo completo nos vendría bastante bien. Hace un tiempo escribí un tutorial al respecto, revísalo aquí.

Si tu hosting no funciona con cpanel, puedes respaldar los archivos vía FTP, y para respaldar la base de datos deberás seguir las instrucciones que te haya dado tu proveedor de hosting.

¿Tienes acceso al escritorio de WordPress?

Revisa si puedes entrar al escritorio de WordPress usando tu contraseña y usuario con privilegios de administrador. Si no puedes, salta al paso siguiente 😉

Una vez dentro del administrador, cambia tu contraseña de inmediato y la de tus otros administradores (si es qu los hay).

Acto seguido, mediante FTP, cambia las claves secretas de WordPress que están en el archivo wp-config.php por las que encontrarás en este enlace (son generadas dinámica y aleatoriamente cuando entras).

Lo siguiente es instalar y correr un plugin scanner de seguridad como Sucuri Security – SiteCheck Malware Scanner, que te permitirá conocer los ficheros comprometidos con el ataque.

Si el problema es de un plugin, desactívalo, bórralo y reinstálalo. Si el problema es un theme, debes hacer lo mismo, desactivar y reinstalar (la versión más reciente). Si se trata de un theme que tú desarrollaste, vuelve a subirlo y revisa detalladamente que cumplas con los estándares de WordPress, para ello puedes usar el plugin Theme Check.

Aunque hayas hecho esto debes seguir los siguientes pasos.

Actualizar WordPress (manualmente)

Lo siguiente que deberemos hacer es identificar qué tipo de hackeo es el que sufrió nuestro sitio. Los hacker tienen diferentes formas de atacar, pero sus consecuencias podemos dividirlas en 2 tipos:

  • Modificación de archivos: Esto es lo más común, y fue lo que me ocurrió en el sitio atacado. Básicamente, el hacker logra tener acceso a mis archivos y realiza ciertos cambios en alguno de ellos para reemplazarlo por un texto o imagen, cambiando lo que nuestros visitantes ven al entrar al sitio. En mi caso el único archivo modificado fue index.php ubicado en el directorio public_html.
  • Modificación de base de datos: Esto es un poco menos frecuente, pero mucho más difícil de recuperar. Una vez que el hacker consigue acceso a tu sitio, realiza algunas modificaciones en tu base de datos para ingresar algunas cadenas de texto y a veces borrar todo el contenido. Afortunadamente esto no es lo que me sucedió 🙂

Si tu situación es como la mía, deberás entrar mediante ftp a tu sitio y borrar todos los archivos y carpetas de tu instalación de WordPress con excepción de la carpeta wp-content y el archivo wp-config.php.

Luego debes descargar la versión más reciente de WordPress y subir todos los archivos a tu FTP, procurando no reemplazar la carpeta wp-content y el archivo wp-config.php que dejamos en el servidor.

Si tu base de datos se vio afectada con el ataque, el momento de recurrir a un respaldo (si es que lo tienes) y desde PhpMyAdmin, borrar todas las tabas de tu base de datos dañada y sobre ella importar tu respaldo. Si no tienes un respaldo, te recomiendo contactar a alguien que tenga experticia en esta área para que te pueda ayudar a recuperarla.

Una vez que has subido los archivos y eventualmente modificado tu base de datos, debes actualizar la base de datos para la nueva versión de WordPress. Escribe en tu navegador la url de tu WordPress seguido de: «/wp-admin/upgrade.php», esto hará los cambios necesarios para que tu base de datos funcione con la más reciente versión de WordPress.

Ingresa al escritorio de WordPress y si hay actualizaciones disponibles de temas o plugins, es el momento de actualizar. Revisa que todo esté en orden, tus artículos, páginas y biblioteca multimedia. Finalmente revisa con el plugin de Sucuri que todo esté en orden. Luego ve a la parte frontal de tu sitio y revisa que todo está funcionando bien, si está cargando las imágenes, los archivos css, js, etc. Si todo está bien quiere decir que vamos por buen camino.

Aunque todo lo anterior esté bien, te recomiendo que entres vía FTP y revises detalladamente el contenido de la carpeta wp-content para estar seguro de que no haya algún archivo o carpeta de nombre o contenido extraño y que no tenga relación con el funcionamiento de algún plugin. Para esto es necesario que hayas analizado las funcionalidades de los plugins que instalaste antes de hacerlos funcionar en tu sitio (Estoy seguro de que lo hiciste ¿o no?).

Si vez algo raro, bórralo y comprueba nuevamente si todo sigue funcionando correctamente.

Cambia la contraseña de tu base de datos

Por último, pero no menos importante, ingresa al panel de control de tu hosting y cambia la contraseña de tu usuario de base de datos. Recuerda que luego de hacer esto, debes actualizar este dato en el archivo wp-config.php.

Que no vuelva a ocurrir

Ya que el sitio está nuevamente funcionando, es hora de hacer ciertas acciones para prevenir nuevos ataques:

Actualizar a la última versión

Esto ya lo hiciste en el paso anterior, pero es importante que siempre estés al día con las nuevas actualizaciones ya que siempre traen mejoras de seguridad.

Crea un respaldo

Ahora que el sitio está funcionando nuevamente, es momento de generar un nuevo respaldo de los archivos y base de datos. Te recomiendo el plugin Duplicator, yo lo llevo usando hace algún tiempo y funciona bastante bien. Hay una alternativa muy buena y mucho más completa llamada Backup Buddy, pero es de pago.

Dependiendo de la frecuencia con la que publiques contenido en tu sitio, genera respaldos constantemente.

Instala un plugin de seguridad

Un plugin de este tipo, te va a ayudar a mejorar la performance de seguridad de tu sitio. Yo utilizo Better WP Security que tiene grandes funcionalidades como limitar el intento de logueo a una cantidad apropiada, forzar el uso de contraseñas seguras, etc.

No comprometas la seguridad

¿Recuerdas cuando hablé de que para mantener WordPress seguro hay que seguir ciertas buenas prácticas? Llegó el momento de enumerarlas:

  • Usa contraseñas seguras y cámbialas regularmente
  • No uses el usuario por defecto «admin». Si es el único usuario que tienes y no puedes eliminarlo, crea otro usuario con perfil de administrador, logueate con ese usuario y borra el usuario admin. Fácil 🙂
  • En tu configuración de usuario, en la opción «mostrar como nombre público» nunca selecciones tu nombre de usuario, porque el hacker sabrá cual es tu username, y eso es casi lo mismo que estar usando el usuario «admin».
  • No uses el prefijo de la base de datos wp_. Better WP Security te ayudará con eso.
  • No instales plugins que no hayas probado antes en un sitio de pruebas o que no estén respaldados por un desarrollador reconocido. Lo mismo ocurre con los themes. No uses themes gratuitos que no provengan del directorio oficial de WordPress o de autores reconocidos.

Usa un hosting seguro

Mi sitio que fue hackeado, es de los pocos que no está en mi proveedor de confianza (shhh… no le digas a nadie que es WebHostingBuzz Hostgator y que lo recomiendo mucho). De hecho, cifras recientes indican que un 41% de los ataques a WordPress son debido a fallas de hosting, seguido de 29% de themes, un 22% de plugins y un 8% debido a contraseñas inseguras.

Así que antes de contratar un hosting averigua si es que tienen planes exclusivos para WordPress y cómo manejan la seguridad. Para ello los foros son muy buena opción. También puedes optar por los hosting que WordPress recomienda directamente.

¿Te ha servido?

Espero profundamente que estos consejos te hayan servido. Cuéntame por favor en los comentarios si esto te ha sido de utilidad y si tienes alguna otra sugerencia al respecto.