Migliori pratiche di sicurezza
La sicurezza è fondamentale quando si gestiscono documenti sensibili e transazioni blockchain. Questa guida spiega le pratiche di sicurezza essenziali per implementare e mantenere Chaindoc in ambienti di produzione.
Autenticazione e autorizzazione
Autenticazione a più fattori (MFA)
Attiva sempre l'autenticazione a più fattori (MFA) per tutti gli account utente, soprattutto per gli amministratori e gli utenti con privilegi avanzati. Chaindoc supporta:
- Password monouso basate sul tempo (TOTP) tramite app di autenticazione
- Verifica tramite SMS (meno sicura, da usare solo quando serve)
- Chiavi di sicurezza hardware (FIDO2/WebAuthn)
- Autenticazione biometrica sui dispositivi supportati
Regole per password sicure
Assicurati che le password siano abbastanza sicure:
- Minimo 12 caratteri con requisiti di complessità
- La password scade ogni 90 giorni per gli account sensibili
- Non riutilizzare le password (le ultime 10 password)
- Blocco dopo 5 tentativi di accesso falliti
- Indicatore di sicurezza della password durante la creazione
Controllo degli accessi basato sui ruoli (RBAC)
Applica il principio del privilegio minimo assegnando agli utenti solo le autorizzazioni di cui hanno bisogno:
- Definisci ruoli chiari: Visualizzatore, Editore, Amministratore, Revisore
- Usa permessi specifici per accedere ai documenti
- Controlla spesso i ruoli degli utenti e togli gli accessi che non servono più
- Metti in atto un accesso basato sul tempo per i collaboratori temporanei
- Separa i compiti per le operazioni critiche (ad esempio, i flussi di lavoro di approvazione).
Crittografia dei dati
Crittografia a riposo
Tutti i dati sensibili devono essere criptati quando li salvi:
- Usa la crittografia AES-256 per archiviare i documenti
- Crittografa i backup del database con chiavi separate
- Metti le chiavi di crittografia in un servizio di gestione delle chiavi (KMS) dedicato
- Cambia le chiavi di crittografia ogni tre mesi
- Attiva la crittografia completa del disco su tutti i server e le workstation
Crittografia durante il trasferimento
Proteggi i dati durante la trasmissione:
- Usa TLS 1.3 per tutte le connessioni
- Usa suite di cifratura robuste (disattiva quelle deboli)
- Implementa il certificate pinning per le app mobili.
- Attiva HSTS (HTTP Strict Transport Security)
- Usa canali criptati per le transazioni blockchain.
Sicurezza della blockchain
Gestione delle chiavi private
Le chiavi private della blockchain sono la risorsa di sicurezza più importante:
- Non salvare mai le chiavi private in testo semplice o repository di codice
- Usa moduli di sicurezza hardware (HSM) per le chiavi di produzione
- Usa portafogli multi-firma per operazioni di alto valore
- Crea delle procedure di backup delle chiavi con un archivio offline sicuro
- Usa chiavi separate per ambienti diversi (dev, staging, prod)
Sicurezza degli smart contract
Se usi contratti intelligenti personalizzati:
- Fai controlli di sicurezza approfonditi prima di mettere tutto in funzione.
- Usa modelli già visti ed evita codice sperimentale
- Metti dei dispositivi di interruzione per gli arresti di emergenza
- Fai un sacco di test sulle reti di prova prima di lanciare tutto sulla rete principale.
- Tieni d'occhio eventuali modelli di transazione insoliti.
Percorsi di audit della blockchain
Usa la blockchain per registrazioni di audit che non si possono cambiare:
- Registra tutti i cambiamenti dello stato dei documenti sulla blockchain.
- Operazioni sensibili all'hash per la verifica
- Metti le prove dei timestamp per essere in regola.
- Controlla spesso che i dati sulla blockchain siano a posto.
- Archivia le ricevute delle transazioni blockchain
Sicurezza API
Autenticazione API
Proteggi tutti gli endpoint API:
- Usa OAuth 2.0 o token JWT per l'autenticazione
- Fai in modo che i token scadano (dai 15 ai 60 minuti per i token di accesso).
- Cambia le chiavi API regolarmente (almeno ogni 90 giorni).
- Usa chiavi API separate per servizi diversi
- Non mostrare mai le chiavi API nel codice lato client
Limitazione della velocità e protezione DDoS
Evita abusi e interruzioni del servizio:
- Implementa la limitazione della velocità per chiave API e indirizzo IP
- Usa il backoff esponenziale per le richieste che non vanno a buon fine
- Implementa un Web Application Firewall (WAF)
- Attiva la protezione DDoS a livello di CDN/fornitore di servizi cloud
- Controlla se ci sono movimenti strani nel traffico
Convalida e sanificazione degli input
Proteggiti dagli attacchi di tipo injection:
- Controlla che tutti i dati inseriti siano in linea con schemi rigorosi
- Pulisci i contenuti forniti dagli utenti prima di salvarli o mostrarli
- Usa query parametrizzate per evitare attacchi SQL injection
- Implementa le intestazioni Content Security Policy (CSP)
- Escape l'output in tutti i contesti (HTML, JavaScript, URL)
Sicurezza delle infrastrutture
Segmentazione della rete
Metti da parte le parti importanti:
- Separa gli ambienti di produzione, staging e sviluppo
- Usa VPC e sottoreti private per i servizi sensibili
- Limita l'accesso al database solo ai server delle app
- Metti in atto le regole del firewall con politiche di rifiuto predefinite
- Usa host di salto/server bastion per l'accesso amministrativo
Gestione delle patch
Tieni aggiornati i sistemi:
- Metti le patch di sicurezza entro 48 ore dal rilascio
- Automatizza gli aggiornamenti delle dipendenze per le modifiche non significative
- Aggiorna regolarmente le immagini dei container e il sistema operativo di base
- Iscriviti agli avvisi di sicurezza per tutte le tecnologie che usi
- Prova le patch in fase di staging prima di metterle in produzione.
Sicurezza dei container e dell'orchestrazione
Se usi distribuzioni containerizzate:
- Usa immagini di base minime (Alpine, Distroless)
- Controlla le immagini per vedere se ci sono problemi prima di metterle online.
- Esegui i container come utenti non root
- Metti in atto politiche/standard di sicurezza dei pod
- Usa la gestione dei segreti (non le variabili d'ambiente)
- Attiva le politiche di rete per limitare il traffico tra i pod
Conformità e revisione
Conformità normativa
Assicurati di rispettare le regole che contano:
- GDPR: assicurati di rispettare il diritto alla cancellazione e alla portabilità dei dati.
- HIPAA: attiva la registrazione degli audit e i controlli di accesso per i dati sanitari
- SOC 2: Documenta i controlli di sicurezza e fai controlli annuali
- ISO 27001: Metti in atto un sistema di gestione della sicurezza delle informazioni
- Regolamenti specifici del settore (ad esempio, servizi finanziari, legali)
Registrazione dei controlli
Tieni registri completi per la sicurezza e la conformità:
- Registra tutti i tentativi di autenticazione (riusciti e falliti)
- Tieni traccia di quando qualcuno guarda, cambia o cancella i documenti.
- Tieni traccia delle azioni amministrative e delle modifiche alla configurazione
- Metti i registri in un sistema centralizzato e a prova di manomissione
- Conserva i registri per almeno 1 anno (o come richiesto dalle normative).
- Metti in atto il monitoraggio dei log e gli avvisi per attività sospette
Controlli di sicurezza regolari
Fai delle valutazioni periodiche sulla sicurezza:
- Fai scansioni trimestrali delle vulnerabilità
- Fai dei test di penetrazione ogni anno con l'aiuto di qualcuno esterno.
- Controlla ogni mese i controlli di accesso e i permessi degli utenti.
- Controlla le transazioni blockchain per vedere se ci sono anomalie
- Prova le procedure di backup e ripristino in caso di emergenza ogni tre mesi.
Monitoraggio e risposta agli incidenti
Monitoraggio della sicurezza
Metti in atto un monitoraggio della sicurezza in tempo reale:
- Implementa il sistema SIEM (Security Information and Event Management)
- Imposta degli avvisi per i tentativi di accesso falliti e l'escalation dei privilegi.
- Tieni d'occhio eventuali modelli di accesso ai dati insoliti.
- Tieni d'occhio le anomalie nell'uso delle API.
- Usa sistemi di rilevamento/prevenzione delle intrusioni (IDS/IPS)
Piano di risposta agli incidenti
Preparati per eventuali problemi di sicurezza:
- Documenta le procedure di risposta agli incidenti.
- Dai un'occhiata ai percorsi di escalation e alle informazioni di contatto
- Crea runbook per scenari di sicurezza comuni
- Fai esercitazioni teoriche ogni tre mesi.
- Metti in piedi dei protocolli di comunicazione per le violazioni.
- Mantieni le capacità di analisi forense
Backup e ripristino di emergenza
Assicurati che tutto funzioni come sempre:
- Fai dei backup automatici ogni giorno.
- Metti i backup in posti sparsi per il mondo.
- Criptare tutti i dati di backup
- Prova le procedure di ripristino ogni mese.
- Fai dei backup offline per proteggerti dai ransomware.
- Obiettivo di tempo di ripristino dei documenti (RTO) e obiettivo di punto di ripristino (RPO)
Sicurezza dello sviluppo
Ciclo di vita dello sviluppo sicuro
Metti la sicurezza nello sviluppo:
- Fai delle revisioni del codice concentrandoti sulla sicurezza
- Usa strumenti di test di sicurezza delle applicazioni statiche (SAST)
- Implementa la scansione delle dipendenze nella pipeline CI/CD.
- Richiedi una formazione sulla sicurezza per tutti gli sviluppatori
- Non inserire mai informazioni riservate nel controllo di versione
- Usa gli hook pre-commit per evitare che i dati sensibili finiscano fuori
Dipendenze da terze parti
Gestisci i rischi delle librerie esterne:
- Aggiorna spesso le dipendenze alle ultime versioni sicure
- Usa strumenti come Dependabot, Snyk o npm audit
- Controlla gli avvisi di sicurezza per i pacchetti usati
- Riduci al minimo il numero di dipendenze
- Controlla che il pacchetto sia a posto e che chi lo gestisce sia affidabile.
- Pensa a vendere le dipendenze critiche
Formazione e sensibilizzazione degli utenti
La sicurezza è responsabilità di tutti:
- Fai un corso di sicurezza per tutti gli utenti
- Fai un po' di formazione su phishing e ingegneria sociale.
- Crea politiche e linee guida chiare sulla sicurezza
- Metti in piedi dei sistemi per segnalare i problemi di sicurezza.
- Premiare la divulgazione responsabile delle vulnerabilità
- Tieni aggiornata la documentazione sulla sicurezza
Lista di controllo per la sicurezza
Usa questa lista di controllo prima di passare alla produzione:
- ✓ MFA attivato per tutti gli account utente
- ✓ Regole severe sulle password
- ✓ Implementa RBAC con il minimo privilegio
- ✓ Tutti i dati sono criptati sia quando sono fermi che quando viaggiano
- ✓ TLS 1.3 è attivo su tutti i terminali
- ✓ Chiavi private salvate in HSM o in un archivio sicuro
- ✓ Limitazione della frequenza API configurata
- ✓ Protezione WAF e DDoS attivata
- ✓ Hai fatto la convalida e la pulizia dei dati inseriti
- ✓ Segmentazione di rete configurata correttamente
- ✓ Tutti i sistemi aggiornati e con le ultime patch
- ✓ Registrazione completa degli audit abilitata
- ✓ Monitoraggio della sicurezza e avvisi attivi
- ✓ Piano di risposta agli incidenti documentato e testato
- ✓ Backup automatici configurati e testati
- ✓ Scansione di sicurezza nella pipeline CI/CD
- ✓ Requisiti di conformità documentati e rispettati
Risorse aggiuntive
Per saperne di più sulla sicurezza di Chaindoc:
- I 10 principali rischi per la sicurezza delle applicazioni web secondo OWASP
- Quadro di riferimento per la sicurezza informatica del NIST
- Parametri di sicurezza CIS
- Migliori pratiche per la sicurezza della blockchain (Consensys)
- Linee guida della Cloud Security Alliance
Per questioni o domande relative alla sicurezza, contatta il nostro team di sicurezza all'indirizzo security@chaindoc.com o segnala le vulnerabilità tramite il nostro programma di divulgazione responsabile.