La seguridad de tu sitio web de WordPress es un aspecto que no puedes ignorar, a menos que quieras exponer los datos de tus clientes y la seguridad online. Es más, el mantenimiento del cumplimiento de las normas y reglamentos pertinentes también debería ser una prioridad. De hecho, el control de la seguridad y el cumplimiento suelen ir de la mano, con la misma importancia.

Sin embargo, poner en práctica ambas cosas puede ser un reto, sobre todo cuando tienes muchos sitios que gestionar. Sin embargo, con la multitud de endpoints de la API de Kinsta, tienes acceso programático a nuestro alojamiento seguro de sitios, que puedes automatizar aún más y con el que puedes trabajar.

En esta entrada exploraremos cómo puedes aprovechar la API de Kinsta para reforzar la seguridad de tu WordPress y cómo puedes ir potencialmente más allá de lo que te ofrece el panel de control de MyKinsta.

También abordaremos la estrategia de cumplimiento de datos de tu sitio. Una vez que exploremos las capacidades de la API de Kinsta, aprenderás de forma práctica cómo integrar la monitorización de la seguridad y el cumplimiento normativo en tu flujo de trabajo de WordPress.

Comprender la monitorización continua de la seguridad y el cumplimiento

Tu sitio web tiene un valor inmenso para determinados grupos. Los usuarios malintencionados no ven tus productos y servicios — ven datos y oportunidades de obtener beneficios. En 2022, SiteLock descubrió que un sitio medio sufría unos 100 ataques diarios.

Por ello, es vital monitorizar tu seguridad de forma continua, además de comprobar tu nivel de cumplimiento. La intencionalidad maliciosa es dinámica, lo que significa que necesitas evaluar, rastrear y abordar tus disposiciones de seguridad sobre una base en constante evolución. Por ejemplo, el Top 10 de OWASP supervisa qué tipos de ataques maliciosos son los más populares, y esta lista cambia en cada encuesta.

También hay muchas otras razones por las que te conviene implantar una monitorización continua de la seguridad:

  • Puedes ser proactivo a la hora de identificar y responder a posibles amenazas.
  • La monitorización periódica significa que la seguridad de tu sitio sigue siendo sólida y centrada en la protección.
  • Puedes garantizar un cumplimiento coherente y actualizado de las normas típicas del sector y de las directrices de protección de datos.
  • A nivel básico, puedes reducir el riesgo de que se «filtren» datos de tu sitio y se erosione tu reputación.

Para los sitios web de WordPress, tu estrategia de monitorización y cumplimiento tiene una importancia y unos retos aún mayores:

  • WordPress ofrece una seguridad inherente, pero la plataforma tiene una diana en la espalda, gracias a su cuota de mercado.
  • Por supuesto, también hay que vigilar la complejidad de los ecosistemas de temas y plugins.
  • Si gestionas varios sitios, debes asegurarte de que existe una estrategia de supervisión coherente y fiable.
  • Integrar perfectamente la supervisión de la seguridad en los flujos de trabajo de desarrollo existentes

La buena noticia es que puedes integrar fácilmente la monitorización de la seguridad en tu flujo de trabajo actual y combinarla con las notificaciones de actualizaciones de WordPress. Mejor aún, puedes controlarlo a través de la API de Kinsta.

Breve introducción a la API de Kinsta

Para los clientes de Kinsta, la API representa la mejor forma de automatizar y aprovechar muchos aspectos de tu servidor de alojamiento. Ofrecemos muchos endpoints para todo tipo de tareas. Por ejemplo, puedes gestionar sitios, usuarios y dependencias como temas de sitios y plugins. Además, puedes obtener registros y acceder a las mismas métricas de la aplicación desde el panel de control de MyKinsta:

Una vista general del panel de control de MyKinsta. Muestra la actividad reciente, como la activación del modo de mantenimiento, la activación de AFM y las notificaciones de pago del plan de alojamiento de WordPress. También se resumen las visitas y el uso de los sitios PHP y WordPress. La barra lateral izquierda proporciona navegación a varias secciones de la aplicación.
El panel de MyKinsta.

Por supuesto, integrar la API de Kinsta en tu flujo de trabajo de WordPress será pan comido, teniendo en cuenta nuestro especial interés en el alojamiento de WordPress. Más adelante descubrirás cómo hacerlo. Ofrecemos una forma proactiva y programática de gestionar tu monitorización de seguridad para las principales funciones de WordPress. Esto incluye las actualizaciones de tu sitio, el registro y mucho más.

Gran parte de esto encaja con aquello en lo que debes centrarte cuando se trata de la seguridad de WordPress. Veamos esto a continuación.

Prácticas típicas de WordPress para la seguridad y el cumplimiento

En esencia, WordPress es una plataforma sólida y segura, gracias a su código base maduro y a su estricto cumplimiento de las prácticas de seguridad. Para el propio sistema de gestión de contenidos (CMS), dispone de formas oficiales de informar sobre vulnerabilidades:

De hecho, también hay una forma de que los usuarios finales informen sobre los temas — un botón destacado en la página del repositorio:

En una página del Directorio de Temas de WordPress aparece la pregunta "¿Éste tema tiene problemas importantes?", con opciones para Informar sobre el tema o consultar el foro de soporte para obtener ayuda. También hay una sección "Traducciones" más abajo que muestra la opción de traducir "Twenty Twenty-Four" a varios idiomas.
El botón Informar sobre este tema de la página de un tema en WordPress.org

Está claro que WordPress está muy interesado en la seguridad, y hay algunas áreas clave en las que se centra el código base:

  • Actualizaciones periódicas. WordPress publica actualizaciones periódicas para su software central, que incluyen parches para solucionar problemas de seguridad y rendimiento. Hay formas automatizadas de actualizar el core, los temas y los plugins desde el panel de control de WordPress
  • Fuertes controles de acceso. WordPress incluye un completo conjunto de funciones de usuario que te permiten aplicar controles de acceso definidos a distintos usuarios. También hay una herramienta integrada de refuerzo de contraseñas y controles para hacer y gestionar comentarios.
  • Garantizar la seguridad del alojamiento. Hay muchas referencias al alojamiento seguro en toda la documentación de WordPress. La expectativa es que tu alojamiento ofrezca el mismo deber de cuidado a tu seguridad que su equipo central ofrece al CMS.

Para ayudarte a supervisar algunas de estas facetas, puedes utilizar la pantalla Salud del Sitio dentro de tu panel de control de WordPress:

Un panel de salud del sitio de WordPress que muestra un estado general de "Bueno". Una notificación indica que el plugin SendWP está instalado pero actualmente desactivado o desconectado. La comprobación del estado del sitio muestra cuatro mejoras recomendadas relacionadas con la seguridad, el rendimiento y otros factores. Entre ellas, eliminar los plugins inactivos, solucionar los módulos que faltan, resolver un evento programado con retraso y garantizar la disponibilidad de espacio en disco para las actualizaciones.
La pantalla de Salud del Sitio dentro de WordPress.

En lo que respecta al cumplimiento, WordPress ofrece una plantilla de política de privacidad predeterminada para cada instalación. La plataforma principal también fomenta el uso de formularios de divulgación de vulnerabilidades. Construir sobre todo esto con la API de Kinsta ofrece una sólida provisión de seguridad — y a continuación te mostraremos cómo.

Cómo implementar la monitorización de la seguridad con la API Kinsta

Probablemente, si quieres conseguir una configuración que implique una monitorización continua de la seguridad, el mejor enfoque será el programático. La API de Kinsta ofrece un montón de endpoints diferentes para ayudarte en el camino, aunque no es el único enfoque (sobre el que hablaremos más adelante).

Veamos un enfoque típico de la monitorización de la seguridad mediante la API. Empezaremos por obtener tus claves API y luego pasaremos a las demás áreas.

1. Obtener tus claves API

Sin tus claves API, no puedes acceder a ningún aspecto de tus sitios. Para generar una nueva clave API, dirígete al panel de MyKinsta y a la pantalla Configuración de la empresa > Claves API. Si es la primera vez que entras aquí, probablemente la pantalla estará en blanco:

La pantalla de Claves API en el panel de control de MyKinsta. La pantalla tiene una tabla vacía donde se listarían las claves API, junto con su nombre y fecha de caducidad. Hay un botón destacado "Crear clave API" para generar una nueva clave API. El menú de la barra lateral izquierda muestra varias opciones como Mi Plan, Facturas, Métodos de Pago y Referidos.
La pantalla Claves API dentro del panel de MyKinsta.

Aquí, haz clic en el botón Crear Clave API y rellena los campos para establecer una fecha de caducidad y un nombre para tu clave:

El diálogo modal Crear Clave API que te pide que selecciones una opción de caducidad en un menú desplegable, e introduzcas un nombre único para identificar tu clave API.
La pantalla Crear Clave API dentro del panel MyKinsta.

Una vez que hagas clic en el botón Generar, podrás copiar tu clave API. Recuerda que no la volverás a ver, así que asegúrate de mantenerla a salvo:

El cuadro de diálogo "Crear clave API" muestra la clave API recién generada, que está difuminada por seguridad. Hay opciones para Copiar la clave API o Revocarla. Un mensaje de éxito en la parte superior confirma que la clave API se ha creado correctamente.
Una clave API generada, con la opción de copiar y finalizar el proceso.

Con tu nueva clave API en la mano, puedes empezar a explorar la conexión a la API de Kinsta.

2. Explora los endpoints disponibles en la API de Kinsta

Te recomendamos que tengas a mano la documentación de la API mientras navegas por los endpoints disponibles. No todos ellos serán adecuados para la monitorización de la seguridad, pero hay algunos en los que te apoyarás más que en otros:

  • sites. Utilízalo cuando necesites obtener una lista de sitios asociados a una empresa. Puedes devolver información básica, como su nombre, ID y estado.
  • backups. Puedes hacer y restaurar copias de seguridad de cualquiera de tus centros utilizando las peticiones GET y POST. Esto formará parte de tus respuestas de recuperación ante desastres e incidentes de seguridad.
  • logs. Este endpoint puede utilizarse para simples registros de errores y accesos. Será uno de tus endpoints para monitorizar y depurar.

Presentaremos más endpoints en la siguiente sección, donde los utilizarás para construir tu proceso.

3. Valida tu conexión y obtén una lista de sitios

Antes de tocar una línea de código, es una buena idea planificar con antelación para solidificar tus objetivos. Mira qué endpoints están disponibles, combínalos con cómo quieres que sea tu proceso de monitorización de la seguridad, y luego intenta que todo encaje.

Por ejemplo, puede que quieras una forma de comprobar regularmente si el core de WordPress, los temas y los plugins están obsoletos. El endpoint sites es la forma de hacerlo. Sin embargo, no sólo accederás a un único endpoint o harás una solicitud cada vez. Aquí es donde la flexibilidad de la API Kinsta puede brillar.

Aquí tienes un rápido script en Python para autenticar el acceso a la API y obtener un sitio. En primer lugar, establecemos algunas variables principales. Ten en cuenta que normalmente no incluirías tu clave API ni el ID de tu empresa en el código. En este caso, lo hacemos por brevedad y claridad.

Una vez establecidas las variables, podemos establecer las cabeceras de autenticación y, a continuación, intentar validar el acceso. Con tres breves funciones, podemos validar el token, devolver una lista de sitios y obtener un sitio concreto:

import requests
import os


# Define the API key and company ID within the script
api_token = 'API_KEY'
company_id = 'COMPANY_ID'

# Set the base URL for the Kinsta API
base_url = 'https://api.kinsta.com/v2'

# Set the headers for authentication
headers = {
    'Authorization': f'Bearer {api_token}'
}


def validate_token():
    """Checks and authenticates an API token.""" 
    url = f'{base_url}/validate'
    response = requests.get(url, headers=headers)

    if response.status_code == 200:
        print('API token is valid')
    else:
        print('API token is invalid')
        exit(1)


def get_sites():
    """Fetches a list of sites based on the Company ID."""
    url = f'{base_url}/sites?company={company_id}'
    response = requests.get(url, headers=headers)

    if response.status_code == 200:
        data = response.json()
        company_data = data.get('company', {})
        sites = company_data.get('sites', [])
        return sites
    else:
        print(f'Failed to fetch sites. Status code: {response.status_code}')
        return None


def get_single_site(site_id):
    """Takes a URL template and response, checks the status code, and returns JSON data if present."""
    url = f'{base_url}/sites/{site_id}'
    response = requests.get(url, headers=headers)

    if response.status_code == 200:
        site = response.json()
        return site
    else:
        print(f'Failed to fetch site. Status code: {response.status_code}')
        return None

Una función main llamará a cada uno de estos otros procesos, utilizando cierta lógica para enviar la información del sitio a un conjunto de variables de entorno:

def main():
    validate_token()
    sites = get_sites()

    if sites:
        print(f'Number of sites: {len(sites)}')
        if len(sites) > 0:
            for site in sites:
                print(f'Site ID: {site["id"]}')
                print(f'Site Name: {site["name"]}')
                print(f'Site Display Name: {site["display_name"]}')
                print(f'Site Status: {site["status"]}')
                print('Site Labels:', site["site_labels"])
                print('---')


                # Store site details in environment variables
                os.environ[f'SITE_ID_{site["name"]}'] = site["id"]
                os.environ[f'SITE_NAME_{site["name"]}'] = site["name"]
                os.environ[f'SITE_DISPLAY_NAME_{site["name"]}'] = site["display_name"]
                os.environ[f'SITE_STATUS_{site["name"]}'] = site["status"]
                os.environ[f'SITE_LABELS_{site["name"]}'] = str(site["site_labels"])


            print('Site details stored in environment variables.')
        else:
            print('No sites found')
    else:
        print('Failed to fetch sites')

Una vez completado el acceso a tus sitios, puedes buscar otros endpoints para casos de uso específicos.

4. Empieza a combinar endpoints para crear una monitorización continua de la seguridad

Hay muchas formas diferentes de utilizar los endpoints de la API de Kinsta para una monitorización continua y automatizada. Obtener tus registros de errores a intervalos regulares es una forma excelente de ser proactivo sobre la seguridad de tu sitio.

Podemos empezar con el mismo proceso de autenticación y obtención del sitio del paso anterior. Una vez que tengas el sitio que necesitas, una breve función puede acceder a la API y devolver los registros de errores:

def get_error_logs():
    """Fetches error logs up to 1,000 lines."""
    url = f'{base_url}/sites/environments/{company_id}/logs?file_name=error&lines=1000'
    response = requests.get(url, headers=headers)

    if response.status_code == 200:
        logs = response.json()
        return logs
    else:
        print(f'Failed to fetch error logs. Status code: {response.status_code}')
        return None

Si quieres automatizar esto, debes ser capaz de encontrar un paquete o biblioteca que te ayude. Por ejemplo, Python tiene el paquete schedule, que ejecutará una tarea a intervalos fijos. Para implementar esto, podemos crear otra función que imprima registros, y luego llamarla utilizando schedule en main:

def fetch_and_print_logs():
    """Checks for error logs, and if present, prints them to screen."""
    logs = get_error_logs()

    if logs:
        print('Error Logs:')
        for log in logs:
            print(log)
        print('---')


# Schedule the log fetching task to run once a day at a specific time
schedule.every().day.at('09:00').do(fetch_and_print_logs)


#main.py
…

    while True:
        schedule.run_pending()
        time.sleep(1)

Por supuesto, puedes extrapolar esto para trabajar con cualquier endpoint que desees, como backups, por ejemplo. Con un poco de trabajo, también podrías construir un sistema completo para automatizar y bloquear continuamente las direcciones IP de tu sitio — ¡tienes muchas posibilidades!

Utilizar la API de Kinsta junto con otros plugins de WordPress

El alojamiento de Kinsta integra la seguridad en el panel de control de MyKinsta y en su arquitectura más profunda. Por ello, los usuarios no podrán instalar la mayoría de los plugins de seguridad. Para habilitar el mismo nivel de funcionalidad, normalmente utilizarías las herramientas de Kinsta, como su bloqueo de IP.

Aunque la API de Kinsta ofrece una forma «básica» de proporcionar puntos de contacto para la monitorización y automatización de la seguridad, existe la posibilidad de combinarla con algunos plugins seleccionados. Por ejemplo, aunque no te permitimos activar su registro de tráfico (ya que provoca una alta IOPS), el resto del plugin Wordfence puede ser de utilidad.

Un banner promocional del plugin Wordfence. El banner presenta un elegante fondo oscuro. El nombre del plugin aparece en un lugar destacado en texto blanco, acompañado del eslogan "Protege tu inversión en WordPress".
Imagen de cabecera del plugin Wordfence de WordPress.org

De hecho, Wordfence ofrece un par de endpoints propios para la aprobación de IP y la importación de configuraciones. Esto último podría ser interesante si quieres replicar configuraciones «buenas» conocidas en muchos sitios diferentes. Sin embargo, la CLI de Wordfence ofrece muchas más posibilidades de combinación con nuestra API.

El uso conjunto de ambas va más allá del alcance de este post, pero es concebible generar un proceso hijo utilizando Node.js para ejecutar scripts de Python, por poner un ejemplo.

Esto significa que puedes tener una forma programática de ejecutar y automatizar la funcionalidad de Wordfence junto con la de Kinsta. El plugin Sucuri Security también tiene una sencilla API que te permite realizar un escaneo del sitio.

Puedes (por supuesto) utilizar plugins de una forma más directa. Por ejemplo, WP Activity Log amplía la funcionalidad de registro de Kinsta. Te permite registrar casi todas las acciones que ocurren en tu sitio, incluidas las de plugins de terceros.

Una imagen de banner para el WP Activity Log de Melapress. Tiene un fondo verde vibrante e incorpora contornos blancos limpios de iconos y elementos de diseño reconocibles. El eslogan del plugin dice "Mantén un registro de los cambios del usuario y del sistema".
Cabecera del plugin WP Activity Log de WordPress.org

Si quieres integrar la API de Kinsta con los plugins de tu sitio, normalmente necesitas acceso a la API del plugin. Sin embargo, no todos los plugins lo ofrecen, por lo que es posible que tengas algunas restricciones en tus plugins favoritos.

Mantener los estándares de cumplimiento con WordPress y Kinsta

Como empresa que hace gala de sus controles, subprocesos y cumplimiento, Kinsta sabe mucho del trabajo que conlleva. En lo que respecta a las normas de cumplimiento, cumplimos las de SOC 2 Tipo 2, el GDPR y la CCPA.

Una visión general de los controles de cumplimiento de la seguridad de Kinsta, que muestra que se cumplen las normas SOC 2 Tipo II, GDPR y CCPA. Los recursos se pueden ampliar para ver tres elementos: un documento SOC 2 Tipo II, un Cuestionario de Seguridad y una Evaluación del Impacto de la Transferencia. Se pueden ver 79 controles de seguridad, clasificados en Seguridad de la infraestructura, Seguridad de la organización, Seguridad del producto, Procedimientos internos de seguridad y Datos y privacidad.
Visión general de las credenciales de confianza de Kinsta desde el sitio web.

Para mejorar la confianza de los usuarios, tu sitio web también debe cumplir estas normas. El GDPR fue el primero en afectar a casi todos los sitios. Esta normativa de la Unión Europea (UE) establece directrices sobre cómo recopilar, procesar y almacenar datos personales. La CCPA es otra legislación en una línea similar. Para los sitios de WordPress, la página de política de privacidad incorporada y las herramientas de exportación de datos pueden ayudar, junto con la implementación de avisos sobre cookies.

Si trabajas en finanzas, sanidad u otros sectores similares, tendrás otras leyes, normas, directrices y directivas que seguir:

  • La Health Insurance Portability and Accountability Act (HIPAA, ) establece normas para proteger la información sanitaria sensible de los pacientes. Los controles de acceso y la funcionalidad de autenticación de usuarios de WordPress pueden ser de ayuda en este caso, junto con la implementación del cifrado SSL para tus sitios.
  • El Payment Card Industry Data Security Standard (PCI-DSS) es un conjunto de normas de seguridad para sitios que gestionan transacciones con tarjetas. Los sitios de comercio electrónico de WordPress deben cumplir los requisitos de la PCI-DSS. Al igual que con la HIPAA, las conexiones cifradas para tu sitio son importantes. Además, utilizar la autenticación de dos factores (2FA), cortafuegos y pasarelas de pago de terceros te ayudará a cumplir la normativa.

La infraestructura de Kinsta puede ser una base sólida para toda tu estrategia de cumplimiento, y la API de Kinsta también puede encajar con la de WordPress. Incluso podrías considerar facetas como la monitorización de la integridad de los archivos mediante herramientas, servicios y plugins de terceros.

Consejos óptimos para utilizar la API de Kinsta y WordPress para la seguridad y el cumplimiento normativo

Para terminar el post, te daremos algunos consejos generales para utilizar la API de Kinsta junto con WordPress. Cuando se trata de la seguridad y el cumplimiento de tu sitio, es importante maximizar la eficacia de ambos, ya que obtendrás el mayor beneficio.

Un enfoque sencillo es utilizar el endpoint «autenticación» para comprobar que tu clave API es válida:

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


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

Además, deberás mantener siempre la confidencialidad de tus credenciales de la API, especialmente si almacenas tu código en un repositorio Git remoto. La práctica más recomendable es almacenar esas claves fuera del webroot y utilizar uno de los siguientes métodos:

  • Las variables de entorno deberían ser una consideración primordial, y recomendaríamos este enfoque.
  • Wrappers si utilizas PHP.
  • Comandos Git para restringir el acceso a repos y archivos y para ocultar información sensible. Por ejemplo, git crypt, git-remote-gcrypt, o git secret.

Sin embargo, aparte de proteger tus claves API, hay muchas otras cosas que puedes hacer para que el uso conjunto de la API de Kinsta y WordPress sea más seguro:

  • Implementar una gestión de errores y un registro adecuados puede ayudarte a identificar y solucionar problemas, aumentando la fiabilidad y estabilidad de tu control de seguridad.
  • Utiliza el principio del mínimo privilegio al asignar funciones y permisos a los usuarios. En pocas palabras, concede a los usuarios sólo el nivel mínimo de acceso que necesiten para realizar las tareas. Además, revisa estos permisos periódicamente.

Sobre todo, mantente al día de las prácticas de seguridad actuales y emplea las más sólidas. Además, infórmate sobre las vulnerabilidades recientes y los parches de software que las combaten para tus temas y plugins. Con un procedimiento de actualización periódico, combinado con la automatización de la monitorización de la seguridad y el cumplimiento de la API de Kinsta, dispondrás de una configuración resistente.

Resumen

En Kinsta, nos enorgullecemos de proporcionarte un servidor de alojamiento fuerte, estable y seguro. Sin embargo, también necesitas trabajar para monitorizar la seguridad de tu sitio. La monitorización continua de la seguridad de todos tus sitios de WordPress es esencial.

Con la API de Kinsta, tienes muchas formas programáticas de apoyar tus objetivos, como acceder a los registros, gestionar una lista de bloqueo de IP y mucho más. Algunos plugins de WordPress que ofrecen acceso a la API te permiten automatizar mucho más que tu servidor. Automatizar esas tareas de seguridad y cumplimiento te permite trabajar en otras áreas críticas para el negocio, con la seguridad de que tu sitio y sus usuarios están a salvo.

¿Qué necesitas de tu monitorización continua de la seguridad que pueda proporcionarte Kinsta? Háznoslo saber 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 ;).