Me gustaría cambiar el mundo, pero no encuentro el código fuente

Implementando medidas de seguridad para WordPress 2

Mantener WordPress seguro se ha vuelto algo imprescindible. En los últimos tiempos, los intentos de hacerse o modificar una instalación de WordPress, han ido en aumento. El motivo principal de esta situación, es por el mero hecho que hay cerca de 40 millones de instalaciones self hosted (en servicios de hosting). Esto hace que sea un pastel enorme, mucho más que cualquier otro CMS.

Para tener nuestra instalación segura, hay que seguir una serie de reglas básicas y algunas un poco más avanzadas y que necesitareis servidor propio o VPS para poder realizarlas.

  • Mantenimiento actualizada de WordPress.
  • Mantenimineto actualizados todos los plugin.
  • Mantenimiento actualizados todos los themes.
  • Mantener controlados a todos nuestros usuarios registrados, si es que existen.
  • Realizar Backups diarios.
  • Controlar que no nos cambien ningún archivo.
  • Sacar wp-config.php del directorio web.
  • Tener un buen antivirus en nuestro ordenador y tenerlo actualizado.
  • Usuario NO admin y contraseñas complejas

 

Con todo lo anterior, pondremos muy difícil que nos de ningún susto en nuestra sitio. Pero ojo, no todo es infalible.

Ahora vamos a pasar a desgranar cada uno de los pasos para que sepamos cómo hacerlo y no morir en el intento.

 

Mantener nuestro WordPress Actualizado.

Mantener nuestro WordPress actualizado es tan sencillo cómo seguir el enlace superior que nos saldrá en nuestra instalación, y luego apretar Actualizar ahora. Una vez realizado lo anterior, WordPress se encargará de descargar los archivos necesarios y actualizar nuestra base de datos. En el caso que nuestra instalación fuera WordPress Multisite, una vez que finalizara la instalación, podremos decir “Actualizar todos los sitios”. Cabe mencionar que el paso de Actualizar todos los sitios en WordPress Multisite NO es necesario. WordPress, en una instalación Multisite, marca todos los sitios que deben ser actualizados. Cuando el administrador acceda a la administración de WordPress, WordPress actualizará de forma automática todo lo necesario sin ninguna interacción por parte del Super Administrador o del Administrador del sitio. Solo puntualizar, que siempre es interesante actualizar todo los sitios, pero no es estrictamente necesario.

Un punto importante es que SIEMPRE hay que realizar una copia de seguridad de cómo mínimo la base de datos antes de actualizar WordPress. Si ocurriera cualquier problema durante la actualización, nos podríamos encontrar que debemos restaurar una base de datos antigua (si seguéis mis indicaciones siguientes, no más antigua de 12h).

NOTA: WordPress no lanza actualizaciones para fastidiarnos, WordPress lanza actualizaciones para arreglar bugs (problemas de funcionamiento) y para arreglar problemas de seguridad. Algunos de estos problemas, provocan que personas mal intencionadas puedan llegar a hacerse con nuestro sitio.

 

Mantener actualizados todos los plugins

De la misma forma que podemos actualizar WordPress apretando un botón, también podemos actualizar los plugins apretando un botón.

Es muy sencillo actualizar los plugins en WordPress y por este motivo, es muy importante mantenerlos actualizados. El motivo principal, es exactamente el mismo que en WordPress. Si se lanzan actualizaciones, es por dos motivos, o porque se arregla algún problema o para mejoras.

Un punto importante a tener en cuenta, es que NUNCA debemos instalar un plugin que no sea compatible con la versión actual de WordPress. El que un plugin no sea compatible con la versión actual de WordPress tiene varias lecturas.

  1. Que el plugin puede no funcionar de forma correcta o hacer uso de funciones obsoletas que nos regalarán una preciosa pantalla blanca en la administración.
  2. Puede que tenga bugs peligrosos que provoquen que se puedan hacer con vuestro sitio. Hay muchos plugins que usan script Open Source que hay que mantenerlos actualizados a la última versión. Si el desarrollador del plugin no actualiza el plugin, significa que no actualiza los script y por lo tanto, podemos tener backdoors en nuestro sitio (puertas traseras por dónde los usuario no deseados pueden acceder)
  3. Si el plugin no es actualizado, es muy probable que haya sido abandonado. En ese caso, he visto actualizaciones que basaron su sitio en plugin que fueron abandonados. Un buen día se encontraron que tenían que elegir entre no actualizar WordPress, eliminar el plugin o actualizar el plugin ellos mismos. Cualquiera de las opciones anteriores, son un autentico desastre. No actualizar WordPress es una locura, eliminar el plugin en un sitio que depende de él, un desastre y actualizarlo ellos mismo una perdida enorme de tiempo o de dinero si no es desarrollador.

 

NOTA: Siempre actualizar los plugin y NUNCA instalar plugin que no sean compatibles con nuestra versión de WordPress, que siempre debe ser la última de todas.

 

Mantener actualizados todos los themes.

Todos los puntos anteriores de “Mantener actualizados los plugins” son totalmente válidos para este punto.

Pero voy a añadir varias cosas.

  1. Nunca, Nunca uséis un tema que use el script timthump.php, también puede estar bajo otros nombres cómo por ejemplo thump.php. Llevo muchos años manteniendo multitud de instalaciones y la inmensa mayoría de mis clientes no usan timthump en sus instalaciones por recomendación directa mia, pero hay algunos que si, ya sea por que se enamoraron del diseño o por que simplemente no me querían hacer caso. TODOS, repito, TODOS los clientes que usan ese script, han sido hackeados alguna vez, si es que no lo han sido varias veces y cuidado, siempre usando la última versión. Hoy en día ya no hace falta este script. WordPress realiza perfectamente las miniaturas sin la necesidad de Timthump.
  2. Actualizad siempre los themes cuando el diseñador/desarrollador libere una nueva versión. Si lo hace, seguro que lo hace por algún motivo. Seguramente, algunos de vosotros no querréis actualizar ya que pensareis, con la de horas que he perdido personalizando el theme, ahora me lo voy a cargar todo por actualizarlo… Y yo pregunto ¿Para que sirven los child themes o temas hijos? Desde hace muchísimo tiempo, WordPress soporta temas hijos. Los temas hijos, no son otra cosa que crear un nuevo theme que se basará en un theme existente. En ese child theme, solo existirá un archivo style.css que es en el que indicaremos a WordPress que ese theme es un child theme y también le diremos de que theme y después los archivos modificados del parent theme, o tema padre. Con esto conseguimos mantener nuestras modificaciones actualización tras actualización y solo deberemos revisar esos archivos en busca de las modificaciones.

 

Mantener controlados a todos nuestros usuarios registrados, si es que existen

Una de los apartados que muchos webmasters olvidan y no dan mucha importancia, es el control de los usuarios registrados en nuestro sitio, si es que damos la opción de registro.

Muchos de esos usuarios, seguramente serán spammers, sploggers o dormilones (cómo los denomino yo).

Los spammers y sploggers, solo tienen la finalidad de intentar publicitar sus propios sitios. El problema de los sploggers es muy superior en una instalación de WordPress Multisite o en una instalación haga uso de el plugin BuddyPress. El registro de estos usuarios pueden ser exponencial, llegando a registros realizados cada pocos segundos por cientos de robots. Para una instalación multisite o con BuddyPress, es un gran problema, ya que llenan de sitios basura al multisite o de publicidad a BuddyPress.

Luego están los dormilones, como yo los denomino. Son como el Antrax, están escondidos durante muchísimo tiempo esperando su momento. Un buen día, tiene una buena oportunidad (vulnerabilidad 0day) y lanzan sus scripts haciéndose con cientos de miles de sitios en unas horas. De ahí que sea tan importante no dejar pasar una actualización de WordPress. Si la dejas pasar y tienes un o varios dormilones, en pocas horas puedes tener todo el sitio patas arriba.

Para ello, cree y mantengo un plugin llamado WangGuard. Este plugin es compatible con WordPress, WordPress Multisite, BuddyPress y bbPress 2.0.

Las funcionalidades básicas de WangGuard son el bloqueo de los Sploggers y dormilones (todo tipo de usuarios no deseados) y la detección e eliminación de estos usuarios de nuestra base de datos. Pero tienes otras muchas funciones y más que voy añadiendo.

Llevo cerca de 2 años y medio desarrollándolo y os puedo asegurar que su efectividad es muy superior a la de cualquier Captcha o reCaptcha.

 

Realizar Backups diarios

Este apartado es el que siempre tengo que luchar para que la gente se lo tome en serio (no hablo de mis clientes ya que se los hago yo, si o si).

La inmensa mayoría de personas que tienen un WordPress piensan, “Mi hosting ya hace Backups, ¿Para que voy a hacerlos yo?” ¿Cuántas veces habéis oído esto? o ¿Eres de los que lo piensan?

No hay ningún hosting, repito, NINGUNO que os garantice que vuestros datos están a salvo, y eso incluye los backups. Muchas veces, pero muchas, he oído decir, Mi hosting ya me hace Backups, no me hace falta hacerlos yo. Un buen día, ocurre el desastre y en una inmensa mayoría de los casos, en el mejor de los casos, el Backup más actualizado era de hacía muchísimos días o recibieron un comunicado que decía algo parecido a “Sentimos comunicarle que nuestro sistema de backups a fallado y nos es imposible restaurarle la cuenta. Según el contrato que firmamos, le damos dos meses gratis de hosting” Así que o bien obtienes la restauración de tu página de hace dos semanas o bien obtienes dos meses gratis de hosting, pero sin ni un solo dato.

La solución de backup SIEMPRE debe pasar por que los realicemos nosotros mismos o si alguien mantiene la instalación, que los realice el.

Mi visión de un backup efectivo siempre pasa por realizar, cómo mínimo, dos backups diarios. Cada Backup, realizarlo cada 12 horas. En el momento en que menos tráfico tenga nuestro sitio, realizaremos un backup completo del sitio, es decir, de todos los archivos y de la/s base/s de datos. Al cabo de 12h de la hora programada, realizaremos un segundo backup pero solo de la base de datos.

Si tenéis un sitio muy activo y realizáis muchas entradas diarios, sería incluso recomendable realizar mas de dos backups diarios, cómo mínimo de la base de datos.

Hay varios software que podéis utilizar para los Backups, pero yo os recomiendo dos en particular.

El primero sería BackWPup. Con el, podrás realizar programaciones de backups, seleccionar lo que quieres salvar, cómo, dónde, etc… Este plugin es muy recomendabvle para cualquier usuario y para cualquier tamaño de instalación (a menos que estemos hablando de muchos Gb o incluso Tb, que para eso existen otros sistemas como la sincronización, replicación, etc…

El segundo, sería BackupBuddy. Ojo con este plugin, NO os servirá para instalaciones medias/grandes, es decir, cualquier instalación que superen todos sus archivo comprimidos los 4Gb ¿Porqué? Por el mero hecho que BackupBuddy solo acepta la compresión de archivos y además solo en zip, y este tipo de archivo (zip) no acepta ser superior a los 4Gb, lo que quiere decir que si vuestra instalación va a superar este tamaño, no os servirá. Por el otro lado, también os comentaré, que si sois desarrolladores o diseñadores, este plugin es una gran adquisición. Podréis realizar todo el trabajo en local o en un sitio bajo vuestro dominio y mediante este plugin podréis mas tarde migrarlo con un par de clics al servidor del cliente.

 

Controlar que no nos cambien ningún archivo

La forma más sencilla de saber si han hackeado nuestro sitio, es sabiendo si algún archivo ha sido modificado, obvio ¿verdad? Pero… ¿Cómo hacerlo?

Para saber si algún archivo ha sido modificado, tenemos varias opciones, algunas mediante plugin y otras solo podremos si tenemos nuestro propio VPS o servidor.

Para WordPress, existen principalmente dos plugins, pero solo os voy a comentar uno, que es Wordfence; Mediante este plugin, podréis, entre otras cosas, controlar si algún archivo de vuestra instalación ha sido modificada (sirve para WordPress simple y WordPress Multisite). OJO, si no usáis la versión original en ingles de WordPress, os avisará que algunos archivos no corresponden con la versión original de WordPress. Esto es debido a que por la localización de WordPress, se deben modificar algunos archivos. Cómo Wordfence os da la opción de mirar que archivos han sido modificado, podréis ver fácilmente si la modificación es legítima (código traducido a mano) o ha sido hackeado.

El anterior plugin no es infalible, ¿porqué? Por el mero hecho, y lo digo por haberlo sufrido, que hay hackers que ya conocen este tipo de plugins, así que lo primero que hacen es comprobar si existe el plugin y en el caso en que exista, lo eliminan. Así que no serás avisado que tu instalación ha sido modificada. No estoy diciendo que todos lo hagan, pero ya hay hackers que lo hacen.

La solución a lo anterior, tiene que pasar forzosamente por instalar un script en el mismo servidor, que sea un servicio más del sistema operativo. Por lo tanto, debéis tener, en este caso, vuestro propio VPS o Servidor dedicado. El script en particular se llama Maldet, Linux Malware Detect.

Podremos instalar este script de una manera muy sencilla en cualquier servidor. Una vez instalado, el script nos buscará una vez al día en dónde le digamos (por regla general será en el directorio web) todo los archivos que contengan o que sean Malware, ya sea reconocido o no.

Gracias a la unión de tres de las anteriores soluciones, podremos tener de verdad protegida nuestra instalación.

Si un Hacker consigue hacerse con nuestra instalación y modifica archivos eliminando el plugin Wordfender, Maldet lo detectará y nos avisará. Seguidamente, accedemos de nuevo a nuetro WordPress (si aun podemos), eliminamos e instalamos de nuevo Wordfender y ya podemos arreglar todo lo que nos haya modificado el hacker. Algún día explicaré bien cómo hacerlo. Si el hackeo ha sido muy profundo en nuestra web, podremos eliminarlo todo y restaurar la copia de seguridad que cómo mucho tendrá 12h de antigüedad (si me habéis hecho caso).

Como podéis ver, toda medida es poca.

 

Sacar wp-config.php del directorio web

Una de las primeras cosas que debería de realizar cualquier persona que instale WordPress, es sacar el archivo wp-config.php de la carpeta pública web. Solo se necesitan 5 segundos.

Esto se hace de una forma tan sencilla cómo arrastrar mediante el cliente ftp al directorio superior este archivo, es decir, por ejemplo, si nuestro panel de control fuera cPanel, la estructura del directorio web sería; /home/usuario/public_html/wp-config.php

La idea sería sacar el archivo de la parte pública, es decir, que quedara de esta forma /home/usuario/wp-config.php

Con esto, aunque no hacemos que sea imposible que hackeen el sitio, complicamos un poco la vida a algunos hackers no tan “profesionales”.

 

Tener un buen antivirus en nuestro ordenador y tenerlo actualizado

Ya veo la cara de algunos pensando ¿y que tiene que ver mi ordenador con mi WordPress? Pues mucho.

No hace mucho, tenía un cliente que continuamente le estaban hackeando el sitio, se volvió una autentica pesadilla el resolver el problema, aunque al final lo ataje. ¿Cómo? Pues realicé una prueba. Limpié toda la web, reinstalé todo WordPress, limpié toda la base de datos, la restauré, cambie todas las contraseñas de acceso (ftp, cPanel, WordPress, etc..), cambie todas las claves de la coockis, etc… todo lo que se tiene que hacer. Pero esa vez, decidí no hacer algo que siempre había hecho, no le di la contraseña del ftp.

El sitio no fue hackeado. Pasada una semana y media, le di la contraseña del ftp. En menos de 24h, el sitio había sido hackeado de nuevo.

Diagnostico, PC infectado con un troyano. Para ser sincero, ahora mismo no recuerdo el nombre del troyano, pero la idea de este troyano era/es muy sencilla;

  1. El usuario se infecta con este troyano.
  2. El troyano mira si el usuario utiliza Filezilla.
  3. Si utiliza Filezilla, mira si tiene guardados favoritos con los nombres de usuarios y contraseñas.
  4. Si tiene los favoritos completos, los envía a una IP en internet.
  5. Esa IP pertenece a un robot programado por un hacker que se alimenta del troyano.
  6. El robot accede por ftp a los hostings.
  7. Sube un script php que crea un backdoor y que además, realiza búsquedas de archivos específicos y los modifica.

Así que ya veis la importancia del antivirus.

 

Usuario NO admin y contraseñas complejas

Nunca hay que utilizar el usuario admin. Si vais a instalar WordPress, no utilicéis el usaurio admin, poned otro usuario. Usar el usuario admin, es dar a los hackers/Keyloggers el 50% del trabajo hecho. Si ya lo tenéis, simplemente cread un usuario nuevo y dadle permisos de administrador, luego, acceded como ese usuario y eliminad el usuario admin, cuando os pregunte, asociad todas las entradas y páginas al nuevo usuario creado.

La contraseña debe ser compleja, nunca nada presumible como 0000, 1234567890, fechas de nacimiento, etc… Hoy en día, todos esos datos son muy fáciles de encontrar (Solo pensad en la cantidad de información que algunos dais en Facebook) y es probable que si se proponen acceder a tu sitio, y usas algo propio tuyo, den con ello y accedan al sitio.

Yo, personalmente, utilizo contraseñas no inferiores a 30 caracteres entre mayúsculas, minúsculas, números y símbolos. Una contraseña típica de las que uso, podría ser esta “cK8rh0YY/lV<~08U#I(RwpM.0Bb3hIQ

La contraseña anterior es de 32 caracteres. Nunca repito una misma contraseña en dos sitios. Cómo es lógico y natural, no recuerdo las contraseñas, utilizo un software muy seguro para guardarlas y que lo puedo sincronizar entre todos mis dispositivos (PC, Mac, iPhone, iPad)

El software en particular, se llama 1Password y con este software solo debo acordarme de 1 sola contraseña compleja que es la que utilizo para acceder a todas las contraseñas y desencriptar el archivo de las contraseñas.

Lógicamente no digo que utilicéis contraseñas de más de 30 caracteres y tampoco que utilicéis 1Password, aunque sería lo ideal (ya sea 1Password u otro gestor SEGURO de contraseñas, no los gestores de los navegadores) pero tampoco que uséis contraseñas obvias que cualquiera, con un poco de investigación, podría conseguir.

Espero que esta entrada haya sido de vuestro interés. Solo he querido resaltar un poco la mayoría de errores que todos hemos cometido y que tarde o temprano nos hemos dado de cara contra ello.

 

José Conti

Pertenezco al equipo de traducción oficial de WordPress España, soy amante de WordPress por su sencillez de uso y potencial.Estoy especializado en grandes instalaciones, aunque tengo clientes de todo tipo.También soy CEO de WangGuard, servicio especializado en luchar contra el Splog.

View more posts from this author
3 thoughts on “Implementando medidas de seguridad para WordPress 2
  1. venues london

    Hello! This is my 1st comment here so I just wanted to give a quick shout
    out and tell you I genuinely enjoy reading through your posts.
    Can you recommend any other blogs/websites/forums that
    go over the same topics? Thanks!

     
    Reply

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *