Effacement total des données

Dans le but d’empêcher le vol de données d’une entreprise en cas de revente ou de don de matériels par exemple mais aussi comme une protection intermédiaire avant la mise au rebut du matériel (DEEE : Déchets d’Équipements Électriques et Électroniques) il est judicieux de procéder à un effacement définitif des fichiers (ou d’une partition) sans possibilité de récupération.

Les fichiers ne sont jamais vraiment supprimés du système, il est la plupart du temps possible de les récupérer, même si ces derniers ont été supprimés il y a longtemps (heures, jours, mois, années) avec l’utilisation d’une application telle que Foremost (Linux) ou EasyRecovery (Windows).

Deux commandes permettent de détruire simplement vos dossiers/fichiers sous linux afin d’éviter toute récupération possible.

La commande Shred

La commande shred est une commande unix qui permet d’effacer définitivement le contenu d’un fichier (ou d’une partition) sans possibilité de récupération. Le but de shred est de rendre difficile toute récupération des données. Pour celà shred écrit de façon répétitive et aléatoire une suite de 1 et de 0 dans le fichier.

Effacer un fichiers ou une partition

La commande shred (qui signifie déchiqueter) va permettre de détruire un fichier ou une partition entière.

Utilisation : shred [OPTION]... FICHIER...
Utilisation : shred [OPTION]... PARTITION...

/!*Attention, aucune confirmation ne sera demandée* en utilisant la commande ci dessous.

# shred nom-du-fichier
# shred /dev/partition

En visualisant le contenu de votre fichier avec la commande cat par exemple vous y verrez quelque chose du genre :

�ȋ󇇇�����&��(�P+�kƮ��h���d�*�����g�Ęm*�N��PJLkyf]�����F�4�������
&:��6e��ץ��7_X���=�Y�|���ն����%{���$���a����� ��0ޘ��ħo"L�U��`w��
Ҙ;�26��\"nw(z�V�����-�e��x!��/������\$��{'�}��z�M�M��Lk|���n̉��$��
��2L!�'�P�5��b@�F�j+�+�)6��IJ�V@z�c�`d�����}�~�w��ɺU��R%��.9}��U2��

Il est possible d’ajouter des options au déchiquetage, comme le nombre de passe, de supprimer le fichier en fin d’opération, de camoufler le déchiquetage, …

-f      modifier les droits pour permettre l'écriture si nécessaire
-n écraser N fois (3 par défaut)
-u tronquer et supprimer le fichier après l'avoir écrasé
-v afficher un indicateur de progression
-z ajouter une réécriture finale avec des zéros pour camoufler le broyage du fichier

Exemple concret

Déchiquetage du fichier secrets.txt en 10 passes, avec camouflage de l’opération, suppression en fin de traitement et verbose. Les options utilisées auront pour effet de  :

  • remplacer 10 fois les données du fichier par des déchets (-n 10)
  • remplacer ces données par des zéros (-z) pour masquer le déchiquetage
  • tronquer et supprimer le fichier (-u)

La commande shred va simplement réécrire le fichier au nombre de passes désirées avec des caractères aléatoires

# shred -n 10 -z -v -u secrets.txt
shred  secrets.txt   passe 1/11 (random)…
shred secrets.txt passe 2/11 (249249)…
shred secrets.txt passe 3/11 (aaaaaa)…
shred secrets.txt passe 4/11 (ffffff)…
shred secrets.txt passe 5/11 (924924)…
shred secrets.txt passe 6/11 (random)…
shred secrets.txt passe 7/11 (b6db6d)…
shred secrets.txt passe 8/11 (000000)…
shred secrets.txt passe 9/11 (555555)…
shred secrets.txt passe 10/11 (random)…
shred secrets.txt passe 11/11 (000000)…
shred secrets.txt suppression
shred secrets.txt renommé en 0000000000
shred 0000000000 renommé en 000000000
shred 000000000 renommé en 00000000
shred 00000000 renommé en 0000000
shred 0000000 renommé en 000000
shred 000000 renommé en 00000
shred 00000 renommé en 0000
shred 0000 renommé en 000
shred 000 renommé en 00
shred 00 renommé en 0
shred secrets.txt supprimé

Limites de shred

Voici les systèmes de fichiers sur lesquels shred n’est pas efficace ou garanti :

  • systèmes de fichiers qui mettent en cache les données dans des emplacements temporaires, NFS version 3
  • systèmes de fichiers log-structured ou journalisés, JFS, ReiserFS, XFS, Ext3, etc.
    • Dans les systèmes de fichiers ext3, le déchiquetage est d’une efficacité limitée en mode :
      • data=journal (journalise données et métadonnées)
      • Dans les modes ci-dessous shred fonctionne correctement
        • data = ordered (par défaut)
        • data = writeback
  • systèmes de fichiers qui produisent des snapshots.
  • systèmes de fichiers basés sur RAID.
  • systèmes de fichiers compressés

A noter que des sauvegardes antérieures du système de fichiers et des miroirs distants peuvent contenir des copies du fichier qui a été déchiqueté. Il pourra donc être récupéré plus tard.

Il est également à noter que la commande Shred permet seulement le déchiquetage de fichiers mais pas d’une arborescence (ou d’un répertoire). pour cela il faut utiliser la commande wipe

La commande Wipe

La commande wipe permet d’effacer définitivement le contenu d’un fichier, d’une partition ou d’un répertoire ainsi que sa sous arborescence sans possibilité de récupération. Le but de wipe est de rendre difficile toute récupération des données. Pour celà wipe écrit des données aléatoires provennant de /dev/random.

Effacer un fichier, une partition, un dossier et son arborescence

La commande wipe (qui signifie effacer, essuyer) va permettre de détruire un fichier, un dossier et sa sous arborescence ou une partition entière.

Utilisation : wipe [options] FICHIER
Utilisation : wipe [options] REPERTOIRE
Utilisation : wipe [options] PARTITION

/!\ Attention, aucune confirmation ne sera demandée en utilisant la commande ci-dessous, et les fichiers seront ici directement supprimés (sauf si vous utilisez l’option -k)

# wipe -k mon_fichier
# wipe -r /mon/repertoire
# wipe /dev/partition

En visualisant le contenu de votre fichier avec la commande cat par exemple vous y verrez un fichier vide, ou comportant parfois quelques caractères.

Il est possible d’ajouter des options au déchiquetage, comme le nombre de passe, de ne pas supprimer le fichier en fin d’opération, …

-f Force, i.e. don't ask for confirmation (utile dans un script)
-i Informative (verbose) mode
-k Keep files, i.e. do not remove() them after overwriting
-P <passes> Set number of passes for filename wiping.
Default is 1.
-Q <number> set number of passes for quick wipe
-q Quick wipe, less secure, 4 random passes by default
-r Recurse into directories -- symlinks will not be followed
-s Mode silencieux, n'affiche pas les résultats et la procédure

Exemple concret

Effacer définitivement un dossier ainsi que tous ses sous-dossiers avec 35 passes en mode verbeux. Les options utilisées auront pour effet de :

  • -r supprime tout le dossier ainsi que ses sous-dossier (mode récursif).
  • -i active le mode verbeux
  • -Q 35 écrit des données aléatoires 35 fois dans le fichier.
  • -q option obligatoire pour utiliser -Q

Les données aléatoires proviennent de /dev/random

# wipe -r -i -Q 35 -q dossier_des_Secrets
Okay to WIPE 1 directory ? (Yes/No) yes
Entering directory 'wipage'
Wipoing fichier02, pass 34 in quick mode File fichier02 (4096 bytes) wiped
Wipoing fichier01, pass 34 in quick mode File fichier01 (4096 bytes) wiped
Going back to directory /home/aline/Documents/dossier_des_Secrets
Operation finished.
2 files wiped and 0 special files ignored in 1 directory, 0 symlinks removed but not followed,
0 errors occurred.

Commande dd

La commande dd est surtout une commande générique pour copier les blocs. Elle est très utile pour faire des copies de disques bas niveau, et mettre une image bootable sur une clé USB par exemple. Elle est également un moyen facile de créer des fichiers de taille arbitraire. Alors que wipe et shred ne servent vraiment qu’à effacer les données.

Créer des fichiers de taille arbitraire

Créer un fichier de X Mo avec dd :

# dd if=/dev/zero of=path/to/file bs=1M count=X 

Signification des options :

bs=BYTES        read and write up to BYTES bytes at a time (default: 512)
count=N copy only N input blocks

Effacer un dique entier

La commande dd sert à copier un fichier, le convertir et le formater en fonction des options choisies.

L’exemple si dessous va remplir le disque sdX de zéros (avec le code ASCII 0x00) en utilisant le fichier /dev/zero.

# dd if=/dev/zero of=/dev/sdX bs=1M 

Pour compliquer davantage le processus de récupération, on peut utiliser des données aléatoires en utilisant le fichier /dev/urandom.

# dd if=/dev/urandom of=/dev/sdX bs=1M

Effacer une partition

Le principe est exactement le même, il suffit de préciser la partition du disque à effacer.

dd if=/dev/zero of=/dev/sdX4 bs=1M

dd if=/dev/urandom of=/dev/sdX4 bs=1M

Script de sûreté

Si vous voulez vraiment de la haute sécurité, il faudrait écrire au moins 7 fois sur votre lecteur avec des données aléatoires. C’est la procédure utilisé par le gouvernement américain pour sécuriser ses propres données.

Créer un script DANGER_Wipe_sdX.sh, le code est le suivant :

!/bin/bash 
for n in `seq 7`;
do
dd if=/dev/urandom of=/dev/sdX bs=8b conv=notrunc;
done

Notrunc : ne pas tronquer le fichier de sortie.

Effacer le chargeur de démarrage (Master Boot Record)

Il est possible d’effacer votre MBR en sélectionnant les secteurs du disque, ici on précise qu’on va démarrer l’effacement à partir du premier secteur avec count=1.

dd if=/dev/zero of=/dev/hdX bs=446 count=1

Documentation

https://fr.wikipedia.org/wiki/Shred_
http://www.admin6.fr/2012/06/linux-detruire-facilement-des-fichiers-avec-shred-et-wipe
https://www.lifewire.com/wipe-vs-shred-vs-delete-vs-erase-whats-the-difference-2619146
https://www.it-connect.fr/shred
http://how-to.wikia.com/wiki/How_to_wipe_a_hard_drive_clean_in_Linux
https://www.marksanborn.net/howto/wiping-a-hard-drive-with-dd
https://doc.ubuntu-fr.org/shred
https://doc.ubuntu-fr.org/wipe
https://www.it-connect.fr/wipe-supprimer-definitivement-un-dossier-sous-ubuntu%ef%bb%bf

> Partager <