Seguridad

(New) WordPress in Paranoid Mode!

Quizás recuerdes, ya hace algunos años, una PoC que hicimos sobre cómo proteger WordPress en modo paranoico donde, además de proteger el login del usuario con el plugin de Latch para WordPress y hacer un hardening a WordPress y a nivel del sistema operativo bloqueando el acceso SSH con el plugin de Latch para UNIX, se hacía una protección a nivel de base de datos con la creación de distintos triggers que permiten proteger las operaciones INSERT, UPDATE & DELETE.

Este trabajo se plasmó en diferentes conferencias dónde Chema Alonso habló sobre ello y la importancia que tiene el controlar, a través de un segundo factor de autorización, la modificación de los datos o de la información. En la charla “My WordPress in Paranoid Mode”, Chema, hablaba de ello en Open Expo en el año 2016:



Figura 2: My WordPress in Paranoid Mode

Además, se puede seguir teniendo acceso al repositorio del año 2016 a través de su enlace en Github, aunque actualmente no es funcional debido a dependencias de alguna librería para MySQL. Esto supuso un reto para nosotros, ya que queríamos hacer que las dependencias desapareciesen. 

En la nueva versión de WordPress in Paranoid Mode se ha conseguido, ya que hemos creado una arquitectura dónde se mejora en rendimiento y ‘delays’ respecto a la prueba de concepto primera. Ya no dependemos de la red, por lo que la latencia es disminuida drásticamente.

Para los más técnicos, os dejamos un pequeño workshop, de los 11PathsTalks dónde os explicamos cómo funciona WordPress in Paranoid Mode!  En este workshop se habla a bajo nivel de la solución propuesta y de cómo cubre la necesidad de tener el control de la edición y modificación del dato. 

Esto ya permitía crear diferentes esquemas de dobles autorizaciones o flujos de aprobaciones que permiten controlar cuándo y cómo se van a modificar los datos o bajo qué circunstancias, además de lo que ya podías hacer de proteger el Login de WordPress con Latch.

A modo de resumen y con el objetivo de mostrar las novedades os comentamos cómo funciona este (new) WordPress in Paranoid Mode. Para proteger la base de datos, se crean tres operaciones en la aplicación de Tu Latch que permiten el control de diferente manera:

  • Read-Only: Este es el modo más restrictivo de todos. Cuando el pestillo está puesto en el en modo solo lectura, ningún usuario puede hacer login en WordPress. Únicamente se permite la lectura, por lo que no es posible realizar cambios en la base de datos (insertar, actualizar o eliminar).
  • Edition: En este modo se protege la edición (tabla wp_posts), por lo que no se permite la creación de nuevos posts, ni la edición, ni la eliminación.
  • Administration: Este modo permite proteger la creación, actualización o eliminación de usuarios, ya que actúa para proteger la tabla wp-users.

Cuando se desencadena un trigger, se comprueba el estado de Latch para ver si se tiene permitida la operación. Esto implica realizar una llamada al servicio de Latch cada vez que un trigger salta.

Ahora, hemos creado una nueva revisión de esta PoC, donde se han incluido algunas mejoras para adaptarlo a los flujos de trabajo actuales y se han optimizado algunos apartados. El mayor cambio, optimizando tiempos de respuesta y mejorando la eficiencia en el manejo de datos.

  • En lugar de realizar una petición al servicio de Latch cada vez que se activa el trigger, se ha implementado el uso de los WebHooks que ofrece Latch. Esto ha sido una mejora notable para solventar problemas de latencia y de rendimiento.
  • El agente conoce el estado de los pestillos (y se actualizan a través del WebHook). Esto permite mejorar la rapidez de las consultas para ver si se tiene al acceso a la creación, modificación o eliminación de la tabla de WordPress que se está protegiendo.
  • Se ha desarrollado una GUI que te va guiando por distintos pasos para la instalación del agente en local y en remoto.

Para que la instalación se realice correctamente, hay algunos requisitos:

  • Conexión con el motor de base de datos que contiene la base de datos de WordPress a proteger: Esta conexión debe hacerse con el usuario root. Esto es importante ya que se debe realizar la creación de la nueva base de datos que tendrá el estado de los pestillos por operación almacenados, así como la creación de un usuario para la gestión y consulta de esta tabla.
  • Conexión con la aplicación de Latch: Se debe disponer de una cuenta de desarrollador de Latch para crear la aplicación y obtener su ID de aplicación y su secreto. De esta manera, el instalador creará las operaciones correspondientes (read-only, edition, administration) y las almacenará en la base de datos.
  • Instalación del agente: El agente se ejecuta en segundo plano en una máquina con acceso desde internet y que será validado como el WebHook de la aplicación de Latch. Desde la GUI se puede instalar el agente en la máquina local o en una máquina remota a través de SSH. La máquina tiene que tener las siguientes dependencias instaladas: python3, python3-pip y gunicorn. Las pruebas de instalación de han ejecutado sobre la versión 3.12 de Python.

Tienes el nuevo código de WordPress in Paranoid Mode disponible en el repositorio de GitHub latch-plugin-wipm.


Justo en el vídeo de arriba te enseñamos funcionamiento del instalador, que como se puede ver es realmente sencillo y “friendly” para que lo puedas usar en tus fortificaciones de WordPress in Paranoid Mode! … como debe de ser.
Por último, como sabéis, tenemos el Latch Hack Innovation Contest para que puedas hacer integraciones tan espectaculares como esta y ganarte un premio. En este artículo del blog puedes leer todos los detalles para que te lleves el premio: “Tu Latch “Hack Your Innovation Contest”: Haz un PoC & Hack por 1.000 €
<->Saludos y…->

Happy Coding!

Powered by WPeMatico

Gustavo Genez

Informático de corazón y apasionado por la tecnología. La misión de este blog es llegar a los usuarios y profesionales con información y trucos acerca de la Seguridad Informática.