Hablamos mucho de que la seguridad de tu sitio web de WordPress no es una tarea fácil. Necesita una supervisión constante y vigilante por tu parte, y la tarea puede ser intimidante.

En situaciones en las que tienes que supervisar la seguridad de varios sitios web, la API de Kinsta puede ser una de tus herramientas clave. Esto es especialmente cierto cuando gestionas varios sitios no conectados. En estas situaciones, querrás la automatización y la visibilidad que puede darte la API.

En este post, exploraremos el uso de la API de Kinsta para mejorar la seguridad. Nos centraremos principalmente en el bloqueo de IPs y la supervisión de sus efectos mediante los distintos endpoints disponibles. Antes, sin embargo, debemos considerar la difícil tarea de la gestión de la seguridad del sitio.

Los retos de gestionar la seguridad de tu sitio web

Al ser el sistema de gestión de contenidos (CMS) más popular del planeta, WordPress es un objetivo prioritario para hackers y actores malintencionados. Por esta razón, WordPress se centra en gran medida en su seguridad básica.

Aunque las cifras parecen buenas sobre el papel — alrededor del tres por ciento de los sitios tienen algún tipo de infección o recursos bloqueados — esto no significa que debas relajarte. De hecho, hay muchas amenazas a tener en cuenta cuando se trata de tu sitio web de WordPress:

Dada la compleja variedad de ataques, gestionar la seguridad de un solo sitio de WordPress puede ser un reto considerable. Sin embargo, cuando eres responsable de varios sitios, esa complejidad y alcance se multiplican. Una red de sitios necesitará siempre un enfoque presente y proactivo de la supervisión de la seguridad. Esto es aún más difícil si gestionas varios sitios sin ninguna conexión.

Por ello, una forma eficiente y eficaz de supervisar y asegurar cada uno de los sitios que administras tendrá un valor enorme. Kinsta puede proporcionar esto a cada cliente.

Cómo la API de Kinsta puede mejorar la seguridad de tu sitio web

La sección Información del sitio del panel de MyKinsta. Los detalles básicos muestran el centro de datos del sitio, los detalles del entorno, la ruta del sitio, la dirección IP, la versión de WordPress, el nombre del entorno y los recursos disponibles. También hay detalles sobre el acceso SFTP/SSH y las credenciales.
El panel MyKinsta.

Independientemente del plan que tengas, todos los clientes de Kinsta tienen acceso a toda la API de Kinsta. Esta potente herramienta te permite interactuar con tus sitios de muchas formas programáticas. Hay disponibles muchos endpoints diferentes que hacen ‘hook’ en aspectos de nuestro alojamiento, lo que significa que tienes una forma sólida de gestionar la seguridad de todos tus sitios.

La API de Kinsta te permite automatizar varias tareas relacionadas con la seguridad, y hay muchos endpoints relevantes:

Aunque puedes encontrar estas herramientas en el panel de control de MyKinsta, hay muchas razones por las que también ofrecemos una opción programática. En muchos sentidos, la API de Kinsta te ofrece varias ventajas sobre el panel de control:

  • Automatización. Puedes automatizar las tareas de seguridad escribiendo scripts o utilizando herramientas de terceros. Esto puede ahorrar tiempo y reducir los errores manuales.
  • Operaciones en lote. La API te permite realizar tareas de seguridad en varios sitios a la vez. Si formas parte de una agencia o te ganas la vida desarrollando sitios web en WordPress, este aspecto te resultará útil.
  • Integración. Si ya utilizas un conjunto de herramientas de seguridad que te gustan, la API de Kinsta te permitirá integrarlas en tu configuración. Esto te permite transformar tu provisión de seguridad en algo único para tu sitio.

Pero basta de hablar — vamos a entrar en los entresijos del uso de la API de Kinsta para trabajar con direcciones IP. Empezaremos con tareas sencillas y veremos las aplicaciones avanzadas más adelante.

Implementar restricciones de IP con la API de Kinsta

Una de las formas más sencillas de reforzar la seguridad de tu sitio web es mediante restricciones de IP. Esto te permite cortar la cabeza de la serpiente y detener por completo el acceso a tu sitio. La principal ventaja es la mitigación de los ataques de fuerza bruta.

Aunque el panel de MyKinsta te permite trabajar con tu lista de bloqueo, la API de Kinsta tiene mayor flexibilidad si la necesitas. Consideremos un escenario en el que eres una agencia de WordPress que gestiona varios sitios de clientes en uno de nuestros planes de Agencia Kinsta.

Utilizar la API de Kinsta para restringir direcciones IP

En primer lugar, debes tener una lista de direcciones IP que quieras restringir. Nuestra documentación contiene algunos métodos para ello, como el uso de analíticas para localizar direcciones que realizan muchas peticiones sin caché en un breve espacio de tiempo.

El panel de analítica del alojamiento MyKinsta muestra el rendimiento del componente de caché. Un gráfico de barras apiladas muestra la tasa de aciertos de la caché a lo largo del tiempo, con barras naranjas que representan las desviaciones de la caché, que representan la mayor parte del área del gráfico. Un gráfico circular desglosa los componentes de la caché. Una pequeña tabla muestra la principal desviación de la caché, que es la ruta wp-cron.php.
La pantalla de analítica dentro del panel de MyKinsta.

A partir de aquí, puedes empezar a utilizar la API de Kinsta para restringirlas. En primer lugar, debes utilizar el endpoint Environments para obtener una lista de sitios. Esto incluirá tanto tus sitios en producción como los de staging:

const siteId = 'YOUR_site_id_PARAMETER';

const resp = await fetch(
  `https://api.kinsta.com/v2/sites/${siteId}/environments`,
  {
    method: 'GET',
    headers: {
      Authorization: 'Bearer <YOUR_TOKEN_HERE>'
    }
  }
);

const data = await resp.text();
console.log(data);

A continuación, puedes utilizar el endpoint Denied IPs para hacer una petición GET que devuelva tu lista de bloqueo actual en formato JSON. La respuesta incluirá una array de objetos IP bloqueados:

{
- "environment": [
"id": "abc123",
"ip-list": [
"192.168.1.1",
]
    }
}

La solicitud asociada PUT te permitirá añadir una IP a tu lista de bloqueo, para lo cual tendrás que especificar el ID del entorno:

const resp = await fetch(
  `https://api.kinsta.com/v2/sites/tools/denied-ips`,
  {
    method: 'PUT',
    headers: {
      'Content-Type': 'application/json',
      Authorization: 'Bearer <YOUR_TOKEN_HERE>'
    },
    body: JSON.stringify({
      environment_id: '54fb80af-576c-4fdc-ba4f-b596c83f15a1',
      ip_list: ['127.0.0.1']
    })
  }
);

const data = await resp.json();
console.log(data);

Una incorporación correcta devolverá un código de respuesta 200, junto con result: null dentro de un archivo JSON. Podrías automatizar aún más todo el proceso con un script o herramienta para ejecutarlo cada vez que tengas que volver a actualizar la lista de bloqueo.

Supervisar la actividad del sitio web con la API de Kinsta

Implementar medidas de seguridad preventivas como las restricciones de IP es excelente, pero también es crucial supervisar la actividad de tu sitio para detectar posibles amenazas a la seguridad. Puedes vigilar una serie de indicadores clave para cada uno de tus sitios:

  • Patrones de tráfico inusuales o picos de volumen
  • Frecuencia de intentos fallidos de inicio de sesión
  • Comportamiento general sospechoso de los usuarios
  • Rendimiento incoherente del sitio o patrones inusuales de inactividad.

El panel de MyKinsta puede enviarte notificaciones y alertas en tiempo real sobre muchos aspectos de tu sitio. Esto puede ayudarte a entrar en acción cuando haya un posible problema de seguridad.

Una notificación de finalización de la monitorización de Kinsta APM desde el panel de MyKinsta. La notificación indica que la monitorización ha finalizado, y señala durante cuánto tiempo estuvo activada. También hay un botón negro para ver los resultados. En la parte inferior hay un texto de advertencia sobre cómo la herramienta APM podría afectar al rendimiento del sitio.
Una tarjeta de notificación en el panel de MyKinsta.

La API de Kinsta tiene varios endpoints que te permiten recuperar y consultar los registros de tu sitio y mucho más. Si lo deseas, también podrás configurar sistemas automatizados de supervisión y alerta que se adapten a tus necesidades.

Encontrar actividad maliciosa con los registros y métricas del sitio

Consideremos un escenario en el que tu agencia necesita supervisar la actividad sospechosa en el sitio de un cliente individual. Hay algunos enfoques que puedes adoptar para la supervisión proactiva cuando no dispongas de una notificación como punto de partida.

De nuevo, tendrás que obtener tu lista de entornos, ya que los endpoints requieren un ID. Una vez que lo tengas, puedes echar un vistazo al endpoint logs. La solicitud tiene dos campos obligatorios:

  • file_name acepta una cadena que contenga los registros error, access, o kinsta-cache-perf.
  • lines te permite especificar el número de líneas que la solicitud devuelve del registro, que debe ser inferior a 20.000.

Esto puede ayudarte a averiguar si hay algún motivo de preocupación. Los datos más exhaustivos, gracias al endpoint metrics, pueden ayudar a rellenar los espacios en blanco. Las métricas que decidas observar dependerán de la situación concreta.

Por ejemplo, puedes comprobar el ancho de banda para asegurarte de que no estás siendo víctima de un ataque coordinado a un sitio. Los parámetros de consulta te permiten establecer un punto de inicio y de finalización del marco temporal, así como un intervalo de tiempo. El JSON devuelto te proporciona detalles sobre el ancho de banda del sitio concreto:

{
  "app": {
    "id": "54fb80af-576c-4fdc-ba4f-b596c83f15a1",
    "display_name": "my-app",
    "metrics": {
      "timeframe": {
        "start": "1679587045511",
        "end": "1679587045511"
      },
      "bandwidth": [
        {
          "time": "1679587045511",
          "value": "value"
        }
…

Hay muchas otras métricas disponibles, como el número de peticiones HTTP por minuto y el tiempo medio de respuesta. Tu trabajo consiste en examinar estas métricas y los datos de los registros para identificar cualquier actividad sospechosa o amenaza potencial para la seguridad.

Si necesitas un sistema de visualización, aquí es donde Kinsta APM puede resultarte útil:

La herramienta de monitorización en tiempo real Kinsta APM muestra datos de rendimiento durante un periodo determinado. El gráfico general de tiempo de transacción muestra barras para los tiempos de transacción de PHP, MySQL, Redis y Externo cada día. Una tabla en la parte inferior enumera las transacciones PHP más lentas, su duración total, duración máxima, duración media y tasa por minuto.
La herramienta Kinsta APM, que muestra el tiempo total de transacción durante un periodo determinado.

Combinando todas las herramientas de Kinsta — la API, el panel MyKinsta y APM — puedes detectar y responder rápidamente a posibles problemas de seguridad y minimizar el riesgo de daños permanentes a tu sitio y a su reputación.

Automatizar la mejora de la seguridad mediante la API de Kinsta y MyKinsta

Automatizar tu flujo de trabajo de seguridad puede dotar a tus respuestas de mayor eficacia y movilización. Aunque la supervisión proactiva es la forma ideal de mantener tus sitios seguros, a veces es necesario un enfoque reactivo.

Esta es otra área en la que las notificaciones automatizadas resultan útiles. Una vez que recibas una notificación de Kinsta, puedes ponerte en acción para resolver el problema. Sin embargo, a diferencia de otras tareas de seguridad, esta vez la API de Kinsta no forma parte del triaje.

En su lugar, MyKinsta será tu guía. La documentación de Kinsta incluye las notificaciones de monitorización del sitio que tienes a tu disposición. Hay muchas disponibles, como el tiempo de inactividad del sitio, errores de DNS y mucho más.

En el momento en que identifiques una amenaza en tu sitio, puedes recurrir a la API de Kinsta para que se encargue de los usuarios maliciosos. Puede ser añadiendo IPs a una lista de bloqueo o comprobando las copias de seguridad que tienes en caso de que ocurra lo peor.

Hay un par de peticiones GET para ayudarte a descubrir qué copias de seguridad hay. Si te falta alguna, puedes hacer una petición POST para iniciar una copia de seguridad manual. Sólo requerirá el ID del entorno y un nombre para la copia de seguridad:

const envId = 'YOUR_env_id_PARAMETER';
const resp = await fetch(
  `https://api.kinsta.com/v2/sites/environments/${envId}/manual-backups`,
  {
    method: 'POST',
    headers: {
      'Content-Type': 'application/json',
      Authorization: 'Bearer <YOUR_TOKEN_HERE>'
    },
    body: JSON.stringify({
      tag: 'my-awesome-backup'
    })
  }
);

const data = await resp.json();
console.log(data);

La API de Kinsta también te permitirá restaurar una copia de seguridad. De hecho, podrías concebir una estrategia que recupere los registros de tu sitio, evalúe tus métricas, haga una copia de seguridad según tus parámetros y reglas específicos, bloquee las IP maliciosas entrantes y luego restaure una copia de seguridad en un momento en que los ataques se calmen.

Supervisa continuamente la actividad del sitio e itera sobre tu proceso de seguridad basándote en los conocimientos obtenidos de la API de Kinsta y MyKinsta.

Automatizando tu proceso de escalado de seguridad, puedes responder a las amenazas más rápidamente y minimizar el impacto potencial de los incidentes de seguridad en tu sitio.

Buenas prácticas para aplicar medidas de seguridad basadas en la API

Siempre que utilices una API, estarás exponiendo aspectos de tu sitio a la web abierta. Por ello, es imprescindible seguir algunas prácticas típicas y aceptadas para garantizar la seguridad e integridad de tu sitio y de tus datos.

Hay algunas directrices clave que debes tener en cuenta. En primer lugar, siempre que accedas a una API debes utilizar métodos de autenticación seguros. Puede ser una clave API, tokens OAuth o cualquier otra cosa. Kinsta proporciona un endpoint de autenticación de clave API para este propósito:

const resp = await fetch(
  `https://api.kinsta.com/v2/validate`,
  {
    method: 'GET',
    headers: {
      Authorization: 'Bearer <YOUR_TOKEN_HERE>'
    }
  }
);

const data = await resp.text();
console.log(data);

Recuerda que no debes exponer tus credenciales de la API en el código del lado del cliente o en repositorios públicos de control de versiones. Aquí es donde tendrías que investigar qué ofrece tu lenguaje de programación preferido. Por ejemplo, Python llama desde un módulo constants.py, y PHP utiliza OpenSSL y otros módulos para proteger la información sensible.

También hay que tener en cuenta un par de consideraciones importantes:

  • Manejo de datos. Cuando recuperes datos sensibles a través de la API de Kinsta, asegúrate de que los manejas y almacenas de forma segura. También deberás seguir las prácticas aceptadas para la encriptación de datos, el control de acceso y el cumplimiento de cualquier normativa sobre privacidad.
  • Pruebas y actualizaciones periódicas. Tu proceso de pruebas debe ser continuo, y esto es algo que también puedes conseguir con la API de Kinsta. Estas pruebas y actualizaciones constantes y continuas garantizan que tu sitio y su seguridad sigan siendo eficaces frente a las amenazas en evolución.

Por último, seguir el principio del menor privilegio es casi obligatorio cuando estableces cualquier nivel de acceso para tu equipo o servicios de terceros. En pocas palabras, sólo concede el nivel mínimo de acceso que cada usuario o servicio necesite para realizar tareas. Es más, revisa y revoca periódicamente cualquier permiso innecesario.

Informes sobre restricciones de IP y supervisión de la actividad

Para la gestión de la seguridad del sitio del cliente, es una buena práctica — y tan importante como crucial — proporcionar informes periódicos y transparentes sobre la eficacia de tu estrategia. Tus clientes merecen estar al tanto de los pasos que das para proteger sus sitios y de los resultados de tus esfuerzos. Esto ayuda a generar confianza y a demostrar el valor de lo que ofreces.

Por ello, debes asegurarte de que los informes que entregues proporcionen a tus clientes tanta información como sea posible. Kinsta te permite extraer información de una serie de métricas y datos de cada uno de los sitios:

  • El número de direcciones IP bloqueadas.
  • Tendencias de actividad sospechosa, como intentos fallidos de inicio de sesión o patrones de tráfico inusuales.
  • El rendimiento del sitio y las métricas de tiempo de actividad. Pueden ser indicativos de posibles problemas de seguridad.

Por supuesto, tienes mucho más a tu disposición. Aun así, es importante presentar estos datos de la mejor manera para tus clientes. Aquí tienes algunos consejos sobre lo que debes incluir:

  • Las medidas que has tomado en respuesta a las amenazas identificadas, como copias de seguridad del sitio o parches de seguridad.
  • Utiliza herramientas de visualización de datos para presentar información clara, accesible y comprensible sobre la seguridad de un sitio. Los gráficos, tablas y cuadros de mando pueden ayudar a tus clientes a ponerse al día sobre la disposición de seguridad actual, y sobre si tus esfuerzos son eficaces.
  • Debes procurar proporcionar contexto y explicaciones para los datos que presentes. Es un error suponer que tus clientes tienen un profundo conocimiento técnico de los conceptos de seguridad. En lugar de eso, utiliza un lenguaje sencillo y proporciona ejemplos que les ayuden a comprender la importancia y gravedad de las métricas y tendencias sobre las que informas.

En general, ofrece transparencia sobre cualquier reto o limitación que encuentres en la seguridad del sitio. En el caso de amenazas o problemas difíciles, es una buena idea ser franco al respecto y explicar lo que estás haciendo para mejorar.

En este punto puede ser útil ofrecer recomendaciones para mejorar la seguridad. Éstas procederán de tus percepciones y análisis. Por ejemplo, puedes incluir sugerencias sobre medidas de seguridad adicionales, como implantar la autenticación de dos factores o actualizar plugins obsoletos.

Resumen

La API de Kinsta tiene muchas posibilidades para realizar multitud de tareas en tu sitio. Sin embargo, cuando se trata de seguridad, es una forma eficaz de mantener a salvo tu sitio y a tus usuarios. Te permite automatizar tareas como la recuperación de registros, la comprobación de actividad inusual y el bloqueo automático de IPs.

Nos gusta el enfoque convincente y potente de conectar la API con otras aplicaciones y herramientas. De este modo, puedes disponer de un método programático completo para proteger tu sitio. Junto con las opciones de visualización a través de la APM de Kinsta, tu sitio puede permanecer seguro durante mucho tiempo.

¿Cómo te gustaría utilizar la API de Kinsta para gestionar la seguridad de tu sitio? Por favor, ¡comparte tus opiniones y puntos de vista en la sección de comentarios más abajo!

Jeremy Holcombe Kinsta

Content & Marketing Editor at Kinsta, WordPress Web Developer, and Content Writer. Outside of all things WordPress, I enjoy the beach, golf, and movies. I also have tall people problems ;).