A segurança do seu site WordPress é um aspecto que você não pode ignorar se não quiser expor os dados dos seus clientes e comprometer sua segurança on-line. Além disso, manter a conformidade com normas e regulamentos relevantes também deve ser uma prioridade. Na realidade, o monitoramento de segurança e a conformidade geralmente andam de mãos dadas, com importância equivalente.

No entanto, a implementação de ambos pode ser um desafio, especialmente quando você tem muitos sites para gerenciar. Mas com os vários endpoints da API da Kinsta você tem acesso programático à nossa hospedagem segura de sites, com a qual você pode trabalhar adicionalmente e automatizar.

Neste artigo exploraremos como aproveitar a API da Kinsta para fortalecer a sua segurança no WordPress, e como ir além do que o painel MyKinsta oferece.

Também abordaremos a estratégia contínua de conformidade de dados do seu site. Depois de explorarmos os recursos da API da Kinsta, você terá um passo a passo prático de como integrar o monitoramento de segurança e a conformidade ao seu fluxo de trabalho com WordPress.

Entendendo o monitoramento contínuo de segurança e a conformidade

Seu site tem um valor imenso para determinados grupos. Os usuários mal-intencionados não veem seus produtos e serviços — veem dados e oportunidades de ganho. Em 2022, a SiteLock descobriu que um site médio sofria cerca de 100 ataques por dia.

Portanto, é fundamental monitorar sua segurança continuamente e, ao mesmo tempo, verificar seu nível de conformidade. As más intenções são dinâmicas, o que significa que você precisa avaliar, rastrear e fazer com que suas medidas de segurança evoluam constantemente. Por exemplo, o OWASP Top 10 monitora quais tipos de ataques mal-intencionados são os mais populares, e essa lista muda a cada pesquisa.

Há muitos outros motivos pelos quais você também desejará implementar o monitoramento contínuo de segurança:

  • Você pode ser proativo quando se trata de identificar e responder a possíveis ameaças.
  • O monitoramento regular significa que a segurança do seu site permanece forte e focada na proteção.
  • Você pode garantir a conformidade consistente e atualizada com os padrões típicos do setor e com as diretrizes de proteção de dados.
  • Em um nível básico, você pode reduzir o risco de “vazamento” de dados do seu site que prejudique a sua reputação.

Para sites WordPress, sua estratégia de monitoramento e conformidade tem importância e desafios ainda maiores:

  • O WordPress oferece segurança inerente, mas a plataforma tem um alvo nas costas graças à sua participação de mercado.
  • É claro que você também precisa monitorar a complexidade dos ecossistemas de temas e plugins.
  • Se você administra vários sites, precisa garantir a implementação de uma estratégia de monitoramento consistente e confiável.
  • É preciso integrar de forma perfeita o monitoramento de segurança aos fluxos de trabalho de desenvolvimento existentes.

A boa notícia é que você pode integrar facilmente o monitoramento de segurança ao seu fluxo de trabalho existente e combiná-lo com as notificações de atualização do WordPress. Melhor ainda, você pode controlar isso por meio da API da Kinsta.

Uma breve introdução à API da Kinsta

Para os clientes da Kinsta, a API representa a melhor maneira de automatizar e aproveitar muitos aspectos do seu servidor de hospedagem. Oferecemos muitos endpoints para todos os tipos de tarefas. Por exemplo, você pode gerenciar sites, usuários e dependências, como temas e plugins de sites. Além disso, você pode buscar registros e acessar as mesmas métricas de aplicativos no painel MyKinsta:

O painel MyKinsta.
O painel MyKinsta.

Naturalmente, integrar a API da Kinsta em seu fluxo de trabalho com o WordPress será muito fácil, dado nosso grande foco em hospedagem de WordPress. Você descobrirá como fazer isso mais adiante. Oferecemos uma maneira proativa e programática de lidar com seu monitoramento de segurança para as principais facetas do WordPress. Isso inclui atualizações do site, logging e muito mais.

Grande parte disso se encaixa com os pontos em que você deve focar quando se trata de segurança no WordPress. Vamos dar uma olhada nisso a seguir.

Práticas típicas de WordPress para segurança e conformidade

Em seus arquivos principais, o WordPress é uma plataforma forte e segura, graças à sua base de código desenvolvida e ao seu rigoroso embasamento em práticas seguras. Para o próprio sistema de gerenciamento de conteúdo (CMS), há maneiras oficiais de relatar vulnerabilidades:

De fato, há também uma maneira de os usuários finais denunciarem temas — um botão em destaque na página do repositório:

O botão Report this theme (Denunciar este tema) para uma página de tema no WordPress.org.
O botão Report this theme (Denunciar este tema) para uma página de tema no WordPress.org.

Fica claro que o WordPress está atento à segurança, e com foco em algumas áreas-chave no que diz respeito à base de código principal:

  • Atualizações regulares. O WordPress lança atualizações regulares do seu software principal, o que inclui correções para resolver problemas de segurança e desempenho. Há maneiras automatizadas de atualizar os arquivos principais, os temas e os plugins no painel WordPress.
  • Forte controle de acesso. O WordPress vem com um conjunto completo de funções de usuário que permitem aplicar controles de acesso definidos a diferentes usuários. Há também uma ferramenta integrada de fortalecimento de senha e controles para fazer e gerenciar comentários.
  • Garantia da segurança da hospedagem. Há muitas referências a hospedagem segura em toda a documentação do WordPress. A expectativa é que o seu provedor de hospedagem ofereça o mesmo nível de cuidado com a sua segurança que a equipe principal oferece ao CMS.

Para ajudar a monitorar algumas dessas facetas, você pode usar a tela Site Health no painel WordPress:

A tela Site Health no WordPress.
A tela Site Health no WordPress.

Quanto à conformidade, o WordPress oferece um template padrão de política de privacidade para cada instalação. A plataforma principal também incentiva o uso de formulários de divulgação de vulnerabilidades. Construir com base em tudo isso usando a API da Kinsta oferece uma segurança robusta — e mostraremos a você como fazer isso a seguir.

Como implementar o monitoramento de segurança com a API da Kinsta

Se você deseja obter uma configuração que envolva monitoramento contínuo de segurança, a melhor abordagem provavelmente será a programática. A API da Kinsta oferece muitos endpoints diferentes para ajudar nesse processo, embora não seja a única abordagem (mais sobre isso adiante).

Vamos apresentar a você uma abordagem típica de monitoramento de segurança usando a API. Começaremos obtendo suas chaves de API e depois passaremos para as outras áreas.

1. Obtenha suas credenciais de API

Sem as chaves de API, você não pode acessar nenhum aspecto dos seus sites. Para gerar uma nova chave API, vá até o painel MyKinsta e acesse a tela Configurações da empresa > Chaves API. Se esta é a primeira vez que você está aqui, a tela provavelmente estará em branco:

A tela Chaves de API no painel MyKinsta.
A tela Chaves API no painel MyKinsta.

Aqui, clique no botão Criar chave API e preencha os campos para definir uma data de validade e um nome para sua chave:

A tela Criar Chave API no painel MyKinsta.
A tela Criar Chave API no painel MyKinsta.

Após clicar no botão Gerar, você poderá copiar sua chave API. Lembre-se de que você não a verá novamente, e, portanto, certifique-se de mantê-la segura e protegida:

Uma chave API gerada, com a opção de copiar e concluir o processo.
Uma chave API gerada, com a opção de copiar e concluir o processo.

Com sua nova chave API em mãos, você pode começar sua exploração conectando-se com a API da Kinsta.

2. Explore os endpoints disponíveis na API da Kinsta

Recomendamos que você mantenha a documentação da API em mãos enquanto navega pelos endpoints disponíveis. Nem todos serão adequados para o monitoramento de segurança, mas há alguns que você usará mais do que outros:

  • sites. Use quando precisar obter uma lista de sites associados a uma empresa. Você pode retornar informações básicas, como nome, ID e status.
  • backups. Você pode fazer e restaurar backups de qualquer um dos seus sites usando as solicitações GET e POST. Isso fará parte da recuperação de desastres e das respostas a incidentes de segurança.
  • logs. Esse endpoint pode ser usado para registros simples de erros e de acesso. Será um dos seus endpoints indicados para fins de monitoramento e depuração.

Apresentaremos mais endpoints na próxima seção, em que você os usará para desenvolver o seu processo.

3. Valide sua conexão e busque uma lista de sites

Antes de tocar em uma linha de código, é uma boa ideia planejar com antecedência para solidificar seus objetivos. Observe quais endpoints estão disponíveis, combine isso com o que você quer que o seu processo de monitoramento de segurança seja, e então procure fazer tudo se encaixar.

Por exemplo, talvez você queira um modo regular de verificar se os arquivos principais, os temas e os plugins de WordPress estão desatualizados. O endpoint sites é a maneira de fazer isso. Contudo, você não acessará simplesmente um endpoint ou fará uma solicitação de cada vez. É aí que a flexibilidade da API da Kinsta pode brilhar.

Aqui está um script Python rápido para você autenticar o acesso à API e buscar um site. Primeiro, definimos algumas variáveis principais. Observe que normalmente você não incluiria sua chave API e o ID da empresa em seu código. Neste caso, fazemos isso somente visando brevidade e clareza.

Com as variáveis definidas, podemos definir os cabeçalhos de autenticação, e daí focar em validar o acesso. Com três funções curtas podemos validar o token, retornar uma lista de sites e buscar um site específico:

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

Uma função main chamará cada um desses outros processos, usando alguma lógica para enviar as informações do site para um conjunto de variáveis de ambiente:

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')

Com o acesso aos seus sites completo, você pode procurar trazer outros endpoints para casos de uso específicos.

4. Comece a combinar endpoints para criar um monitoramento de segurança contínuo

Há muitas maneiras de usar os endpoints da API da Kinsta para monitoramento contínuo e automatizado. Buscar seus registros de erros a intervalos regulares é uma excelente maneira de ser proativo em relação à segurança do seu site.

Você pode começar com o mesmo processo de autenticação e busca de sites da etapa anterior. Quando tiver o site de que precisa, uma função curta poderá acessar a API e retornar os registros de erros:

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

Se você quiser automatizar isso, poderá encontrar um pacote ou biblioteca para ajudar. Por exemplo, o Python tem o pacote schedule, que executará uma tarefa em intervalos fixos. Para implementar isso, podemos criar outra função que imprima os registros e, em seguida, chamá-la usando schedule em 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)

Naturalmente, aqui você pode extrapolar para trabalhar com qualquer endpoint que desejar, como backups, por exemplo. Com algum trabalho, você também poderia construir um sistema completo para automatizar e bloquear continuamente endereços IP para o seu site — você tem muitos recursos para isso!

Usando a API da Kinsta em conjunto com outros plugins de WordPress

A hospedagem da Kinsta incorpora segurança ao painel MyKinsta e à sua arquitetura avançada. Por esse motivo, os usuários não poderão instalar a maioria dos plugins de segurança. Para ativar o mesmo nível de funcionalidade, você normalmente usaria as ferramentas da Kinsta, como o bloqueio de IP.

Embora a API da Kinsta ofereça uma maneira “bare metal” de fornecer pontos de contato para monitoramento e automação de segurança, a oportunidade de combinar isso com alguns plugins selecionados. Por exemplo, embora não permitamos que você habilite o registro de tráfego dele (pois causa alto IOPS), o restante do plugin Wordfence pode ser útil.

Imagem do cabeçalho do plugin Wordfence no WordPress.org.
Imagem do cabeçalho do plugin Wordfence no WordPress.org.

De fato, o Wordfence oferece alguns endpoints próprios para aprovação de IP e importação de configurações. Esse último pode ser interessante se você quiser replicar configurações “boas” conhecidas em vários sites diferentes. No entanto, a Wordfence CLI oferece muito mais possibilidades de combinação com nossa API.

O uso desses dois juntos está além do escopo deste artigo, mas é possível gerar um child process usando o Node.js para executar scripts Python, só para dar um exemplo.

Isso significa que você poderá ter uma maneira programática de executar e automatizar a funcionalidade do Wordfence juntamente com a da Kinsta. O plugin Sucuri Security também tem uma API simples que permite escanear um site.

Você pode (obviamente) usar plugins de uma maneira mais direta. Por exemplo, o WP Activity Log amplia a funcionalidade de logging da Kinsta. Ele permite que você registre quase todas as ações que ocorrem em seu site, inclusive para plugins de terceiros.

O cabeçalho do plugin WP Activity Log no WordPress.org.
O cabeçalho do plugin WP Activity Log no WordPress.org.

Se quiser integrar a API da Kinsta com os plugins em seu site, você precisa geralmente de acesso à API do plugin. Todavia, nem todos os plugins oferecem isso, então você pode ter algumas restrições em seus plugins favoritos.

Manter padrões de conformidade com o WordPress e a Kinsta

Como uma empresa que exibe seus controles, subprocessos e conformidade, a Kinsta conhece muito a respeito do trabalho envolvido. Quando se trata de padrões de conformidade, atendemos aos padrões do SOC 2 Tipo 2, do GDPR e da CCPA.

Visão geral das credenciais de confiança da Kinsta no site.
Visão geral das credenciais de confiança da Kinsta no site.

Para aumentar a confiança dos usuários, seu site também deve atender a esses padrões. O GDPR foi o primeiro a afetar quase todos os sites. Essa regulamentação da União Europeia (UE) estabelece diretrizes sobre como você coleta, processa e armazena dados pessoais. A CCPA é outra legislação com sentido semelhante. Para sites WordPress, a página integrada de política de privacidade e as ferramentas de exportação de dados podem ajudar, junto com a implementação de notificações de cookies.

Se você trabalha em finanças, saúde ou outros setores semelhantes, terá de seguir outros atos, padrões, diretrizes e diretivas:

  • A HIPAA (Health Insurance Portability and Accountability Act, Lei de Portabilidade e Responsabilidade dos Seguros de Saúde) define padrões para proteger informações confidenciais sobre a saúde dos pacientes. Os controles de acesso e a funcionalidade de autenticação de usuário do WordPress podem ajudar nesse caso, juntamente com a implementação de criptografia SSL para os seus sites.
  • O Padrão de Segurança de Dados do Setor de Cartões de Pagamento (PCI-DSS) é um conjunto de padrões de segurança para sites que lidam com transações com cartões. Os sites de eCommerce do WordPress devem seguir os requisitos do PCI-DSS. Assim como na HIPAA, as conexões criptografadas ao seu site são importantes. Além disso, o uso da autenticação de dois fatores (2FA), firewalls e gateways de pagamento de terceiros o ajudarão a estar em conformidade.

A infraestrutura da Kinsta pode ser um alicerce sólido para toda a sua estratégia de conformidade, e a API da Kinsta também pode se encaixar com a do WordPress. Você pode até querer analisar aspectos como o File Integrity Monitoring (FIM) usando ferramentas, serviços e plugins de terceiros.

Dicas otimizadas de uso da API da Kinsta com o WordPress para segurança e conformidade

Para concluir este artigo, daremos algumas dicas gerais de uso da API da Kinsta com o WordPress. Quando se trata de segurança e conformidade no seu site, é importante maximizar a eficácia de ambos para que você obtenha o maior benefício.

Uma abordagem simples é usar o endpoint “autenticação” para verificar se sua chave API é 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);

Além disso, você desejará manter suas credenciais de API sempre confidenciais, especialmente se armazenar seu código em um repositório Git remoto. A prática mais segura é armazenar essas chaves fora da raiz do site e usar um dos seguintes métodos:

  • As variáveis de ambiente devem ser uma consideração primária, e recomendamos essa abordagem.
  • Wrappers, se você usa PHP.
  • Comandos do Git para restringir o acesso a repositórios e arquivos, bem como ofuscar informações confidenciais. Por exemplo, git crypt, git-remote-gcrypt, ou git secret.

Entretanto, além de proteger suas chaves de API, há muitas outras coisas que você pode fazer para tornar o uso combinado da API da Kinsta com o WordPress mais seguro:

  • A implementação de tratamento e registro de erros adequados pode ajudar você a identificar e solucionar problemas, aumentando a confiabilidade e a estabilidade do seu monitoramento de segurança.
  • Use o princípio do menor privilégio ao atribuir funções e permissões de usuário. Em poucas palavras: conceda aos usuários apenas o nível mínimo de acesso necessário para a execução das suas tarefas. Além disso, revise essas permissões regularmente.

Acima de tudo, mantenha-se antenado com as práticas de segurança atuais e empregue as mais fortes. Além disso, leia sobre vulnerabilidades recentes e os patches de software que as combatem em seus temas e plugins. Com um procedimento de atualizações regulares, combinado com a automação do monitoramento de segurança e conformidade, usando a API da Kinsta, você obterá uma configuração resiliente.

Resumo

Na Kinsta, temos orgulho de lhe fornecer um servidor de hospedagem forte, estável e seguro. Todavia, você também precisa trabalhar para monitorar a segurança do seu site. O monitoramento contínuo da segurança de todos os seus sites WordPress é essencial.

Com a API da Kinsta, você tem muitas maneiras programáticas de dar suporte aos seus objetivos, como acessar registros, gerenciar uma lista de bloqueio de IP, e muito mais. Alguns plugins de WordPress que oferecem acesso à API permitem que você automatize muito mais que o seu servidor. Automatizar essas tarefas de segurança e conformidade permite que você trabalhe em outras áreas essenciais aos negócios, com a certeza de que seu site e seus usuários estão seguros.

Do que você precisa em seu monitoramento contínuo de segurança que a Kinsta pode lhe oferecer? Deixe-nos saber na seção de comentários abaixo!

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 ;).