Disque dur déchiqueter sur Linux

Disque dur déchiqueter sur Linux

Lorsque nous supprimons un fichier à partir d'un système de fichiers, les données ne sont pas physiquement supprimées: le système d'exploitation marque simplement la zone précédemment occupée par le fichier, comme gratuitement et la rend disponible pour stocker de nouvelles informations. La seule façon de s'assurer que les données sont réellement supprimées d'un appareil est de les remplacer avec d'autres données. Nous voulons peut-être effectuer une telle opération pour des raisons de confidentialité (peut-être que nous prévoyons de vendre l'appareil et nous voulons être sûr que le nouveau propriétaire ne peut pas accéder à nos données), ou peut-être pour préparer un appareil pour le chiffrement. Dans ce tutoriel, nous verrons certains outils que nous pouvons utiliser pour effacer complètement les données sur un appareil

Dans ce tutoriel, vous apprendrez:

  • Comment déchiqueter les données à l'aide de DD
  • Comment sécuriser les fichiers et périphériques à l'aide de l'utilitaire Shred
  • Comment écraser les données à l'aide de badblocks


Exigences et conventions logicielles utilisées

Exigences logicielles et conventions de ligne de commande Linux
Catégorie Exigences, conventions ou version logicielle utilisée
Système Indépendant de la distribution
Logiciel DD, Shred ou Badblocks
Autre
  • Familiarité avec le shell bash et l'interface de ligne de commande Linux
Conventions # - Exige que les commandes Linux soient exécutées avec des privilèges racine soit directement en tant qu'utilisateur racine, soit par l'utilisation de Sudo commande
$ - Exige que les commandes Linux soient exécutées en tant qu'utilisateur non privilégié régulier

Effacement des données à l'aide de DD

DD est un programme très puissant inclus par défaut dans toutes les principales distributions Linux. Dans un article précédent, nous avons vu comment utiliser DD en détail; Dans ce cas, tout ce que nous voulons faire est de remplacer le contenu de notre dispositif de bloc hypothétique avec des zéros ou des données aléatoires. Dans les deux cas, nous pouvons utiliser des données générées par des fichiers «spéciaux»: / dev / zéro et dev / urandom (ou / dev / aléatoire) respectivement. Le premier renvoie des zéros chaque fois qu'une opération de lecture est effectuée dessus; Ce dernier renvoie des octets aléatoires à l'aide du générateur de nombres aléatoires du noyau Linux.

Pour remplir le disque de zéros, nous pouvons courir:

$ sudo dd if = / dev / zéro de = / dev / sdx

Pour utiliser des données aléatoires, à la place:

$ sudo dd if = / dev / urandom de = / dev / sdx


Utilisation d'un conteneur LUKS comme générateur de données aléatoires

La suppression d'un appareil avec des données aléatoires est une opération longue, mais peut être utile surtout si nous prévoyons d'utiliser un chiffrement en disque complet, afin de rendre la partie utilisée et inutilisée des disques indiscernables. Pour accélérer le processus, nous pouvons utiliser un petit «truc»: nous pouvons créer un Luks(Configuration de la clé unifiée Linux) conteneur sur l'appareil ou la partition que nous voulons remplir avec des données aléatoires et y écrire des zéros. Grâce au chiffrement, les données seront écrites de manière transparente sur l'appareil sous-jacent comme aléatoire.

Tout d'abord, nous créons le Luks récipient:

$ sudo cryptsetup luksformat / dev / sdx avertissement! ======== Cela écrasera les données sur / dev / sdx irrévocablement. Es-tu sûr? (Tapez une maîtrise en majuscule oui): Oui Entrez la phrase de passe pour / dev / sdx: vérifiez la phrase de passe:

Dans ce cas, il n'est pas vraiment nécessaire d'utiliser un mot de passe solide, car nous utilisons le conteneur comme générateur de données aléatoire, et nous l'effacerons une fois l'opération terminée. Une fois le conteneur prêt, nous l'ouvrirons en exécutant la commande suivante:

$ sudo cryptsetup luksopen / dev / sdx crypted Entrez en phrase passhrase pour / dev / sdx:

Maintenant que le conteneur est ouvert, nous pouvons utiliser DD et le remplir de zéros. Très important: nous écrivons dans le conteneur Luks mappé comme / dev / mappeur / crypté, pas sur le sous-jacent / dev / sdx dispositif directement:

$ sudo dd if = / dev / zéro de = / dev / mapper / crypted bs = 1m

Une fois toutes les données écrites, nous fermons le conteneur et passons à l'en-tête LUKS avec des données aléatoires. La taille de l'en-tête dépend du format de Luks en usage: c'est 2mib pour l'héritage Luks format, et 16 mib pour le Luks2 Format, qui est devenu la valeur par défaut dans les versions récentes de CryptSetUp. Pour être sûr, nous pouvons remplacer les 20 premiers mib du disque:

$ sudo cryptsetup luksclose / dev / mapper / crypted $ sudo dd if = / dev / urandom de = / dev / sdx bs = 1m nombre = 20


Effacement des données à l'aide de shred

Le nom de cet utilitaire son assez explicite: son objectif principal, comme indiqué dans le manuel, est de remplacer les fichiers et de le supprimer éventuellement. Le déchiqueter L'utilitaire repose sur l'hypothèse que le système de fichiers écrase les données en place. L'application peut ne pas nous permettre d'atteindre le résultat attendu, par exemple, sur les systèmes de fichiers journaliers, comme EXT4 (probablement le système de fichiers Linux le plus utilisé), s'il est monté avec le data = journal option.

Lors du montage d'un système de fichiers EXT4, avec le données = ordonné ou données = écriture Options (la première est la valeur par défaut), les données sont écrites au système de fichiers principal après le métadonnées est engagé dans le journal. Dans les deux cas, déchiqueter fonctionne bien, produisant les résultats attendus.

Lorsque vous utilisez le data = journal L'option, à la place, non seulement les métadonnées, mais les données elle-même sont écrites dans le journal du système de fichiers, avant d'être écrite sur le système de fichiers principal. Il est facile de voir pourquoi cela peut causer des problèmes.

Voyons quelques exemples de l'utilisation de l'application. Supposons que nous voulions supprimer sécurisé un fichier nommé «test». Tout ce que nous avons à faire est d'exécuter la commande suivante (ici nous utilisons le -V Option pour rendre le programme plus verbeux):

$ shred -v Test Shred: Test: passer 1/3 (aléatoire)… déchiqueter: Test: passer 2/3 (aléatoire)… SHRED: TEST: passer 3/3 (aléatoire)… 

Par défaut, l'application remplace le fichier spécifié 3 fois avec des données aléatoires. Le nombre de passes peut être modifié en utilisant le -n (court pour --itérations) option. Pour remplacer le fichier 6 fois, nous exécutions:

SHRED -V -N 6 Test Shred: Test: Pass 1/6 (aléatoire)… CHRED: TEST: PASS 2/6 (000000)… CHRED: TEST: PASS 3/6 (555555)… CHRED: TEST: PASS 4 / 6 (FFFFFF)… SHRED: TEST: PASS 5/6 (AAAAAA)… SHRED: TEST: Passez 6/6 (aléatoire)… 

Il y a des cas dans lesquels nous pouvons vouloir masquer le fait qu'une opération de déchiquetage a été effectuée sur un fichier ou un appareil. Dans ces situations, nous pouvons utiliser le programme -z (court pour --zéro) Option pour faire en sorte que le programme effectue un laissez-passer supplémentaire avec des zéros après le déchiquetage:

$ shred -v -n 6 -z Test shred: Test: pass 1/7 (aléatoire)… déchiqueter: test: passer 2/7 (FFFFFF)… SHRED: TEST: PASS 3/7 (AAAAAA)… CHRED: TEST: TEST: Passer 4/7 (555555)… SHRED: TEST: PASS 5/7 (000000)… CHRED: TEST: Pass 6/7 (aléatoire)… SHRED: TEST: PASS 7/7 (000000)… 


De la sortie verbeuse de la commande, nous pouvons en effet remarquer comment la dernière passe est effectuée en écrivant des zéros (000000). Nous pouvons le vérifier en exécutant le hexdume Programme sur le fichier:

$ hexdump test 0000000 0000 0000 0000 0000 0000 0000 0000 0000 * 0008000 

Suppression du fichier

Si nous jetons un œil au système de fichiers après avoir exécuté l'une des commandes dans les exemples ci-dessus, nous pouvons remarquer que, bien que remplacé par des données aléatoires, le fichier lui-même n'a pas été supprimé: cela se produit parce que la commande peut également être utilisée sur des fichiers qui représentent entiers Bloquer des appareils ou des partitions (E.g / dev / sda), et ceux-ci ne doivent pas être supprimés.

Lorsque vous opérez sur des fichiers communs, nous voulons peut-être également traiter un fichier du système de fichiers après l'emporter. Pour réaliser ce comportement, nous pouvons utiliser le -u ou la --retirer options. Les deux options entraînent la suppression d'un fichier, mais avec ce dernier, nous pouvons également spécifier comment la suppression doit être effectuée. Nous pouvons écouter entre:

  • déchaîner: le fichier est supprimé en utilisant une norme déchaîner appel système;
  • essuyer: Les octets du nom du fichier sont obscurcis avant la suppression;
  • wipesync: Les octets obscurcis sont également synchronisés avec le disque;

Le wipesync Le mode est la valeur par défaut.

Effacement des données à l'aide de badblocks

Bien que le badblocks L'objectif principal de l'utilitaire est de rechercher de mauvais blocs, en utilisant un mode d'écriture Test perturbateur Nous pouvons remplacer efficacement les données existantes et sécurisées sur un appareil. Tout ce que nous avons à faire est de lancer la commande et de spécifier le -w Option: le test sera effectué par rédaction d'abord puis en lisant le 0xaa, 0x55, 0xff et 0x00 Modèles de données sur chaque bloc et comparez le contenu.

Nous pouvons utiliser le -s et -V Options, pour faire respectivement faire afficher les informations de progression du programme et le nombre d'erreurs de lecture et d'écriture rencontrées. Pour essuyer notre appareil, nous exécutrions donc:

$ sudo badblocks -wsv / dev / sdx vérifiant les mauvais blocs en mode lecture-écriture du bloc 0 à 3870719 test avec motif 0xaa: ^ c6.30% fait, 0:41 écoulé. (Erreurs 0/0/0)

Pour exécuter la commande au-dessus du périphérique, il faut être monté, sinon badblocks refusera de courir à moins que l'opération ne soit forcée avec le -F option. Le nombre par défaut de blocs testés à la fois est 64; Nous pouvons cependant modifier ce paramètre en utilisant le -c option.

Conclusions

Dans cet article, nous avons vu trois utilitaires que nous pouvons utiliser pour déchiqueter les données sur un appareil, et quelques exemples de leur utilisation. Dd et déchiqueter font partie des utils GNU Core, ils sont donc presque déjà installés sur votre système. Badblocks est un logiciel utilisé pour tester l'existence de mauvais blocs: lors de l'exécution d'un test en lecture avec elle, nous pouvons remplacer les données sur un appareil. Veuillez noter que l'efficacité du déchiquetage des données dépend également du type de dispositif utilisé: les lecteurs à l'état solide, par exemple, doivent faire face à des phénomènes comme l'amplification d'écriture.

Tutoriels Linux connexes:

  • Choses à installer sur Ubuntu 20.04
  • Reprenez votre confidentialité et votre sécurité à l'ère numérique
  • Choses à faire après l'installation d'Ubuntu 20.04 Focal Fossa Linux
  • Comment utiliser Google Drive sur Linux
  • Comment partitionner le lecteur USB en Linux
  • Comment comparer les performances du disque sur Linux
  • Comment partitionner un lecteur sur Linux
  • Cryptage complet du disque avec veracrypt sur Ubuntu Linux
  • Mint 20: Mieux que Ubuntu et Microsoft Windows?
  • Une introduction à l'automatisation Linux, des outils et des techniques