Limpiar la base de datos de WordPress: pasos y plugins para mantener tu web rápida

He administrado (y mal administrado también) bases de datos SQL durante casi 37 años. SQL fue el segundo lenguaje de programación que dominé y hasta el día de hoy sigue siendo uno de mis favoritos.

En todo este tiempo batallando con bases de datos, una cosa se ha mantenido constante, tienes que gestionar tus bases de datos constantemente y, en ocasiones, eso significa limpieza y mantenimiento. Las bases de datos de WordPress no son diferentes.

¿Por qué limpiar tu base de datos de WordPress?

Una de las razones más importantes para realizar una limpieza de base de datos de WordPress es porque la base de datos es la segunda parte más lenta de todo tu sistema. Lo único más lento es el propio sistema de archivos. Por lo tanto, asegurarte de que tu base de datos está operando a una velocidad óptima es importante no solo para la salud de tu sitio sino también para los rankings en los motores de búsqueda. La mayoría de los principales motores de búsqueda utilizan la velocidad de carga de la página para clasificar la página. Para un rendimiento WordPress óptimo, quieres mantener la base de datos limpia. La limpieza de tu base de datos de WordPress es una parte del proceso general de ajuste de rendimiento de WordPress.

La gran mayoría de instalaciones de WordPress utilizan un sistema de gestión de bases de datos relacionales MySQL (o MariaDB). Esto es en lo que nos centraremos en este artículo. Aún así, la mayoría de los consejos se pueden aplicar a cualquier tipo de almacenamiento que utilice tu base de datos de WordPress.

Pasos a seguir para una limpieza óptima de la base de datos de WordPress

Crea una copia de seguridad antes de empezar

Antes de adentrarte en este viaje, asegúrate de crear una nueva copia de seguridad. Si, deberías tener al menos 30 copias de seguridad diarias pero hay cosas que podrían haber cambiado desde tu última copia de seguridad. Querrás asegurarte de que si se estropea algo, puedes restaurar fácilmente a cómo estaba todo antes de empezar.

Si tu alojamiento web ofrece copias de seguridad bajo demanda como hace SiteGround, haz una ahora. Sino, antes de continuar, instala un plugin que te permita crear y restaurar copias de seguridad de tu base de datos.

Hay muchos plugins buenos ahí fuera que te ayudarán. He trabajado con varios y revisado otros. Para este trabajo, crear una copias de seguridad y restaurar, me gusta UpdraftPlus WordPress Backup Plugin porque tiene una función de restauración muy sencilla de entender. La versión gratuita será suficiente para realizar el trabajo pero la versión de pago añade muchas otras funciones útiles (como soporte para WP-CLI… que es muy importante para mi en la mayoría de plugins).

Una vez tengas el plugin instalado, procede a realizar una copia de seguridad. A menos que vayas a eliminar archivos, no es necesario realizar una copia de seguridad de todo, solo haz una copia de la base de datos.

Después de que hayas hecho tu copia de seguridad, realiza una restauración para que puedas ver su funcionamiento antes de entrar en una situación de emergencia. Recuerda, si tienes un sistema de recuperación sin probar, no tienes un sistema de recuperación ante desastres, tienes esperanzas y deseos.

Tablas sobrantes en la base de datos de WordPress

Ahora que tienes tu sistema de copias de seguridad listo, el primer elemento que podrías querer incluir es un desarrollador. Soy muy fan de incluir ayuda profesional cuando estoy sobrecargado y esta tarea podría sobrecargar a mucha gente.

Si tu web lleva mucho tiempo online, es posible que hayas instalado y desinstalado muchos plugins. Mi web personal ha estado utilizando WordPress desde 2005. Muchos plugins, en especial los antiguos, no realizaban limpiezas de sí mismos. Esto significa que durante la instalación, podrían crear tablas en tu base de datos que no se eliminaban cuando desinstalas el plugin. Echa un vistazo a la lista de tablas (si no sabes cómo, no deberías estar haciendo esto sin ayuda) e intenta identificar cualquiera que no esté en uso. Elimina esas tablas de tu base de datos.

Una vez las hayas eliminado, prueba TODO. Son estás operaciones las que me hacen recomendar tener un entorno staging para probar estás cosas en el entorno de pruebas. Aún así, si tienes tu copia de seguridad, estás listo para comenzar.

Revisé la base de datos de mi web personal hace aproximadamente un año más o menos. Hay más de 500 tablas. La instalación estándar de WordPress tiene alrededor de 40. Necesito realmente tomar tiempo para limpiar las cosas yo mismo.

Hay plugins que te ayudarán con esta tarea si no tienes a un desarrollador que te pueda ayudar. Uno de ellos está mencionado a continuación, WP-Optimize.

No te alarmes si cuando intentas eliminar una tabla da error. El usuario de la base de datos desde la que se ejecuta WordPress puede que no (probablemente NO DEBERÍA) tenga los permisos suficientes para eliminar estas tablas. Aun así, puedes mostrar esta lista a tu desarrollador y ellos sabrán cómo eliminar estas tablas de forma segura.

Revisiones

A continuación, vamos a hablar de las revisiones de entradas. A la vez que estás trabajando en una entrada o página, WordPress lo guarda constantemente en segundo plano. Para permitirte volver atrás y restaurar una de esas versiones en una fecha posterior, cada revisión se guarda como un registro separado en la base de datos de entradas. Una vez hayas finalizado la edición de tu entrada y la hayas publicado, estas revisiones no sirven para nada.

Si tienes un desarrollador en tu equipo, ellos pueden eliminar estos registros desde la tabla sin tener que instalar plugins. Si no tienes un desarrollador, o deseas realizar un cambio que mantenga este problema resuelto, echa un vistazo a WP Revisions Control. Este simple plugin te permitirá configurar cuantas revisiones mantener y mantendrá tu base de datos limpia automáticamente. 

Borradores

Otra fuente de contenido inútil en tu base de datos son las entradas que empezaste pero que nunca llegaste a publicar. De nuevo, utilizando mi web personal como ejemplo, miré una vez y tenía más de 50 entradas en estado BORRADOR. Esto significa que no solo tengo 50 registros en mi base de datos que no necesito sino que también tiene revisiones por cada una de ellas. Deshazte de esas entradas antiguas que nunca vayas a publicar.

Vacía la papelera

Como administrador de una instalación de WordPress, necesitas eliminar antiguas entradas, páginas y otras cosas. WordPress no borra automáticamente esas entradas antiguas de tu sistema, las mueve a la ‘papelera’. (Desde una perspectiva técnica cambia el estado de estos elementos.)

La papelera es genial si necesitas volver y recuperar algo posteriormente pero después de cierto tiempo, puedes estar seguro de que no vas a necesitar lo que está en la papelera. Por lo que vacía la papelera. Cuando lo hagas, eliminarás los elementos que WordPress marcó como basura. Esto los borra de la base de datos y evita que se acumulen.

Cosas de las que no preocuparse

Hay muchas recomendaciones sobre qué deberías hacer para limpiar la base de datos de tu WordPress en Internet. Parte de estos consejos tienen buenas intenciones pero no son tan útiles. Aquí hay un par de cosas de las que no debes preocuparte.

Limpiar archivos transitorios

Los transitorios son pequeñas piezas de información que WordPress y los plugins necesitan almacenar temporalmente. Los transitorios tienen fecha de caducidad. Algunas personas te aconsejarán que te asegures de limpiar los transitorios caducados de vez en cuando. No te molestes. El sistema cron de WordPress hará esto por ti todas las noches. En el mejor de los casos, puedes eliminar algunos cientos de registros unas horas antes. El esfuerzo que pone en la gestión de los transitorios es un esfuerzo que podrías invertir mejor en hacer que tu web sea más bonita, más rápida o más útil para sus lectores.

Optimizar tablas

Muchos sitios te dirán que “optimices tus tablas”. Algunos incluso podrían explicar lo que esto significa, mientras que otros simplemente lo usaron como un encantamiento mágico que se supone que te hará sentir mejor con tu base de datos. La verdad es que hubo un momento en que la optimización de las tablas de bases de datos era importante. Afortunadamente, esos días ya pasaron. En estos días, la mayoría de las bases de datos MySQL utilizan tablas que no requieren optimización. Incluso la base de datos de mi vieja web personal ya no necesita ser optimizada. Técnicamente, ya no es necesario hacer esto para el 99,9% de las instalaciones de WordPress que existen. Si eres parte del otro 0.01%, en lugar de optimizar tus tablas, mueve tu sitio a una versión moderna de MySQL con un tipo de tabla que no necesita optimización.

Plugins que harán todo esto por ti

Sí, hay cosas que debes hacer con regularidad para mantener tu base de datos limpia y saludable. Sí, tu o un programador que trabaje para ti puede hacer estas cosas manualmente de forma regular. Sin embargo, si es como la mayoría de nosotros, no te gusta tener que acordarte de limpiar cosas. Para esos casos, hay plugins que pueden hacer todo esto y mucho más por ti, automáticamente. Piensa en ellos como el Roomba para tu web. Estos plugins aparecerán mientras no estés presente y se encargarán de limpiar los rincones polvorientos de tu web de forma regular.

Aquí hay cuatro opciones que puedes considerar:

Advanced Database Cleaner

Este plugin está disponible tanto gratis como premium. La versión gratuita hará todo lo básico que necesitas. Incluso puedes programarlo para que se ejecute de forma regular para que tu base de datos se mantenga limpia. La versión Pro te dará muchas más opciones. Recomiendo comenzar con el gratuito hasta que comprendas lo que hace y luego, si sientes la necesidad, pasar al Pro.

Optimize Database after Deleting Revisions

Esta es otra buena opción, aunque ofrece “optimización de tabla” que acabo de decirte que era innecesaria. Mantendrá tu base de datos limpia de entradas antiguas, comentarios, revisiones y un montón de otras cosas. No hay tantas opciones como Advanced Database Cleaner, pero las que realmente necesita están ahí. Este plugin es gratuito y hay un enlace para donar al autor si lo usas y lo encuentras útil. (y siempre sugiero que done a los autores de plugins gratuitos si usas sus plugins)

Si eliges analizar las tablas, intentará ejecutar un análisis en ellas, pero si estás utilizando un tipo de tabla que no requiere esta función, te lo dirá. No dañará tu base de datos ni ninguno de sus datos.

WP-Optimize – Cache, Clean, Compress

Sin embargo, probablemente mi opción favorita (y la que he instalado en mi sitio personal) es WP-Optimize. Este plugin realiza todas las funciones que hemos discutido aquí y muchas otras cosas. Al igual que los dos anteriores, puede programar este plugin para que se ejecute automáticamente. Sin embargo, dado que esto está escrito por el mismo equipo que escribió el primer plugin que recomendé, UpdraftPlus WordPress Backup Plugin, se integra perfectamente y te brinda la opción de realizar una copia de seguridad automática de tu base de datos antes de realizar el mantenimiento. Esta es una buena característica. Al igual que Updraft Plus, WP-Optimize viene en una versión gratuita y de pago. Dejaré que tú decidas si necesitas las funciones presentes en la versión paga.

SiteGround Optimizer:

Si SiteGround es tu alojamiento web, asegúrate de tener instalado el plugin SiteGround Optimizer. Este es un plugin que DEBES INSTALAR para cada sitio alojado con SiteGround porque es velocidad gratuita.

Este es un plugin fácil de instalar y, si bien la base de datos no es su enfoque principal, realiza el mantenimiento de rutina de la base de datos. También hace MUCHO más para acelerar tu web y mantenerlo rápido. Para obtener todos los detalles sobre este gran plugin, consulte esta publicación de blog.

Para finalizar

Mantener la base de datos de tu WordPress limpia es un paso importante para asegurar que tu web siempre se ejecuta rápidamente. Puedes invertir el tiempo en limpiar tu web manualmente o instalar y configurar uno de los plugins recomendados que lo harán por ti. En ambos casos, es tiempo bien invertido.

¿Qué es XMLRPC y cómo esta reliquia amenaza la seguridad de tu web WordPress?

XMLRPC

En el directorio raíz de cada sitio de WordPress hay un archivo más antiguo que el propio WordPress: xmlrpc.php, que durante los días b2 se creó para ofrecer a los sitios una forma de comunicarse entre sí y para que otras aplicaciones se comunicasen con el blog.

¿Qué es XMLRPC?

El nombre te dice todo lo que necesitas saber sobre la funcionalidad.

XML: se diseñó para aceptar cargas útiles en XML. JSON es hoy en día un formato mucho más común. XMLRPC es bastante anterior a JSON.

RPC: RPC significa llamada a procedimiento remoto (Remote Procedure Call). Era un estándar por el cual un sistema podía pedir a otro sistema que hiciera algo. Ahora usamos API-REST o Graph API – para hacer lo mismo, pero antes de que existieran, RPC era una de las herramientas disponibles.

¿Cómo funciona XMLRPC?

Para hacer que XMLRPC.php hiciera algo, tenías que enviarle (POST) un mensaje. Si no estás familiarizado con el funcionamiento de los navegadores, esto es básicamente como hacer clic en el botón “Enviar” en un formulario. Eso suele iniciar una solicitud POST.

Si realizas una solicitud POST a tudominio.tld/xmlrpc.php y le entregas una carga útil XML con el formato adecuado, puedes hacer cosas como crear una publicación en tu web.

Una de las cosas para las que XMLRPC se utilizó mucho en su día fueron los “pingbacks”. Esos comentarios que ves en publicaciones que muestran que alguien más lo enlazó desde su blog.

Amenazas potenciales de seguridad del XMLRPC de WordPress

Durante mucho tiempo, XMLRPC fue una herramienta útil. Ahora toda la funcionalidad para la que se usaba XMLRPC se maneja mediante la API REST, ya incorporada. Aunque ya no se use, es una función todavía activa y a aquellos que sienten nostalgia por tales cosas, les causa una sonrisa. Sin embargo los que están preocupados por la seguridad, lo ven y fruncen el ceño.

La presencia de XMLRPC representa varios riesgos de seguridad para sitios WordPress que pueden llegar a convertirse en ataques severos.

  • Ataques de fuerza bruta a través de XMLRPC

El primer tipo de ataque XMLRPC de WordPress es un simple ataque de fuerza bruta. Dado que parte de la carga útil XML que se pasa a WordPress es el nombre de usuario y la contraseña del usuario que desea realizar la acción, es una manera fácil para que los atacantes prueben combinaciones de nombre de usuario y contraseña hasta que encuentren una que funcione. Muchos propietarios de sitios preocupados por la seguridad limitarán la cantidad de intentos de inicio de sesión que un usuario puede realizar antes de bloquearlos, pero no se molestarán en bloquear las solicitudes XMLRPC, lo que dejará una puerta trasera abierta para que los atacantes intenten encontrar una entrada.

Una vez que un atacante encuentra las credenciales que funcionan, puede intentar dañar tu sitio inyectando contenido en la base de datos del mismo. Ya sean publicaciones, páginas o solo comentarios, el resultado final es el mismo: tu sitio ofrece contenido que no aprobaste y que probablemente no deseas. No obstante, en el peor de los casos, podrían ser publicaciones o comentarios inocuos que tengan malware inyectado.

  • Ataques DDoS usando XMLRPC

Otro de los beneficios de XMLRPC fue la habilitación de pingbacks. Los ciberdelincuentes pueden usarlo para bloquear tu servidor emitiendo muchas solicitudes pesadas a la vez.

Un pingback escribe un registro en tu base de datos, y escribir en tu base de datos es una tarea costosa en cuanto a recursos. Si bien un solo pingback no perjudicaría el rendimiento de tu sitio, cientos o incluso miles de ellos a la vez pueden poner de rodillas incluso al servidor más robusto.

Esto se denomina ataque DDos o de denegación de servicio distribuido. Distribuido porque normalmente no es una sola máquina la que realiza todas las solicitudes, normalmente son un gran número de máquinas repartidas por diferentes lugares.

[subscribe_cta]

Cómo deshabilitar XMLRPC en WordPress

Hay varias formas de deshabilitar XMLRPC. Te recomiendo que lo hagas porque sinceramente, no lo necesitas.

  • A través del archivo de configuración de tu servidor web 

Si estás familiarizado con el bloqueo de solicitudes a través de los archivos de configuración de tu servidor web y tienes acceso a ellos, ésta es una excelente manera de bloquearlo. Para Apache, puedes agregar este código al archivo .htaccess en el directorio raíz de tu sitio.

<Files xmlrpc.php>

order deny,allow

deny from all

</Files>

Eso lo detendrá en seco.

  • A través del archivo functions.php de tu tema

Si no eres de los que te gustan mucho los archivos de configuración de tu servidor web, puedes agregar una sola línea de código al archivo functions.php de tu tema.

add_filter( ‘xmlrpc_enabled’, ‘__return_false’ );

Asegúrate de hacerlo bien, hay 2 guiones bajos antes de la palabra retorno. De nuevo, esto lo desactivará pidiéndole al propio WordPress que no desea aceptar más solicitudes XMLRPC.

  • Instalar un plugin

Finalmente, si no quieres molestarte en agregar código al functions.php de tu tema, puedes deshabilitar XMLRPC en WordPress instalando un plugin. El plugin hace exactamente lo mismo que el consejo anterior. Hay varios plugins buenos que son gratuitos, pero también es posible que ya tengas esta funcionalidad disponible si tienes instalado algún plugin que incluya Firewall de aplicaciones.

Si no es así, permíteme recomendarte mi favorito y el que uso en todos mis sitios para desactivar XMLRPC: plugin SiteGround Security. Incluso si no estás alojado en SiteGround, puedes usar este plugin gratuito para administrar varias tareas de seguridad diferentes. Si solo deseas que desactive XMLRPC, desactiva todas las demás opciones. Ésa es una de las cosas que me gustan de este plugin: todo es opcional.

XMLRPC nos sirvió bien en su día, pero su tiempo ya ha pasado. Es hora de dejar que se retire con gracia. Hasta que los desarrolladores principales de WordPress decidan que es hora de eliminarlo, debes protegerte a ti mismo y a tu sitio desactivándolo.

El coste oculto de lo gratis

el coste escondido de lo gratuito

He estado involucrado en el movimiento del software open-source (no confundir con el software libre) desde sus inicios. Con el tiempo, he visto cambiar su percepción. Al principio, había mucha gente escribiendo software y contribuyendo porque podía. Les hacía sentir bien aportar a los demás.

Los usuarios de software open-source reconocieron este regalo que se les estaba dando y lo respetaron, al igual que al talento de quienes lo daban. Muchos usuarios contribuyeron a sus proyectos favoritos a través de código, documentación, promoción y, a veces, incluso dinero.

Con el tiempo, las cosas han cambiado. Hoy en día veo a más personas que utilizan software open-source porque creen que es gratis. Piensan que, como no tuvieron que pagarle a un programador por sus esfuerzos, se libran. A veces, esto es cierto, a veces puedes instalar un software y comenzar a generar valor a partir de él. WordPress solía ser así.

Sin embargo, actualmente el software, incluso el Open source, es complejo. Sí, WordPress solía tener la “instalación en 5 minutos”, y sí, es posible que aún puedas instalar WordPress así de rápido, pero si tu objetivo es hacer algo más que escribir en tu propio blog, tendrás que añadir algunas horas o días a esos 5 minutos.

A día de hoy, el software es complicado. Los temas de WordPress solían ser bastante simples, pero ahora son más complejos, con páginas de ajustes y muchas opciones de configuración. Opciones que, si no estás familiarizado con el tema, pueden resultar difíciles de navegar.

Este es el coste oculto de lo gratis. Muy alto actualmente.

Muchos plugins son “gratuitos” pero requieren que te suscribas a su servicio de backend subyacente. Técnicamente son gratis, pero igual te van a costar. Otros plugins ofrecen una versión gratuita, pero bloquean sus mejores funciones hasta que pagues. Nuevamente, técnicamente gratis, pero si quieres que hagan cosas interesantes, tendrás que pagar.

No me malinterpretes, no estoy defendiendo que todo el software sea gratuito. Como alguien que se gana la vida escribiendo código, recomiendo encarecidamente pagar a los desarrolladores. Es solo que, como propietario de un sitio no técnico, debes comprender el coste de “gratis”.

[subscribe_cta]

Prepárate para contratar a alguien que te ayude. En la mayoría de los casos, necesitarás:

  • Un Project Manager. Esta es una persona técnica, pero no necesariamente un programador. Entienden sobre WordPress, los plugins y saben cómo hacer que trabajen juntos para hacer las cosas. También saben cuándo se necesita un desarrollador y, por lo general, conocen a unos cuantos a los que poder pedir ayuda.
  • Un diseñador. Definitivamente necesitarás a alguien que pueda hacer que tu sitio web se vea bien. Puntos extra si también es un experto en experiencia de usuario (UX) para que pueda hacer que tu web sea fácil de entender y usar.
  • Un copywriter. (Pensaste que iba a decir desarrollador, ¿no?) Sí, vas a necesitar un redactor, alguien que sea un artífice de las palabras. Vas a querer que vean cada palabra de tu sitio web y se asegure de que lo que estás diciendo sea claro y fácil de entender para el usuario.
  • Opcionalmente, es posible que necesites un desarrollador. Si es así, tu project manager lo sabrá y debería saber a quién contratar. No te adelantes en contratar a tu sobrina y ponerla en el equipo. Deja que los expertos hagan el trabajo por el que los contrataste.

Una vez que hayas creado tu sitio web, todavía no será gratuito. Asegúrate de alojarlo en un hosting de buena reputación que entienda de WordPress. Puede ser una sorpresa para algunos de vosotros, pero tengo sitios web que no están alojados en SiteGround. Algunas de mis instalaciones de WordPress están alojadas en un servidor virtual que yo mismo administro. Entiendo lo que se debe hacer y entiendo los riesgos de administrar mi propio servidor.

Los proyectos que yo mismo alojo son proyectos complementarios con requisitos especiales que muchos proveedores de hosting no proporcionan de forma inmediata. Si bien en un sentido técnico, sí, cada sitio adicional que pongo en mi servidor virtual es “gratis”, también es una cosa más de la que tengo que preocuparme. Mi tiempo no es gratis, por lo que alojar sitios web en ese servidor resulta muy caro.

Para todos mis sitios web que no tienen requisitos muy específicos, uso SiteGround. Después de más de 25 años administrando servidores web y más de 15 años administrando WordPress, sé lo que necesito en un proveedor de alojamiento web, y SiteGround marca todas las casillas.

El software gratuito y libre (FOSS) es increíble. Literalmente impulsa el mundo en el que vivimos. Pero muchas veces, gratis solo se aplica al precio que pagas por el código en sí. Cuando te estes preparando para lanzar tu próximo sitio web, ten en cuenta algo más que el coste del código. Si tu sitio web va a añadir valor a tu empresa, prepara un presupuesto que te permita hacerlo bien. No te olvides del alto coste de la gratuidad.

¿Qué es un ataque de fuerza bruta y cómo evitarlos?

ataque de fuerza bruta

¿Qué es exactamente un ataque de fuerza bruta en un sitio web? Solo el nombre “fuerza bruta” evoca al malo de una película de acción cursi.

Para la mayoría de los sitios web, un ataque de fuerza bruta puede ser muy grave.

¿Qué es un ataque de fuerza bruta?

Un ataque de fuerza bruta es exactamente lo que su nombre indica. No hay una lógica profunda involucrada en adivinar inicios de sesión o contraseñas, es solo un bot que comienza con un inicio de sesión de “A” y una contraseña de “A” e intentará pacientemente cada combinación de letras y números hasta que encuentre un nombre de usuario y contraseña que funcione.

Cuando comenzaron los ataques de fuerza bruta, eso era todo. A lo largo de los años, se han vuelto más sofisticados, pero en esencia, es solo un bot.

Hoy en día, existen redes de bots que hacen esto. Como los ataques de fuerza bruta desde un solo ordenador eran realmente fáciles de detectar y bloquear, ahora, una red de cientos o miles de ordenadores trabajan juntos para atacar un sitio web y adivinar su nombre de usuario o contraseña.

Además, hoy por hoy existen “diccionarios de tablas” que son listas de contraseñas que ya se han utilizado o palabras que se pueden combinar para hacer una contraseña.

Una red de bot puede intentar adivinar un nombre de usuario y una contraseña miles de veces por segundo. Tu sitio web será tan seguro como lo sea su contraseña.

Además de los diccionarios de tablas, los atacantes se han vuelto aún más inteligentes. A medida que se piratea un sitio web y se extrae toda la información del usuario, los inicios de sesión y las contraseñas de ese sitio se añaden a los que se deben probar. Saben que muchas personas no se molestan en crear diferentes inicios de sesión y contraseñas la mayor parte del tiempo, por lo que un inicio de sesión en un sitio probablemente sea el mismo en otro.

¿Cómo se mitiga un ataque de fuerza bruta?

Bueno, hay 2 respuestas a esta pregunta.

Si tu sitio web no está alojado en SiteGround

Si no estás alojado en SiteGround, debe comenzar a buscar plugins de seguridad y configurar firewalls. Ya hemos hablado algo de esto en publicaciones anteriores.

Necesitarás:

Instalar un firewall de aplicaciones y configurarlo correctamente.

Hay varios buenos plugins en el repositorio de plugins de WordPress que protegerán tu sitio contra ataques de fuerza bruta y otro tipo de ataques. Los que están en el TOP 5 son muy valorados y, aunque no recomendaré uno aquí, probablemente puedes encontrar uno que sea altamente recomendado e implementarlo. Todos los buenos tienen una tarifa mensual asociada, pero eso es lo que se necesita para proteger tu sitio.

Exigir contraseñas seguras a todos los usuarios.

Ya hemos hablado de contraseñas antes, pero vale la pena repetirlo. Las contraseñas seguras son tu primera línea de defensa. Es posible que a tus usuarios no les guste, pero mantendrá tu sitio web y sus datos seguros.

Requerir la verificación en dos pasos (2FA) para todos los inicios de sesión.

La verificación en dos pasos mitiga los ataques de fuerza bruta al 100% porque el inicio de sesión y la contraseña son solo 2/3 del procedimiento de inicio de sesión. Para el tercio final, debes tener el teléfono de la persona. Ese es el final del juego para los ataques de fuerza bruta.

Sin embargo, al igual que con las contraseñas seguras, los usuarios generalmente odian la verificación en dos pasos. Puedes limitarla a las cuentas de administrador, pero si un atacante entra a tu sitio web, estará en riesgo. Así que tienes la complicada tarea de decidir qué es más importante.

Implementar una política de rotación de contraseñas que fuerce nuevas contraseñas al menos cada 90 días.

Otra cosa que es eficaz para ayudar a prevenir ataques de fuerza bruta, es requerirles que renueven sus contraseñas cada cierto tiempo. Lo malo es que esta es otra cosa que los usuarios suelen odiar por lo que, si añades varios pasos de seguridad que no les gustan, corres el riesgo de comenzar a perder usuarios. Así que hay que caminar por la cuerda floja.

Consejo adicional: Fail2Ban.

Además de todas las anteriores, mi herramienta favorita es Fail2Ban y WP-Fail2Ban. Si está configurada correctamente (y se necesita un desarrollador o administrador de red para configurarla correctamente), esta combinación puede ser una herramienta muy poderosa para prevenir un ataque de fuerza bruta. Fail2Ban es de código abierto y gratuito, y el plugin WP Fail2Ban tiene una versión pro que parece valer bastante la pena.

No suelo recomendar plugins específicos, pero este es único. Tengo la versión gratuita instalada en todos mis blogs que no están alojados en SiteGround y funciona de maravilla. Estoy considerando seriamente actualizarme a la versión pro.

ADVERTENCIA: Este plugin requiere que Fail2Ban se instale, configure y funcione correctamente en tu servidor. El propio Fail2Ban también tiene un par de requisitos. Este no es un plugin trivial para empezar a trabajar. Si no eres un desarrollador o no estás muy familiarizado con Linux, mejor busca ayuda.

Si tu sitio web está alojado en SiteGround

Si tu sitio web está alojado en SiteGround, sigue tomando tu café tranquilamente. SiteGround tiene un conjunto completo de herramientas ya implementadas que incluyen inteligencia artificial para detectar ataques de fuerza bruta de redes de bots. Esto no significa que tu sitio vaya a ser 100% seguro, nadie puede llegar a ese 100%. Sin embargo, significa que esto es una cosa menos de la que tienes que preocuparte.

Conclusión

Los ataques de fuerza bruta son bien conocidos y bien comprendidos. Hay herramientas que puedes instalar para mitigar los riesgos de que comprometan tu sitio web. Dicho esto, lo mejor que puedes hacer es contratar un hosting como SiteGround, en donde se encarguen de mantener tu web segura para que tú puedas dedicar tu tiempo a hacer otras cosas en tu web que la hagan aún mejor.

¿Qué es CRON y para qué puedes usarlo?

“¿Qué es cron?” Respondo a esta pregunta al menos una vez al mes por parte de personas que no son desarrolladores. Es una gran pregunta. Sin embargo, voy a dividirlo en dos preguntas.

“¿Qué es CRON?”
“¿Qué es WP-CRON?”

¿Qué es CRON?

En esencia, un cron es un “programador basado en el tiempo”. Gestiona tareas que deben realizarse de forma regular y en un momento específico.

Por ejemplo, si quieres que tu blog en WordPress muestre el pronóstico del tiempo en el encabezado, entonces cada mañana debes obtener el pronóstico del tiempo. Sí, puedes contratar a alguien para que inicie sesión cada mañana, obtenga el pronóstico y lo pegue en un widget. Pero un plan mejor es tener un programa que se ejecute todas las mañanas y que conecte con una API para obtener el pronóstico del día y actualizar tu base de datos por ti. El programa que ejecuta tu programa de búsqueda del pronóstico del tiempo se llama CRON. El nombre se deriva de “cronológico”, que se traduce aproximadamente como “en orden de tiempo”.

La mayoría de los sistemas hoy en día tienen algún concepto de cron. Los sistemas basados ​​en Unix (Unix, Linux, macOS, etc.) en realidad tienen una versión de un cron tradicional. Si bien algunos pueden ponerles una interfaz gráfica más amigable, todos se reducen a un programa llamado cron y un archivo llamado crontab.

El programa cron siempre se está ejecutando en segundo plano y cada minuto mira el crontab y averigua si es necesario hacer algo. Si no, vuelve a dormir.

El archivo crontab contiene cuándo se debe ejecutar un programa y qué programa se debe ejecutar. Cada línea representa una tarea diferente. Se ven parecido a esto:

1 0 * * * ~/fetchForcast.sh

Si bien esto puede parecer críptico, todo lo que le dice a cron es que a las 12:01 AM todos los días, ejecute un programa llamado fetchForcast.sh. Aquí te dejo una guía fácil para leer un crontab:

# ┌───────────── minutos (0 – 59)

# │ ┌───────────── horas (0 – 23)

# │ │ ┌───────────── día del mes (1 – 31)

# │ │ │ ┌───────────── mes (1 – 12)

# │ │ │ │ ┌───────────── día de la semana (0 – 6) (Sábado a Domingo;

# │ │ │ │ │                                   7 también es Domingo en algunos sistemas)

# │ │ │ │ │

# │ │ │ │ │

# * * * * * <comando para ejecutar>

  1 0 * * * ~/fetchForcast.sh

Ahora que tienes la clave, es bastante fácil, ¿eh?

Esto es realmente todo lo que hay en un cron tradicional. La mayoría de los hosting como SiteGround te permiten acceder al cron de tu sistema. A veces, tienes que editar el crontab manualmente, pero muchos hosting tienen una interfaz mucho mejor para facilitar su uso. De cualquier manera, tienes la capacidad de ejecutar programas en un momento específico y de forma regular.

¿Qué es WP-CRON?

WordPress hace las cosas de manera un poco diferente. Debido a que muchos autores de plugins necesitaban poder programar las cosas para que sucedan regularmente, y debido a que muchos propietarios de sitios WordPress no saben dónde está su crontab, y mucho menos cómo editarlo, WordPress reinventó el cron.

En esencia, WP-CRON actúa como un cron tradicional en el sentido de que un desarrollador puede “programar” una tarea para que se realice de forma regular. Sin embargo, a diferencia de un cron tradicional, WordPress no tiene un programa que siempre se ejecute en segundo plano en tu servidor. Entonces, para hacerlo, WP-CRON es un proceso que se llama cada vez que se ve una página. En sitios web concurridos, esto funciona bien. Sin embargo, si tu web no es muy visitado, una tarea programada para las 2:00 a.m. podría ejecutarse a las 5:24 a.m. si nadie visita tu web hasta entonces. A veces esto está bien, otras veces es un problema.

Si las tareas que necesitas ejecutar son urgentes y deben ejecutarse a la hora programada, WP-CRON no es el programador que debes utilizar. Si, por otro lado, las tareas que debe realizar pueden ejecutarse “aproximadamente” en el momento en que las programas, entonces WP-CRON está bien. Nuevamente, depende mucho de lo visitado que sea tu sitio web.

¿Cuáles son las alternativas?

Si tienes tareas que son urgentes y tu proveedor de hosting no te permite acceder al cron del sistema, tienes 2 alternativas.

Primero, puedes cambiar a un proveedor como SiteGround que te brinde este acceso. Si esto no te es posible, hay varios servicios gratuitos o de pago que no son más que servicios cron. Ejecutan cron y puedes configurar un trabajo para que se ejecute a través de una interfaz web amigable. El trabajo usaría un programa como curl o wget que conectan a las URL de tu sitio web para activar una tarea específica.

La mayoría de los plugins que requieren un cron te darán la URL a la que conectar si deseas usar un cron externo. Todo lo que tienes que hacer es pegar esa URL, configurar el tiempo para que se ejecute y listo.

CRON es una herramienta de mucho valor y una vez que comprendas cómo trabajar con ella, encontrarás cómo darle más usos. Si tienes plugins, casi te puedo garantizar que tu sitio web tiene trabajos wp-cron en ejecución. Si tienes curiosidad, ve al repositorio de plugins de WordPress y busca cron. Hay plugins que puedes instalar que te mostrarán toda la actividad de WP-CRON en tu sitio web. Pero ten mucho cuidado. Los plugins los establecen por una razón. Si decides que no te gusta uno y lo eliminas, el plugin que depende del trabajo del WP-CRON dejará de funcionar.

Protege tu reputación online protegiendo tu email

protege tu reputación online protegiendo tu email

Tu reputación online es una de tus posesiones más preciadas. Por ello, debes hacer todo lo que esté a tu alcance para protegerla. El problema es que, cuanto más poderosa se vuelve tu reputación online, más personas con malas intenciones quieren tomar el control de ella y usarla para sus propios fines. La forma más fácil de intentarlo es a través del email.

El email comenzó como un sistema de confianza. Confío en el servidor de correo electrónico que utilicé para enviar mi email. Él confía en cualquier número de servidores para ayudar a entregar el email que está en el camino. El destinatario de mi email confía en su servidor de correo electrónico.

Al principio, el email no iba necesariamente de ti > a tu servidor > al servidor de tu destinatario > a tu destinatario. Internet todavía era frágil, por lo que el email se diseñó para entregar el correo electrónico a cualquier servidor y confiar en que ese servidor lo entregaría, lo retendría hasta que pudiera entregarlo o lo entregaría a otro servidor para su entrega final. La confianza, sin embargo, tiene un precio, y una vez que las personas con malas intenciones se dieron cuenta de que el email se basaba en la confianza, empezaron a hacernos pagar ese precio.

Debido a que estas personas se dieron cuenta de que podían enviar emails que parecían provenir de cualquiera en Internet, otros mucho más inteligentes que yo se dieron cuenta de que tenían que hacer algo para proteger nuestro sistema de correo electrónico. Si alguien podía enviarte un email haciéndose pasar por tu madre, y ese email contenía un enlace para mostrarte unos cachorritos, confiabas en que era de tu madre, así que hacías clic en el enlace. Pues bien, así nació el Phishing.

Hoy en día, el email es mucho más seguro. Las personas inteligentes han descubierto formas de crear tecnologías como Sender Policy Framework (SPF) y DomainKeys Identified Mail (DKIM). Estos sistemas ayudan a proteger los emails al proteger quién puede enviarlos para un dominio determinado. Si tienes una configuración de SFP y DKIM, la mayoría de los servidores de correo electrónico los reconocerán y los usarán para asegurarse de que el email que se acaba de recibir que DICE que eres tú, ES en verdad tuyo.

El mayor problema con SPF y DKIM es que no son fáciles de configurar. Para configurarlos, debes comprender cómo funcionan las DNS y cómo crear tipos específicos de registros. Esto ha obstaculizado la adopción generalizada de estos conceptos en el pasado.

Afortunadamente, hoy por hoy, hay buenos proveedores de hosting como SiteGround que los configuran automáticamente. Cuando configuras un dominio en un buen hosting, una de las cosas que hacen no solo es configurar tu sistema de correo, sino también SFP y DKIM para proteger a otros frente al envío de emails fraudulentos que parecen provenir de tu parte.

Si tu proveedor de hosting no configura automáticamente DKIM y SPF por ti, no todo está perdido. Hay muchos buenos tutoriales disponibles y, con algo de tiempo, podrás configurarlos por ti mismo. Incluso hay comprobadores online que puedes utilizar para asegurarte de que lo has hecho correctamente.

No obstante, si tiene mejores cosas que hacer con tu tiempo que averiguar tus DNS y ponerte a revisar tutoriales en internet, puedes alojar directamente tu web en un hosting como SiteGround y olvidarte. Sin más.

Qué es el principio del mínimo privilegio en WordPress

Principio del mínimo privilegio

A los programadores informáticos les gusta dar grandes nombres a las cosas. Así es como terminamos con algo llamado el “Principio de mínimo privilegio” (en inglés “Principle of the least privilege”, también conocido por las siglas POLP) para decir algo tan simple como permitir que los usuarios hagan exclusivamente lo que necesitan hacer.

Eso es todo de lo que estamos hablando aquí. Asegúrate de que todos los usuarios de tu sitio web tengan exactamente los permisos que necesitan y nada más.

Usuarios de la aplicación

El usuario más fácil sobre el que hablar es el usuario de la aplicación de WordPress.

  • Probablemente tengas una o más cuentas de administrador.
  • Puedes tener varias cuentas de “Editor” o “Autor”.
  • Dependiendo de tu sitio web, también puedes tener “suscriptores”.

El principio del mínimo privilegio nos enseña que debes limitar todo lo posible el número de personas que tienen derechos de administrador a únicamente aquellas que lo necesiten y puedan demostrar que lo necesitan. En la mayoría de los sistemas, esto generalmente significa que necesitas un administrador principal y un administrador de respaldo en caso de que algo le suceda al principal, como si olvidan su contraseña el mismo día que descubren que su mecanismo de recuperación de contraseña no funciona. 🙂

Cualquier otra persona que solicite privilegios de administrador debería demostrar que no puede realizar su trabajo diario sin ellos. Sí, es un inconveniente tener que pedirle a alguien que haga algo por ti, pero limitar las cuentas de administrador limita el daño que se puede hacer accidentalmente a tu sistema.

El editor y los autores tienen menos oportunidades de hacer daño, por lo que no tienes que ser tan estricto con ellos, pero aun así, todos los que tienen privilegios en el sistema deberían tener una razón para tener ese privilegio.

Usuarios de la base de datos

El siguiente “usuario” que debemos analizar es el usuario de tu base de datos. Cada sitio en WordPress tiene un usuario y una contraseña que utilizas para acceder a la base de datos que ejecuta WordPress. El principio del mínimo privilegio nos enseña que ese usuario debe tener la menor cantidad de privilegios necesarios para realizar su trabajo.

Desafortunadamente, dado que los plugins usan este usuario para crear y eliminar tablas, datos, etc., este usuario debe tener un poder considerable. Aún así, este usuario no necesita ser “todopoderoso”. Hay dos cosas importantes que debes verificar sobre el usuario que utilizas para acceder a tu base de datos. (Si no sabes cómo verificarlos, contrata a un desarrollador, esta parte en particular es bastante técnica).

  • El usuario de tu base de datos no debería poder otorgar privilegios a otros usuarios. No hay ningún escenario en WordPress en el que el usuario de la base de datos deba crear nuevos usuarios u otorgarles privilegios.
  • El usuario de tu base de datos no debería tener acceso a ninguna base de datos que no sea la que está adjunta a tu sitio de WordPress. Este usuario no debería poder acceder a los datos o realizar modificaciones en NINGUNA otra base de datos en el servidor.

Acceso a los paneles de control

Finalmente, los proveedores de hosting premium como SiteGround tienen paneles de control muy poderosos que te permiten controlar las cosas que hay alrededor de tu sitio web, como el email y el rendimiento. Muchos de estos controles pueden causar graves daños a tu sitio si se utilizan de forma incorrecta o maliciosa.

SiteGround y otros proveedores de hosting te permiten añadir “colaboradores” a las cuentas. Los colaboradores facilitan que alguien ayude a resolver problemas o realice tareas de mantenimiento para el propietario del sitio web. Esta es una manera mucho mejor de permitir que un desarrollador te ayude que compartir tu nombre de usuario y contraseña.

Revisa el principio del mínimo privilegio con regularidad

Ya sean tus usuarios de WordPress o tus colaboradores del Panel de control, debes revisar periódicamente quién tiene un acceso avanzado a tu sistema. Como mínimo, una vez al mes es una buena idea revisar y evaluar a los usuarios que tienen accesos avanzados y asegurarse de que aún lo requieren. Cuando no lo hagan, cambia sus permisos o elimínalos por completo hasta que necesites que vuelvan a tener ese nivel.

Estas auditorías no tomarán mucho tiempo, al contrario, podrían ahorrarte muchas horas de recuperación ante desastres si una cuenta olvidada se ve comprometida y se usa para dañar tu web, sin mencionar el daño que causará a tu reputación online. Si estás buscando proteger aún más tu sitio web, échale un vistazo a este artículo sobre cómo proteger tu WordPress en 3 sencillos pasos.

Recuerda, la reputación crece lentamente como un cocotero y cae rápidamente como un coco.

Archiva tus fotos de Instagram en tu web WordPress

fotos_instagram_wordpress

Instagram se ha convertido en una de las herramientas indispensables para los especialistas en marketing de todo el mundo. Todo, desde contratar personas influyentes para vender sus productos, hasta publicar historias sobre cómo se hacen las cosas o cómo llegaron a donde están, si se puede expresar en una foto, Instagram es su hogar. Artículos recientes en revistas de marketing han declarado rotundamente que Instagram es “La red social”.

Pero Instagram, como todas las demás redes sociales, es efímera. El contenido tiene una vida útil muy corta en las redes y, dado el tiempo que se necesita para crear fotos de Instagram que sean excelentes, es una pena.

No es necesario que una foto pierda su jugo una vez ha caído en el olvido en el feed. Dale una nueva vida publicándola en tu sitio web WordPress. Archiva todas tus fotos de Instagram en tu web y enlázalas dándoles vida tanto dentro como fuera de Instagram.

Esto ni siquiera requiere un plugin. Todo lo que necesitas son tres cosas.

  1. Una cuenta de Instagram
  2. Un sitio web con WordPress
  3. Una cuenta If This Then That (ITTT).

Si estás leyendo esto, supongo que ya tienes los dos primeros. Sin embargo, es posible que no hayas oído hablar de ITTT. ITTT ha estado conectando servicios web durante mucho tiempo. Puedes conectar un sitio web WordPress a:

  • Twitter
  • Instagram
  • Pinterest
  • Reddit
  • Telegram
  • Youtube
  • Slack
    …¡y más! Todo clicando en unos pocos botones dentro de un sitio web.

Si bien Instagram es una integración de Instagram → WordPress, hay varias integraciones que recogen el contenido de WordPress y lo comparten con otros servicios. Por ejemplo, puedes notificar en Twitter y en un canal de Slack que tienes contenido nuevo en tu web automáticamente.

Dado que la mayoría de las integraciones de ITTT están desarrolladas por usuarios, generalmente hay varias integraciones para cualquier combinación determinada que desees, cada una con un conjunto de funciones único que puedes aprovechar. Por ejemplo, una de las integraciones de WordPress → Twitter publicará el título de tu última publicación, un enlace a ella y un enlace a tu página de biografía en WordPress cada vez que publiques.

Una advertencia, para las integraciones que se publican en WordPress, se te pedirá un nombre de usuario y contraseña. ITTT almacena estos credenciales en su base de datos. Si bien nunca han informado de una violación de datos, si lo hacen, deberás asegurarse de cambiar la contraseña de esa cuenta de inmediato. Se recomienda encarecidamente que no utilices una de sus cuentas de administrador para esto, el nivel de Editor debería ser suficiente, posiblemente incluso de Autor.

No pierdas tu valioso contenido en la despiadada línea del de tiempo online. Archiva, e incluso vuelve a publicar tus preciosas imágenes en otro lugar utilizando WordPress y If This Then That.

PHP 7.4 – Novedades y características

PHP 7.4 ya está disponible en todos los servidores de SiteGround y hemos invitado a nuestro gran amigo Cal Evans, quien también es una de las personas más admiradas en la comunidad PHP, para que nos cuente cuáles son las mejores novedades de la nueva versión de PHP.

Ya ha vuelto esa época del año. Esa época del año en que Papá Noel se pone los PHPantalones rojos, con el resto de su traje, y que con su trineo reparte regalos a todos los desarrolladores que han sido buenos y han estado esperando la última versión de PHP. Eché un rápido vistazo en el saco de Papá Noel y aquí están mis tres características principales favoritas que nos trae PHP 7.4.

Continue reading “PHP 7.4 – Novedades y características”