Effacer de manière sécurisée un disque dur



Introduction



Cet article présente différentes façons d'effacer un disque dur de manière sûre.


Les outils et méthodes



Avant toute chose, relever le nom du disque via la commande

Code BASH :
fdisk -l


Ici, je prendrai comme exemple sdb :
Code BASH :
Disque /dev/sdb : 8 GB, 8589934592 bytes


Avec dd



On peut effacer un disque dur avec la commande dd.
On peut utiliser en entrée soit /dev/zero pour n'écrire que des zéros, soit /dev/urandom pour écrire des données aléatoires.
Évidemment, en effaçant avec des zéros, c'est plus rapide, mais moins efficace.

Avec des zéros :
Code BASH :
dd if=/dev/zero of=/dev/sdb


Avec des données aléatoires :
Code BASH :
dd if=/dev/urandom of=/dev/sdb


Tout le disque est écrasé quand la commande arrive à la fin :
Code BASH :
dd: écriture vers « /dev/sdb »: Aucun espace disponible sur le périphérique


Relancer la commande autant de fois qu'on souhaite écrire sur le disque, où utiliser une petite boucle for (exemple ici avec 3 fois) :

Code BASH :
for i in $(seq 3)
do
dd if=/dev/urandom of=/dev/sdb
done
 


Si on veut avoir une progression on peut utiliser comme alternative dcfldd ou piper dans pv :
Code BASH :
dcfldd if=/dev/urandom of=/dev/sdb

Qui affiche la progression :
Code BASH :
1280 blocks (40Mb) written.


Code BASH :
cat /dev/urandom | pv | dd of=/dev/sdb

Qui affiche la progression :
Code BASH :
78MiO 0:00:03 [12.4MiB/s] [              <=>                                 ]


Cette méthode n'est pas très rapide.
Avec mes tests : 16Mo/s avec des zéros, 12Mo/s avec urandom.


Avec nwipe



Nwipe est une commande qui efface de manière sécurisée des disques durs en utilisant diverses méthodes.

L'outil s'installe depuis les dépôts de la distribution.

Lancer l'outil avec la commande nwipe.

Naviguer avec les flèches haut et bas pour naviguer entre les disques et appuyer sur espace pour valider le disque à écraser. Le mot "wipe" apparait. On peut sélectionner plusieurs disques.

Code TEXT :
               nwipe 0.17 (based on DBAN's dwipe - Darik's Wipe)
+---------------- Options -----------------++----------- Statistics -----------+
|Entropy: Linu| Kernel (urandom)           ||Runtime:                          |
|PRNG:    Mersenne Twister (mt19937ar-cok) ||Remaining:                        |
|Method:  DoD Short                        ||Load Averages:                    |
|Verify:  Last Pass                        ||Throughput:                       |
|Rounds:  1 (plus blanking pass)           ||Errors:                           |
+------------------------------------------++----------------------------------+
+---------------------------- Disks and Partitions ----------------------------+
|                                                                              |
|   [    ] 1. /dev/sda - ATA VBOX HARDDISK  (32212254720 bytes)                |
| > [wipe] 2. /dev/sdb - ATA VBOX HARDDISK  (8589934592 bytes)                 |
|   [    ] 3. /dev/mapper/centos_atelier--coagul-swap - Linu| device-mapper (li|
|   [    ] 4. /dev/mapper/centos_atelier--coagul-root - Linu| device-mapper (li|
|ar)  (29490151424 bytes)                                                      |
|                                                                              |
|                                                                              |
|                                                                              |
|                                                                              |
|                                                                              |
|                                                                              |
|                                                                              |
+------------------------------------------------------------------------------+
Ctrl-C=Quit S=Start M=Method P=PRNG V=Verify R=Rounds B=Blanking-pass Space=Sele


Une barre d'aide des commandes en bas s'affiche.

M permet de choisir une autre méthode :

Code BASH :
               nwipe 0.17 (based on DBAN's dwipe - Darik's Wipe)
+---------------- Options ----------------q++----------q Statistics ----------q+
|Entropy: Linu| Kernel (urandom)           ||Runtime:                          |
|PRNG:    Mersenne Twister (mt19937ar-cok) ||Remaining:                        |
|Method:  DoD Short                        ||Load Averages:                    |
|Verify:  Last Pass                        ||Throughput:                       |
|Rounds:  1 (plus blanking pass)           ||Errors:                           |
+------------------------------------------++----------------------------------+
+-------------------------------- Wipe Method ---------------------------------+
|                                                                              |
|   Quick Erase               syslinux.cfg: nuke="nwipe --method gutmann"      |
|   RCMP TSSIT OPS-II         Security Level: High (35 passes)                 |
|   DoD Short                                                                  |
|   DoD 5220.22-M                                                              |
| > Gutmann Wipe                                                               |
|   PRNG Stream                                                                |
|                                                                              |
| The American Department of Defense 5220.22-M short wipe.                     |
| This method is composed of passes 1,2,7 from the standard wipe.              |
|                                                                              |
|                                                                              |
|                                                                              |
+------------------------------------------------------------------------------+
                            J=Up K=Down Space=Select


Naviguer avec les flèches haut et bas pour changer la méthode (les détails s'affichent sur le volet de droite), espace pour valider le choix. (Ici j'ai choisi ce que j'utilise toujours : Gutmann Wipe

De la même façon, on peux choisir le nombre de fois où on veut effectuer la tâche (avec R), etc ...

Pour débuter l'effacement, on appuie sur S :

Code BASH :
               nwipe 0.17 (based on DBAN's dwipe - Darik's Wipe)
+---------------- Options -----------------++----------- Statistics -----------+
|Entropy: Linux Kernel (urandom)           ||Runtime:       00:00:18           |
|PRNG:    Mersenne Twister (mt19937ar-cok) ||Remaining:     00:55:26           |
|Method:  Gutmann Wipe                     ||Load Averages: 0.89 0.30 0.17     |
|Verify:  Last Pass                        ||Throughput:    762160 KB/s        |
|Rounds:  1 (plus blanking pass)           ||Errors:        0                  |
+------------------------------------------++----------------------------------+
+------------------------------------------------------------------------------+
|                                                                              |
| /dev/sdb - ATA VBOX HARDDISK                                                 |
|   [00.40%, round 1 of 1, pass 1 of 35] [writing] [95270 KB/s]                |
|                                                                              |
|                                                                              |
|                                                                              |
|                                                                              |
|                                                                              |
|                                                                              |
|                                                                              |
|                                                                              |
|                                                                              |
|                                                                              |
+------------------------------------------------------------------------------+
                           B=Blank screen, ctrl-c=Quit


On voit ici que c'est rapide avec 95Mo/s, la rapidité maximale du disque dur physique (ou presque).



Avec shred



La commande shred permet d'écrire sur un fichier pour cacher son contenu et l'effacer.
On peut l'utiliser également pour supprimer de manière sécurisée un disque dur.

L'outil est installé par défaut avec la plupart des distributions puisqu'il est inclus dans le paquetage coreutils.

Pour effacer un disque on utilise la commande ainsi

Code BASH :
shred -zvf /dev/sdb


Par défaut, 3 passages sont effecutés.
Un point sur les options :
  • -z : ajoute des zéros à la fin de l'opération d'effacement
  • -v : affiche la progression de l'opération (mode verbeux)
  • -f : force les permissions si nécessaire


Si on veut effectuer plus de passages (par exemple 5) on utilise l'option -n :

Code BASH :
shred -zvf -n 5 /dev/sdb


Voici un exemple de progression :
Code TEXT :
shred: /dev/sdb : passe 1/6 (random)…
shred: /dev/sdb : passe 1/6 (random)…35MiB/8,0GiB 0 %
shred: /dev/sdb : passe 1/6 (random)…70MiB/8,0GiB 0 %
shred: /dev/sdb : passe 1/6 (random)…103MiB/8,0GiB 1 %
shred: /dev/sdb : passe 1/6 (random)…139MiB/8,0GiB 1 %
shred: /dev/sdb : passe 1/6 (random)…225MiB/8,0GiB 2 %
[...]
 
shred: /dev/sdb : passe 6/6 (000000)…7,3GiB/8,0GiB 92 %
shred: /dev/sdb : passe 6/6 (000000)…7,6GiB/8,0GiB 95 %
shred: /dev/sdb : passe 6/6 (000000)…7,8GiB/8,0GiB 98 %
shred: /dev/sdb : passe 6/6 (000000)…8,0GiB/8,0GiB 100 %
Cette page a été vue 7591 fois