Paranoic Hardening: header di sicurezza e sessione amministrativa

La scheda “⚠ Paranoic Hardening” del plugin CSDN raccoglie le opzioni più delicate: gli header di sicurezza HTTP, HSTS e il logout automatico degli amministratori inattivi. Qui cambi il comportamento del browser di chi visita il sito, non solo quello del server. Per questo è tutto disattivato di default.

Schema di WordPress con la scheda Paranoic Hardening del plugin CSDN evidenziata

Dove si trova

Nel menu laterale di WordPress vai su Impostazioni e scegli Cisilino Site Defense Network (punto 1 dell’immagine). Apri la scheda “⚠ Paranoic Hardening” (punto 2). Per salvare serve il permesso manage_options; su multisite serve manage_network_options.

La scheda ha quattro sezioni. Al punto 3 trovi “Paranoic Hardening — Header di sicurezza HTTP”. Al punto 4 c’è “HTTP Strict Transport Security (HSTS)”. Il punto 5 è “Verifica header di sicurezza”. Il punto 6 è “Autologout amministratori per inattività”.

A cosa serve

Gli header sono istruzioni che il sito manda al browser insieme a ogni pagina. Il plugin li invia con l’hook send_headers di WordPress, senza toccare il file .htaccess. Quindi non rischi un errore 500 e funzionano anche senza mod_headers.

Gli header riguardano solo il sito pubblico. Non vengono mai inviati nell’area di amministrazione. Il plugin non offre una Content-Security-Policy e non invia X-XSS-Protection.

Come si usa il Paranoic Hardening

Header di sicurezza HTTP (punto 3)

  • X-Content-Type-Options invia nosniff. Il browser non “indovina” il tipo dei file. Il rischio è praticamente nullo.
  • X-Frame-Options invia SAMEORIGIN. Il sito non può più essere incorporato in un <iframe> di un altro dominio. Se un sito partner mostra le tue pagine, smetterà di farlo.
  • Referrer-Policy invia strict-origin-when-cross-origin. Verso altri domini viaggia solo il dominio, non il percorso. Statistiche di terzi che vogliono il referrer completo non lo riceveranno.

Spunta le caselle che ti servono e premi Salva Paranoic Hardening. Vedrai l’avviso “Impostazioni Paranoic Hardening salvate e applicate.” Le caselle che non spunti vengono salvate come disattivate.

HSTS (punto 4)

HSTS dice al browser di usare sempre https con il tuo dominio. Ci sono tre caselle: “Attiva HSTS”, “includeSubDomains” e “Preload”. L’header inviato ha max-age=31536000, cioè un anno. Il valore è fisso e non si cambia.

Il plugin rifiuta l’attivazione se la pagina non è stata aperta in https. In quel caso salva il resto e mostra un avviso rosso: “Impostazioni salvate, ma HSTS NON è stato attivato: questa richiesta non è arrivata in https. Apri il pannello in https e riprova.” Se la pagina è in http, le tre caselle sono anche disabilitate.

Se spegni “Attiva HSTS”, al salvataggio vengono azzerate anche “includeSubDomains” e “Preload”. Se riattivi HSTS, devi rispuntarle.

Verifica header di sicurezza (punto 5)

Premi Verifica ora. Il plugin fa una richiesta reale alla home del sito e controlla quali header arrivano davvero. Il risultato compare nel riquadro, con la data dell’ultimo test.

  • Verde: “Tutti gli header attesi sono presenti nella risposta reale del sito.”
  • Rosso: gli header attivi che non sono arrivati. Può essere un proxy, una CDN o un altro plugin che li rimuove. HSTS risulta mancante anche se l’indirizzo della home è http e non porta a https, perché il plugin lo invia solo su richieste https.
  • Blu: “Nessun header attivo da verificare: attiva almeno un’opzione qui sopra e salva.”
  • Rosso con “Richiesta di verifica fallita”: la richiesta non è andata a buon fine.

Il test controlla la presenza dell’header, non il suo valore. Non parte da solo: devi premerlo tu.

Autologout amministratori (punto 6)

Questa sezione del Paranoic Hardening ha un suo pulsante, Salva autologout amministratori. Spunta “Attiva” per disconnettere gli amministratori inattivi. Poi imposta il “Timeout di inattività (secondi)”. Se il browser blocca il localStorage (per esempio in navigazione privata), il controllo non scatta mai e non vieni disconnesso.

Il valore predefinito è 900, cioè 15 minuti. Il minimo è 60 e il massimo è 86400. Se scrivi un numero fuori dai limiti, il plugin lo porta al valore ammesso più vicino. Per esempio 30 diventa 60. L’avviso resta verde, quindi rileggi il numero nel campo dopo il salvataggio.

Vengono disconnessi solo gli utenti con il permesso manage_options. Editor e autori non vengono toccati. L’inattività è misurata nel browser: contano mouse, tastiera, scroll e tocco. La sessione si chiude come con “Esci” e le modifiche non salvate in un form aperto vanno perse.

Ordine consigliato di attivazione

  1. Apri il pannello in https.
  2. Attiva X-Content-Type-Options, salva e premi “Verifica ora”.
  3. Attiva Referrer-Policy, salva e verifica.
  4. Controlla che nessun sito incorpori il tuo, poi attiva X-Frame-Options, salva e verifica.
  5. Attiva l’autologout con un timeout generoso, per esempio 1800. Riducilo solo dopo qualche giorno.
  6. Per ultimo valuta HSTS, senza includeSubDomains e senza Preload.

Attiva una opzione alla volta. Se qualcosa si rompe, sai subito quale è stata.

Il rischio di HSTS, includeSubDomains e Preload

Attenzione: HSTS non si disfa dal sito. Se togli la spunta, il plugin smette di inviare l’header, ma i browser che l’hanno già ricevuto lo ricordano fino alla scadenza. Il plugin non invia mai max-age=0, quindi non ha un “annulla”. Lo dice anche il banner della scheda: gli effetti possono restare visibili per settimane o mesi.

Con HSTS attivo il browser rifiuta ogni connessione non https al dominio. Se il certificato scade o si rompe, il browser non mostra più nemmeno la schermata “continua comunque”. Il sito resta irraggiungibile da quel browser.

  • includeSubDomains estende la regola a tutti i sottodomini. Un solo sottodominio senza https valido, anche di test o futuro, diventa irraggiungibile per chi ha già visitato il sito. Attivalo solo se tutti i sottodomini sono e saranno https.
  • Preload aggiunge solo il flag preload all’header. Da solo non iscrive il sito: l’invio alla lista dei browser si fa a mano su hstspreload.org. La lista è dentro i browser, e uscirne richiede settimane. Considera Preload una scelta definitiva.

Salva sempre dalla versione https del pannello. Le caselle disabilitate non vengono inviate dal browser: salvando da una pagina http, HSTS e le sue sotto-opzioni si spengono.

Cosa succede dietro le quinte

Le impostazioni del Paranoic Hardening sono opzioni di WordPress, non regole del server. L’autologout stampa uno script solo nelle pagine di amministrazione. Lo script registra l’ultima attività nel localStorage del browser e ogni 5 secondi controlla il timeout. Alla scadenza chiede a admin-ajax.php di eseguire il logout e ti porta alla pagina di login. Il salvataggio finisce nel Registro attività solo se hai cambiato qualcosa.

Se qualcosa non va

  • Il riquadro è rosso dopo “Verifica ora”: un proxy, una CDN o un altro plugin sta togliendo gli header. Controlla la loro configurazione.
  • Un sito partner non mostra più le tue pagine: togli la spunta a X-Frame-Options e salva.
  • Non riesci ad attivare HSTS: riapri il pannello con l’indirizzo https.
  • Per controllare a mano gli header puoi usare gli strumenti sviluppatore del browser o curl -I sull’indirizzo https del sito.

Per capire meglio come funziona HSTS, leggi la pagina Strict-Transport-Security su MDN. Spiega max-age, includeSubDomains e preload con precisione.

Precedente: Scheda Test: verificare che le protezioni funzionino. Successivo: Registrazione utenti: chi può creare account. Per l’indice generale vai al capitolo 1 del manuale.

Commenti

Lascia un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *

Avviso sui cookie di WordPress da parte di Real Cookie Banner