La sicurezza del vostro sito WordPress è un aspetto che non potete ignorare se non volete mettere a rischio i dati dei vostri clienti e la vostra sicurezza online. Inoltre, anche il mantenimento della conformità agli standard e alle normative vigenti dovrebbe essere una priorità. Infatti, il monitoraggio della sicurezza e la conformità vanno spesso di pari passo, con la stessa importanza.

Implementare entrambe le cose può essere una sfida, soprattutto quando si hanno molti siti da gestire. Tuttavia, grazie alla moltitudine di endpoint di Kinsta API, è possibile accedere in modo programmatico all’hosting sicuro del sito, che può essere ulteriormente automatizzato e lavorato.

In questo post analizzeremo come sfruttare l’API di Kinsta per rafforzare la sicurezza di WordPress e come potenzialmente andare oltre quello che la dashboard di MyKinsta offre.

Parleremo anche della strategia di conformità dei dati di un sito. Dopo aver esplorato le funzionalità dell’API di Kinsta, illustreremo in modo pratico come integrare il monitoraggio della sicurezza e la conformità nel proprio flusso di lavoro su WordPress.

Il monitoraggio continuo della sicurezza e la conformità

Un sito web ha un valore immenso per alcuni gruppi. Gli utenti malintenzionati non vedono i vostri prodotti e servizi: vedono dati e opportunità di guadagno. Nel 2022, SiteLock ha rilevato che un sito medio subisce circa 100 attacchi al giorno.

Per questo motivo, è fondamentale monitorare costantemente la sicurezza e verificare il livello di conformità. L’intento malevolo è dinamico, il che significa che è necessario valutare, monitorare e gestire le proprie misure di sicurezza in continua evoluzione. Ad esempio, la OWASP Top 10 monitora quali sono i tipi di attacchi dannosi più diffusi e questo elenco cambia ad ogni indagine.

Ci sono molti altri motivi per cui implementare un monitoraggio continuo della sicurezza:

  • Si può essere proattivi quando si tratta di identificare e rispondere alle potenziali minacce.
  • Un monitoraggio regolare significa che la sicurezza del sito rimane solida e focalizzata sulla protezione.
  • È possibile garantire una conformità costante e aggiornata agli standard di settore e alle linee guida sulla protezione dei dati.
  • A livello fondamentale, consente di ridurre il rischio di “fuga” di dati dal sito e di eroderne la reputazione.

Per i siti web WordPress, la strategia di monitoraggio e conformità ha un’importanza e delle sfide ancora maggiori:

  • WordPress offre una sicurezza intrinseca, ma la piattaforma ha un bersaglio sulla schiena, grazie alla sua quota di mercato.
  • Naturalmente, c’è anche la complessità degli ecosistemi di temi e plugin da monitorare.
  • Se si gestiscono più siti, è necessario garantire una strategia di monitoraggio coerente e affidabile.
  • È necessario integrare il monitoraggio della sicurezza senza problemi nei flussi di lavoro di sviluppo esistenti

La buona notizia è che potete integrare facilmente il monitoraggio della sicurezza nel vostro flusso di lavoro esistente e combinarlo con le notifiche di aggiornamento di WordPress. Ancora meglio, potete controllare tutto questo attraverso l’API di Kinsta.

Una breve introduzione all’API di Kinsta

Per i clienti Kinsta, l’API rappresenta il modo migliore per automatizzare e sfruttare molti aspetti del vostro server di hosting. Offriamo numerosi endpoint per ogni tipo di attività. Ad esempio, potete gestire siti, utenti e dipendenze come temi e plugin. Inoltre, potete recuperare i log e accedere alle metriche dell’applicazione dalla dashboard di MyKinsta:

Una panoramica della dashboard di MyKinsta. Mostra le attività recenti, come l'abilitazione della modalità di manutenzione, l'abilitazione dell'AFM e le notifiche di pagamento del piano di hosting WordPress. Vengono inoltre riepilogate le visite e l'utilizzo dei siti PHP e WordPress. La barra laterale sinistra consente di navigare nelle varie sezioni dell'applicazione.
La dashboard di MyKinsta.

Naturalmente, integrare l’API di Kinsta nel vostro flusso di lavoro di WordPress sarà un gioco da ragazzi, visto che il nostro focus è sull’hosting di WordPress. Vedremo come farlo più avanti. Offriamo un modo proattivo e programmatico per gestire il monitoraggio della sicurezza per i principali aspetti di WordPress. Questo include gli aggiornamenti del sito, i log e molto altro ancora.

Molte di queste cose coincidono con gli aspetti su cui concentrarsi quando si tratta di sicurezza di WordPress. Vediamo di seguito.

Le pratiche tipiche di WordPress per la sicurezza e la conformità

WordPress è una piattaforma solida e sicura, grazie alla sua base di codice matura e all’uso rigoroso di pratiche sicure. Per quanto riguarda il sistema di gestione dei contenuti (CMS) stesso, ci sono modi ufficiali per segnalare le vulnerabilità:

In effetti, gli utenti finali possono segnalare anche i temi, grazie a un pulsante ben visibile nella pagina del repository:

Una richiesta in una pagina dell'elenco dei temi di WordPress che chiede
Il pulsante Segnala questo tema per la pagina di un tema su WordPress.org

È chiaro che WordPress è molto attento alla sicurezza e ci sono alcune aree chiave su cui si concentra il codice base:

  • Aggiornamenti regolari. WordPress rilascia aggiornamenti regolari per il suo software di base, che includono patch per risolvere problemi di sicurezza e di prestazioni. Esistono modi automatizzati per aggiornare il core, i temi e i plugin dalla dashboard di WordPress
  • Forti controlli di accesso. WordPress è dotato di una serie completa di ruoli utente che permettono di applicare controlli di accesso definiti a diversi utenti. C’è anche uno strumento integrato per la sicurezza delle password e controlli per la creazione e la gestione dei commenti.
  • Garantire la sicurezza dell’hosting. Nella documentazione di WordPress ci sono molti riferimenti all’hosting sicuro. L’aspettativa è che il vostro host offra lo stesso impegno per la vostra sicurezza che il suo team centrale ha nei confronti del CMS.

Per aiutarvi a monitorare alcuni di questi aspetti, potete utilizzare la schermata Salute del sito all’interno della dashboard di WordPress:

Il cruscotto di salute del sito WordPress mostra uno stato generale di "Buono". Una notifica indica che il plugin SendWP è installato ma attualmente disattivato o disconnesso. Il controllo dello stato del sito mostra quattro miglioramenti consigliati relativi alla sicurezza, alle prestazioni e ad altri fattori. Questi includono la rimozione dei plugin inattivi, la risoluzione dei moduli mancanti, la risoluzione di un evento programmato in ritardo e la garanzia di spazio su disco per gli aggiornamenti.
La schermata Site Health di WordPress.

Per quanto riguarda la conformità, WordPress offre un modello di informativa sulla privacy predefinito per ogni installazione. La piattaforma principale incoraggia anche l’uso di moduli di divulgazione delle vulnerabilità. L’utilizzo dell’API di Kinsta per integrare tutto questo offre un solido sistema di sicurezza – e ora vedreremo come.

Come implementare il monitoraggio della sicurezza con l’API Kinsta

Se volete realizzare una configurazione che preveda un monitoraggio continuo della sicurezza, un approccio programmatico sarà probabilmente il migliore. L’API di Kinsta offre molti endpoint diversi per aiutarvi in questo percorso, anche se non è l’unico approccio (ne parleremo più avanti).

Vediamo un approccio tipico al monitoraggio della sicurezza utilizzando l’API. Inizieremo con l’acquisizione delle chiavi API e poi passeremo alle altre aree.

1. Ottenere le credenziali API

Senza le chiavi API non potete accedere a nessun aspetto dei vostri siti. Per generare una nuova chiave API, andate alla dashboard di MyKinsta e nella schermata Impostazioni azienda > Chiavi API. Se è la prima volta che vi trovate qui, la schermata sarà probabilmente vuota:

La schermata delle chiavi API nella dashboard di MyKinsta. La schermata presenta una tabella vuota in cui sono elencate le chiavi API, insieme al loro nome e alla data di scadenza. È presente il pulsante "Crea chiave API" per generare una nuova chiave API. Il menu della barra laterale sinistra mostra varie opzioni come Il mio piano, Fatture, Metodi di pagamento e Referral.
La schermata delle chiavi API nella dashboard di MyKinsta.

Cliccate sul pulsante Crea chiave API e compilate i campi per impostare una data di scadenza e un nome per la vostra chiave:

La finestra di dialogo modale Crea chiave API richiede di selezionare un'opzione di scadenza da un menu a discesa e di inserire un nome univoco per identificare la chiave API.
La schermata Crea chiave API nella dashboard di MyKinsta.

Una volta cliccato sul pulsante Genera, potrete copiare la vostra chiave API. Ricordate che non la vedrete mai più, quindi assicuratevi di tenerla al sicuro:

Nella finestra di dialogo "Crea chiave API" viene visualizzata la chiave API appena generata, che è sfocata per sicurezza. È possibile copiare la chiave API o revocarla. Un messaggio di successo in alto conferma che la chiave API è stata creata con successo.
Una chiave API generata, con l’opzione di copiare e terminare il processo.

Con la vostra nuova chiave API in mano, potete iniziare a esplorare la connessione all’API di Kinsta.

2. Esplorare gli endpoint disponibili all’interno dell’API di Kinsta

Vi consigliamo di tenere a portata di mano la documentazione dell’API per navigare tra gli endpoint disponibili. Non tutti sono adatti per il monitoraggio della sicurezza, ma alcuni di essi saranno più utilizzati di altri:

  • sites. Utilizzatelo quando avete bisogno di ottenere un elenco di siti associati a un’azienda. Potete ottenere informazioni di base, come il nome, l’ID e lo stato.
  • backups. Potete creare e ripristinare i backup di qualsiasi sito utilizzando le richieste di GET e POST. Ciò costituirà una parte delle vostre risposte al disaster recovery e agli incidenti di sicurezza.
  • logs. Questo endpoint può essere utilizzato per i semplici log degli errori e degli accessi. Sarà uno dei vostri endpoint preferiti per il monitoraggio e il debug.

Introdurremo altri endpoint nella prossima sezione, e li utilizzeremo per costruire il vostro processo.

3. Convalidare la connessione e recuperare un elenco di siti

Prima di toccare una riga di codice, è una buona idea pianificare in anticipo per definire i vostri obiettivi. Guardate quali sono gli endpoint disponibili, combinateli con l’aspetto che volete dare al vostro processo di monitoraggio della sicurezza e poi cercate di farli combaciare.

Ad esempio, potreste voler controllare regolarmente se il core, i temi e i plugin di WordPress sono obsoleti. L’endpoint sites è il modo per farlo. Tuttavia, non potrete accedere semplicemente a un endpoint o fare una richiesta alla volta. È qui che la flessibilità dell’API di Kinsta può dare il meglio di sé.

Ecco un rapido script Python per autenticare l’accesso all’API e recuperare un sito. Per prima cosa, impostiamo alcune variabili fondamentali. In genere non si includono la chiave API e l’ID dell’azienda nel codice. In questo caso, lo facciamo per brevità e chiarezza.

Una volta impostate le variabili, possiamo impostare le intestazioni di autenticazione e cercare di convalidare l’accesso. Con tre brevi funzioni possiamo convalidare il token, restituire un elenco di siti e recuperare un sito specifico:

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 funzione di main chiamerà ciascuno di questi processi, utilizzando una logica per inviare le informazioni sul sito in un insieme di variabili d’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')

Una volta completato l’accesso ai siti, potete cercare di inserire altri endpoint per casi d’uso specifici.

4. Iniziare a combinare gli endpoint per creare un monitoraggio continuo della sicurezza

Ci sono molti modi diversi per utilizzare gli endpoint dell’API di Kinsta per un monitoraggio continuo e automatizzato. Recuperare i log degli errori a intervalli regolari è un modo eccellente per essere proattivi sulla sicurezza del vostro sito.

Possiamo iniziare con lo stesso processo di autenticazione e di acquisizione del sito della fase precedente. Una volta ottenuto il sito desiderato, una breve funzione può accedere all’API e restituire i log degli errori:

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 volete automatizzare questo processo, dovreste essere in grado di trovare un pacchetto o una libreria che vi aiuti. Ad esempio, Python ha il pacchetto schedule, che esegue un task a intervalli fissi. Per implementare questa funzione, possiamo creare un’altra funzione che stampi i log e poi chiamarla usando schedule in 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, potete estrapolare questa funzione per lavorare con qualsiasi endpoint che desiderate, come ad esempio backups. Con un po’ di lavoro, potreste anche creare un sistema completo per automatizzare e bloccare continuamente gli indirizzi IP del vostro sito: avete un ampio margine di manovra!

Usare l’API di Kinsta insieme ad altri plugin di WordPress

L’hosting di Kinsta integra la sicurezza nella dashboard di MyKinsta e nella sua architettura più profonda. Per questo motivo, gli utenti non potranno installare la maggior parte dei plugin di sicurezza. Per abilitare lo stesso livello di funzionalità, dovete utilizzare gli strumenti di Kinsta, come il blocco degli IP.

Sebbene l’API di Kinsta offra un modo “nudo e crudo” per fornire punti di contatto per il monitoraggio e l’automazione della sicurezza, esiste l’opportunità di combinarla con alcuni plugin selezionati. Ad esempio, non permettiamo di attivare la registrazione del traffico (perché causa un elevato IOPS), ma il resto del plugin Wordfence può essere utile.

Un banner promozionale per il plugin Wordfence. Il banner è caratterizzato da un elegante sfondo scuro. Il nome del plugin è visualizzato in modo evidente in testo bianco, accompagnato dal tagline " Securing your WordPress investment".
Immagine dell’intestazione del plugin Wordfence da WordPress.org

In effetti, Wordfence offre un paio di endpoint propri per l’approvazione degli IP e l’importazione delle impostazioni. Quest’ultimo potrebbe essere interessante se volete replicare le impostazioni “buone” conosciute su molti siti diversi. Tuttavia, la CLI di Wordfence offre molte più possibilità di combinazione con le nostre API.

L’utilizzo congiunto di entrambi va oltre lo scopo di questo post, ma è possibile creare un processo figlio utilizzando Node.js per eseguire script Python, ad esempio.

Ciò significa che potete avere un modo programmatico per eseguire e automatizzare le funzionalità di Wordfence insieme a quelle di Kinsta. Il plugin Sucuri Security dispone anche di una semplice API che permette di effettuare una scansione del sito.

Naturalmente potete utilizzare i plugin in modo più semplice. Ad esempio, WP Activity Log amplia la funzionalità di logging di Kinsta. Permette di registrare quasi tutte le azioni che avvengono sul vostro sito, compresi i plugin di terze parti.

Un'immagine banner per il Registro attività WP di Melapress. Ha un vivace sfondo verde e incorpora contorni bianchi e puliti di icone ed elementi di design riconoscibili. Il tagline del plugin recita
L’intestazione del plugin WP Activity Log da WordPress.org

Se volete integrare l’API di Kinsta con i plugin del vostro sito, di solito avete bisogno di un accesso API al plugin. Tuttavia, non tutti i plugin lo offrono, quindi potreste avere delle restrizioni sui vostri plugin preferiti.

Mantenere gli standard di conformità con WordPress e Kinsta

Essendo un’azienda che mette in mostra i suoi controlli, i suoi sottoprocessi e la sua conformità, Kinsta conosce bene il lavoro che comporta. Per quanto riguarda gli standard di conformità, soddisfiamo quelli del SOC 2 Tipo 2, del GDPR e del CCPA.

Una panoramica dei controlli di sicurezza per Kinsta, che mostra la conformità SOC 2 Tipo II, GDPR e CCPA. Le risorse sono espandibili per visualizzare tre elementi: un documento SOC 2 di tipo II, un questionario sulla sicurezza e una valutazione dell'impatto del trasferimento. Sono visualizzabili 79 controlli di sicurezza, suddivisi in sicurezza dell'infrastruttura, sicurezza dell'organizzazione, sicurezza del prodotto, procedure di sicurezza interne e dati e privacy.
Panoramica delle credenziali di fiducia di Kinsta dal sito web.

Per migliorare la fiducia degli utenti, anche il vostro sito dovrebbe soddisfare questi standard. Il GDPR è stato il primo a interessare quasi tutti i siti. Questo regolamento dell’Unione Europea (UE) stabilisce le linee guida per la raccolta, l’elaborazione e l’archiviazione dei dati personali. Il CCPA è un altro atto legislativo di simile portata. Per i siti WordPress, la pagina dell’informativa sulla privacy integrata e gli strumenti di esportazione dei dati possono essere d’aiuto, così come l’implementazione di avvisi sui cookie.

Se lavorate nel settore finanziario, sanitario o in altri settori simili, dovrete seguire altre leggi, standard, linee guida e direttive:

  • L’Health Insurance Portability and Accountability Act (HIPAA) stabilisce gli standard per la protezione delle informazioni sanitarie sensibili dei pazienti. I controlli di accesso e le funzionalità di autenticazione degli utenti di WordPress possono essere d’aiuto in questo senso, così come l’implementazione della crittografia SSL per i vostri siti.
  • Il Payment Card Industry Data Security Standard (PCI-DSS) è un insieme di standard di sicurezza per i siti che gestiscono transazioni con carta di credito. I siti eCommerce WordPress devono rispettare i requisiti PCI-DSS. Come per l’HIPAA, le connessioni criptate per il vostro sito sono importanti. Inoltre, l’utilizzo dell’autenticazione a due fattori (2FA), dei firewall e dei gateway di pagamento di terze parti vi aiuteranno a rispettare i requisiti.

L’infrastruttura di Kinsta può essere una solida base per la vostra strategia di conformità e l’API di Kinsta può affiancarsi a quella di WordPress. Potreste anche prendere in considerazione aspetti come il monitoraggio dell’integrità dei file utilizzando strumenti, servizi e plugin di terze parti.

Consigli ottimali per l’utilizzo di Kinsta API e WordPress per la sicurezza e la conformità

Per concludere il post, ecco diamo alcuni consigli di carattere generale per utilizzare l’API di Kinsta insieme a WordPress. Quando si tratta di sicurezza e conformità del vostro sito, è importante massimizzare l’efficacia di entrambi, per ottenere i maggiori benefici.

Un approccio semplice consiste nell’utilizzare l’endpoint “autenticazione” per verificare che la vostra chiave API sia valida:

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

Inoltre, dovrete sempre mantenere riservate le vostre credenziali API, soprattutto se memorizzate il vostro codice in un repo Git remoto. La pratica più efficace è quella di memorizzare queste chiavi al di fuori della webroot e di utilizzare uno dei seguenti metodi:

  • Le variabili d’ambiente dovrebbero essere una considerazione primaria e vi consigliamo questo approccio.
  • Wrapper se utilizzate PHP.
  • Comandi Git per limitare l’accesso ai repository e ai file e per offuscare le informazioni sensibili. Ad esempio, git crypt, git-remote-gcrypt, o git secret.

Tuttavia, oltre a proteggere le vostre chiavi API, ci sono molte altre cose che potete fare per rendere più sicuro l’utilizzo dell’API Kinsta e di WordPress insieme:

  • L’implementazione di una corretta gestione e logging degli errori può aiutarvi a identificare e risolvere i problemi, aumentando l’affidabilità e la stabilità del vostro monitoraggio della sicurezza.
  • L’uso del principio del minimo privilegio quando assegnate ruoli e permessi agli utenti. In breve, concedete agli utenti solo il livello minimo di accesso di cui hanno bisogno per svolgere i loro compiti. Inoltre, rivedete regolarmente questi permessi.

Soprattutto, tenetevi aggiornati sulle pratiche di sicurezza attuali e utilizzate quelle più efficaci. Infine, informatevi sulle vulnerabilità recenti e sulle patch software che le contrastano per i vostri temi e plugin. Con una procedura di aggiornamento regolare, unita all’automazione del monitoraggio della sicurezza e alla conformità con l’API di Kinsta, otterrete una configurazione robusta.

Riepilogo

Noi di Kinsta siamo orgogliosi di fornirvi un server di hosting solido, stabile e sicuro. Tuttavia, anche voi dovete lavorare per monitorare la sicurezza del vostro sito. Il monitoraggio continuo della sicurezza di tutti i vostri siti WordPress è essenziale.

Con l’API di Kinsta, avete a disposizione molti modi programmatici per supportare i vostri obiettivi, come l’accesso ai log, la gestione di un elenco di blocchi IP e altro ancora. Alcuni plugin di WordPress che offrono accesso alle API permettono di automatizzare molto di più del vostro server. L’automazione di queste attività di sicurezza e conformità vi permette di lavorare su altre aree critiche per l’azienda, sapendo che il vostro sito e i suoi utenti sono al sicuro.

Di cosa avete bisogno per il monitoraggio continuo della sicurezza che Kinsta può fornirvi? Fatecelo sapere nella sezione commenti qui sotto!

Jeremy Holcombe Kinsta

Content & Marketing Editor presso Kinsta, web developer di WordPress e content writer. Al di fuori di tutto ciò che riguarda WordPress, mi piacciono la spiaggia, il golf e il cinema. Ho anche i problemi di tutte le persone più alte della media ;).