Come usare shred su Linux per cancellare in modo sicuro dischi e partizioni

Introduzione
Cancellare i dati prima di vendere, riciclare o scartare un disco è essenziale per la privacy. Eliminare file con rm rimuove solo i puntatori del filesystem: i dati grezzi rimangono sul disco e possono essere recuperati. Anche riempire con zeri non sempre basta. shred è uno strumento che sovrascrive ripetutamente dati su file, partizioni o dischi interi per ridurre la probabilità di recupero anche con attrezzature complesse.
Definizione rapida: shred = utilità GNU che sovrascrive aree di memorizzazione ripetutamente e può aggiungere un’ultima passata con zeri.
Come funziona shred
shred scrive più passate di dati casuali su file o dispositivi a blocchi. Le opzioni principali controllano il numero di passate, la visualizzazione del progresso e una passata finale con zeri per nascondere che il disco è stato sovrascritto.
Esempi tipici di comandi (rimangono comandi shell):
man shred
which shred
apt-get install coreutils
Notare dal manuale di shred
Il manuale contiene un avviso importante — tradotto qui per chiarezza:
ATTENZIONE: Nota che shred si basa su un'assunzione molto importante: che il file system sovrascriva i dati in posizione. Questo è il modo tradizionale di operare, ma molti moderni progetti di file system non soddisfano questa assunzione. Gli esempi seguenti sono file system sui quali shred non è efficace, o non è garantito efficace in tutte le modalità del file system:
* file system log‑structured o journaling, come quelli forniti con AIX e Solaris (e JFS, ReiserFS, XFS, Ext3, ecc.)
* file system che scrivono dati ridondanti e continuano anche se alcuni write falliscono, come i file system basati su RAID
* file system che creano snapshot, come alcuni server NFS o appliance di rete
* file system che mettono in cache in posizioni temporanee, come client NFS versione 3
* file system compressi
Nel caso di ext3, il manuale osserva che il problema si presenta solo nella modalità data=journal (che effettua il journal anche dei dati). Nelle modalità data=ordered (predefinita) e data=writeback, shred funziona come previsto.
Quando shred non è efficace
- File system journaling, log‑structured o con snapshot: le scritture possono andare in posizioni diverse.
- RAID e livelli che mantengono copie multiple: le copie ridondanti possono non essere sovrascritte.
- SSD e flash: wear‑leveling e over‑provisioning possono lasciare blocchi non raggiungibili da sovrascritture standard.
- File system compressi o sistemi che scrivono cache temporanee.
Important: per dispositivi a stato solido (SSD), utilizzare metodi specifici (vedi sezione Alternative) perché shred potrebbe non raggiungere tutte le celle fisiche.
Preparazione: eseguire da live o modalità rescue
Se devi cancellare la partizione di sistema, avvia da un Live‑CD/USB (es. Ubuntu Live, Knoppix) o usa il sistema di rescue del tuo hoster. Non puoi cancellare una partizione montata e in uso.
Installare shred
shred fa parte di coreutils; su Debian/Ubuntu e derivati puoi installarlo così:
apt-get install coreutils
Verifica la presenza con:
which shred
Uso base di shred su partizioni e dischi
Per sovrascrivere la partizione /dev/sda5 dieci volte e vedere il progresso:
shred -vfz -n 10 /dev/sda5
Spiegazione opzioni:
- -v : visualizza il progresso
- -f : forza cambiamento di permessi se necessario (per permettere la scrittura)
- -z : aggiunge una passata finale con zeri per nascondere l’operazione di shredding
- -n N : numero di passate N (default = 3)
Per una partizione RAID (es. /dev/md1):
shred -vfz -n 10 /dev/md1
Per un intero disco (es. /dev/sda):
shred -vfz -n 10 /dev/sda
Nota: il tempo di esecuzione dipende dalla capacità del disco e dal numero di passate.
Alternative e approcci quando shred non basta
- hdparm –security‑erase per dischi ATA che supportano secure erase (utile per SSD/HDD moderni)
- nvme format o comandi NVMe per dispositivi NVMe con secure erase
- blkdiscard (per dispositivi che supportano TRIM/discard) per neutralizzare le celle su alcuni SSD
- dd con /dev/urandom o /dev/zero per sovrascritture sequenziali (più lento e meno flessibile)
- Crittografia preventiva: cifrare il disco fin dall’installazione e poi eliminare la chiave (fast, efficace)
- Distruzione fisica (ultima risorsa per sicurezza massima)
Quando preferire ciascuno: per SSD e NVMe, secure‑erase e comandi specifici dell’interfaccia sono generalmente migliori di overwrite software. Per HDD tradizionali, shred o dd possono essere adeguati.
Procedura consigliata (Playbook) per cancellare un disco da usare prima di vendere
- Effettua backup dei dati necessari e verifica l’integrità del backup.
- Avvia il sistema da live USB o entra in modalità rescue.
- Identifica il dispositivo con lsblk o fdisk -l.
lsblk
fdisk -l
- Se è un SSD: valuta hdparm o nvme secure erase. Se è un HDD tradizionale, shred è accettabile.
- Esegui shred (es. 3–10 passate a seconda del livello di sicurezza desiderato):
shred -vfz -n 10 /dev/sdX
- Verifica il risultato leggendo i primi blocchi (dovrebbero essere zeri o dati strani):
hexdump -C -n 512 /dev/sdX
- Registrare timestamp e identificatori del device per audit/privacy.
Checklist rapida prima di eseguire
- Backup completato e verificato
- Dispositivo corretto identificato
- Avviato da live o rescue
- Conosci tipo di dispositivo (HDD, SSD, NVMe)
- Scelta della tecnica di wipe confermata
- Tempo e risorse disponibili (l’operazione può durare ore)
Criteri di verifica
- Lo strumento hexdump non mostra dati leggibili nelle prime aree controllate.
- Per dischi crittografati, la rimozione della chiave rende i dati irrimediabilmente illeggibili.
- Per SSD, conferma con strumenti SMART o output del vendor che la procedura è stata eseguita.
Rischi e mitigazioni
- Rischio: cancellare il dispositivo sbagliato. Mitigazione: usare UUID o etichette e ricontrollare con lsblk/fdisk.
- Rischio: usare shred su SSD con wear‑leveling (incompleto). Mitigazione: usare secure‑erase specifico per dispositivo.
- Rischio: perdita di dati non ancora salvati. Mitigazione: backup e test restauri.
Note sulla privacy e conformità
Cancellare dati personali è spesso parte di obblighi legali o contrattuali (es. per GDPR). Conserva traccia delle operazioni (data, dispositivo, metodo) e usa metodi appropriati per il tipo di supporto: la cancellazione logica non sempre soddisfa requisiti formali di distruzione.
Esempi di comandi utili riassuntivi
# Verifica presenza shred
which shred
# Wipe partizione
shred -vfz -n 10 /dev/sda5
# Wipe disco intero
shred -vfz -n 10 /dev/sda
# Controllo esadecimale dei primi 512 byte
hexdump -C -n 512 /dev/sda
Quando preferire la distruzione fisica
Se il supporto contiene dati estremamente sensibili e non c’è fiducia nel metodo software, la distruzione fisica (triturazione, smagnetizzazione certificata per HDD) è l’opzione definitiva.
Sommario finale
shred è uno strumento efficace per sovrascrivere dischi e partizioni tradizionali. Prima dell’uso, identifica il tipo di dispositivo e valuta se shred è appropriato: i file system journaled, i RAID e gli SSD possono richiedere metodi diversi. Segui la procedura di backup, avvia da un ambiente live, applica il numero di passate richiesto e verifica l’esito. Conserva una piccola registrazione delle operazioni per motivi di privacy e audit.
Note importanti: non eseguire operazioni di cancellazione su sistemi montati; la cancellazione è irreversibile.