web-dev-qa-db-fra.com

Comment accélérer l'effacement sécurisé d'un disque?

J'ai besoin d'effacer les disques durs en toute sécurité de temps en temps et j'ai utilisé une variété d'outils pour ce faire:

  • cat /dev/zero > /dev/disk
  • cat /dev/urandom > /dev/disk
  • shred
  • badblocks -w
  • DBAN

Tous ces éléments ont en commun de prendre un certain temps à courir.

Dans un cas cat /dev/urandom > /dev/disk a tué le disque, le faisant apparemment surchauffer.

Existe-t-il une approche "suffisamment bonne" pour que les données du disque soient rendues inutilisables en temps opportun? Écraser les superblocs et quelques blocs stratégiquement importants ou quelque chose comme ça?

Les disques (spinning et ssd) proviennent d'ordinateurs donnés et seront ensuite utilisés pour installer Linux-Desktops sur eux, distribués à des personnes qui n'ont pas les moyens d'acheter un ordinateur, mais qui en ont besoin.

Les disques des ordinateurs donnés n'auront généralement pas été cryptés. Et parfois, les donateurs ne pensent même pas à supprimer des fichiers au préalable.

Mise à jour:

D'après les réponses qui sont parvenues jusqu'à présent, il semble qu'il n'y ait pas de coins coupants. Mon meilleur pari est probablement de configurer un ordinateur de laboratoire pour effacer plusieurs disques à la fois. Une raison de plus pour demander des dons aux grandes entreprises :-)

Merci tout le monde!

36
markgraf

L'écrasement du superbloc ou de la table de partition rend la reconstruction des données peu pratique, ce qui est évidemment toujours là si vous faites juste un vidage hexadécimal.

Les disques durs ont une fonction d'effacement intégrée: ATA Secure Erase , que vous pouvez activer en utilisant hdparm:

  1. Choisissez un mot de passe (n'importe quel mot de passe):

    hdparm --user-master u --security-set-pass hunter1 /dev/sdX

  2. Lancer l'effacement:

    hdparm --user-master u --security-erase hunter1 /dev/sdX

Comme il s'agit d'une fonction intégrée, il est peu probable que vous trouviez une méthode plus rapide qui offre réellement un véritable effacement. (C'est à vous, cependant, de déterminer si cela correspond à votre niveau de paranoïa.)

Vous pouvez également utiliser le disque avec un chiffrement complet, puis jeter la clé lorsque vous souhaitez supprimer les données.

43
200_success

Réponse potentiellement impopulaire: Acceptez le temps de nettoyer complètement les disques en toute sécurité.

Vous avez accepté le don de matériel provenant de diverses sources et promis que leurs données seraient effacées en toute sécurité. Vous devez donc faire ce que vous avez promis et effacer les disques en toute sécurité.

Si j'étais donateur et que je trouvais que vous ne teniez pas vos promesses, je ne vous donnerais plus de matériel à l'avenir.

Et ne court-circuitez pas le temps d'exécution DBAN en pensant que l'effacement de la première moitié ou des 10 premiers% est suffisant, alors que ce n'est pas le cas.


Pour rendre vos exécutions DBAN plus pratiques, supprimez-vous généralement les lecteurs des hôtes? Si tel est le cas, ayez un ordinateur de bureau assez faible côté avec plusieurs ports SATA. Lorsque vous avez quelques disques prêts à être nettoyés, configurez-les tous sur cette même machine et essuyez-les avec une ISO DBAN amorçable ou une session DBAN netboot. Laissez ensuite la machine en marche jusqu'à ce que la dernière soit terminée.

Vous pouvez utiliser une station d'accueil pour disque SATA-USB, mais celles-ci ont tendance à être très lentes par rapport aux connexions SATA natives.

Deuxièmement, avez-vous un flux de travail pour stocker les dons puis les traiter? Ou acceptez-vous le matériel, testez-le, essuyez-le, puis stockez-vous les articles pour les utiliser? Je vous suggère de créer un pipeline qui fonctionne pour vous et de faire de DBAN une étape de ce pipeline. Donc, lorsque vous sortez une machine du magasin, elle est déjà essuyée et connue comme bonne.

18
Criggie

dd avec de gros blocs pourrait être plus rapide que cat:

dd if=/dev/zero of=/dev/disk bs=16M

Tuer un disque dans le processus est une bonté, c'était probablement marginal de toute façon.

Si vous chiffrez LUKS, cela peut être fait après avoir configuré le chiffrement (il est plus difficile de repérer l'espace utilisé/inutilisé sur le disque).

Vous ne pouvez pas éviter les E/S, à 50 Mo/s (ce qui est une bonne vitesse pour les anciens disques), 250 Go prennent 5000 secondes (environ 1,5 heure) pour écrire. La seule question est de savoir jusqu'où vous pouvez vous rapprocher.

12
xenoid

blkdiscard - supprimer les secteurs sur un périphérique

Je n'ai pas essayé cela, mais à partir d'une lecture rapide, vous pouvez essayer blkdiscard .

Cela enverra simplement des commandes simples au lecteur et devrait être très rapide, mais Je n'ai trouvé aucune garantie que les données dans les blocs seront effacées. Il y a cependant quelques indices.

  • Depuis la page de manuel:

AVERTISSEMENT: toutes les données de la zone supprimée sur l'appareil seront perdues!

TRIM indique au SSD de marquer une région LBA comme non valide et les lectures ultérieures sur la région ne renverront aucune donnée significative. Pendant très peu de temps, les données pourraient encore résider sur le flash en interne. Cependant, après l'émission de la commande TRIM et la collecte des ordures, il est hautement improbable que même un médecin légiste puisse récupérer les données.

Je ne ferais évidemment pas confiance à ceci pour des affaires sérieuses, mais puisque votre condition est "assez bonne", elle pourrait être une option viable. Vraisemblablement, cela ne fonctionne que sur les SSD, ce qui peut être un obstacle plus sérieux si vous avez affaire à de vieux ordinateurs donnés.

7
pipe

Du point de vue de la sécurité (paranoïaque), ce n'est probablement pas possible.

Il y a un scénario où vous pouvez réécrire une petite partie seulement du disque, et la plupart des gens le considéreront comme une sauvegarde. Si un disque a été chiffré en écrasant l'en-tête de chiffrement (un endroit où la clé de chiffrement est stockée) devrait rendre impossible la récupération.

Mais il y a un autre problème - le SSD peut potentiellement conserver les données d'en-tête (les données aléatoires qui ont été utilisées pour écraser l'en-tête peuvent être enregistrées dans d'autres cellules).

6
Alex Baranowski

La plupart des entreprises qui se soucient de la sécurité des données chiffrent déjà leurs disques, ne devraient (ne devraient) pas vous donner de clés de chiffrement, de sorte que les données du disque sont déjà effectivement `` effacées ''.

L'effacement parallèle résoudrait le plus gros problème de vitesse. La vitesse d'E/S SATA n'est pas votre goulot d'étranglement, la vitesse d'écriture physique du disque dur est la limite. Les cartes mères modernes ont au moins 4 à 8 connexions de disques SATA. Configurez un (ou plusieurs) ordinateur (s) de laboratoire pour démarrer à partir du SSD (rapide). Connectez 4-6 lecteurs à effacer, puis utilisez la méthode préférée pour effacer des approches fournies.

Supposons que vous ayez 4 lecteurs (b, c, d, e) ... alors un simple script effacera tous les lecteurs en parallèle. Et les ordinateurs de laboratoire vous permettent d'enregistrer les effacements de lecteur.

ts=$(date +%Y%m%d%H%M%S)
mkdir -p erase-${ts}
# figure out where your linux mounts the drives (avoid trashing your SSD)
for drive in b c d e; do
    target="sd$drive"
    dd if=/dev/zero of=/dev/${target} bs=16M 2>&1 |tee erase-${ts}/${target} &
done

Bien que j'exécute chaque effacement de disque dans un terminal séparé, je pouvais donc surveiller les erreurs sur des disques spécifiques. Les lecteurs avec plus de quelques erreurs doivent être remplacés. Les informations SMART des lecteurs vous donneront une idée de l'âge du lecteur.

Si vous avez 2 à 4 ordinateurs de laboratoire configurés, le défi serait de conserver suffisamment de lecteurs chargés dans les ordinateurs de laboratoire pour les occuper à effacer les lecteurs. Supposons que vous ayez 5 disques par ordinateur de laboratoire X 3 ordinateurs de laboratoire = 15 disques effacés en parallèle. Vous terminez un lot toutes les 30 (ish) minutes

Tous les paris sont désactivés avec SSD, ils fonctionnent différemment. La plupart ont une vitesse d'écriture beaucoup plus rapide. Et aucun des éléments ci-dessus n'efface les secteurs qui ont été mappés hors d'usage par la détection de mauvais blocs (certaines données peuvent de toute façon ne pas être effacées).

Plusieurs études ont été effectuées, notamment une étude assez importante de Google, qui a révélé qu'après les deux premières années, la probabilité de défaillance du disque dur atteignait 5-6% (par an) et augmentait considérablement au cours des années suivantes. Tout disque de plus de 5 ans a une probabilité de défaillance substantielle. Envisagez simplement de retirer (détruire, recycler) les disques durs de plus de cinq ans.

Mon conseil serait de ne conserver que les disques de trois ans ou moins, ou de remplacer tous les disques, et de les retirer (détruire ou recyler).

5
ChuckCottrill

Défi du cadre:

Arrêtez de démonter les PC

J'ai démonté un beaucoup de PC dans ma vie. Vous vous plaignez du temps, mais vous perdez du temps à démonter les PC pour l'imagerie - chaque PC doit être testé deux fois, puis testé à nouveau.

Et votre période de rodage est un thé faible. Vous assemblez le système suffisamment longtemps pour configurer et tester votre lecteur nouvellement imagé. Vous expédierez donc des PC défectueux aux clients (beaucoup vous sont donnés pour une raison ; les problèmes insignifiants, par exemple les problèmes thermiques en sont un).)

Changez votre chaîne de montage. Mettez le PC sous tension, connectez un KVM, et utilisez le PC pour essuyer le PC. Cela lui donnera également un rodage pratique "il a fonctionné pendant un certain temps"; et si vous utilisez/dev/urandom un gros processeur/burn-in thermique également.

Vous pouvez soit démarrer sous leur environnement Windows et supprimer tout sauf les fichiers système et les applications, ou vous pouvez démarrer à partir d'un CD, ou si le système en est capable, démarrer à partir d'une clé USB. Ou, vous pouvez créer une image du système en premier et effacer l'espace libre après l'installation de votre nouvelle image.

Si vous exécutez en mode natif sous l'ancien système d'exploitation, il n'est pas nécessaire de supprimer et d'effacer les fichiers système et les applications Windows, par ex. World of Warcraft représente 40 Go de données qui n'ont pas besoin d'être nettoyées en toute sécurité. Donc \Windows, \Program Files et d'autres répertoires système peuvent être exclus du nettoyage de sécurité. (S'ils y mettent des données, ils ne peuvent pas raisonnablement s'attendre à ce qu'ils soient sécurisés). Il existe une version hautement portable de Perl 4 qui faciliterait le travail, et Perl 4 est suffisamment puissant pour ce genre de chose.

Si j'utilisais le système d'exploitation natif, je le ferais en 2 passes: supprimez d'abord tous les fichiers non système non app; puis remplissez le disque avec des zéros (ou des copies d'un fichier système si vous vous inquiétez de la criminalistique des disques de niveau CIA).

Ou essuyez-le en dernier , après l'imagerie

Même chose; utilisez toujours le PC lui-même pour l'image, par ex. démarrer à partir d'un CD et tirer l'image sur Ethernet ou autre.

Maintenant, créez l'image avec une action au premier démarrage, où elle efface l'espace libre, puis se désactive.

Toutes les données sont écrasées soit par a) les fichiers de la nouvelle image, soit b) votre écrasement de l'espace libre.

Si vous voulez que cette fonction soit "compatible avec les points de contrôle", c'est-à-dire ne pas avoir à recommencer après une panne de courant, alors faites-la simplement écrire immense fichiers avec des noms aléatoires dans/tmp/jusqu'à ce que le disque soit plein. En confirmant que le disque est plein, faites-le supprimer les fichiers/tmp /, puis supprimez-le lui-même.

Une fois que le disque est occupé à 100% avec de nouvelles données, les anciennes données doivent avoir été écrasées.

Même sur un appareil où le système de fichiers a été mis à la poubelle, il est souvent possible de récupérer, disons, des images JPG uniquement en lisant l'appareil.

Pour rendre cela plus difficile, vous pouvez peut-être remplacer tous les débuts de fichiers par des données.

Quelque chose comme:

mount /dev/disk /mnt
find /mnt -type f |
  parallel --pipe --block 8k --roundrobin -q Perl -ne 'chomp;open(A,"+<",$_);print A "0"x8192'

S'il n'y a que peu de fichiers, ce serait plus rapide que d'écraser le lecteur complet.

2
Ole Tange

/ dev/zero est rapide,/dev/urandom est lent et lourd en CPU.

Les deux sont mieux utilisés avec dd utilisant un gros bloc (bs = 1M) qu'avec cat. le chat n'a aucune compréhension des blocs, il déplace un caractère à la fois, en utilisant beaucoup de cycles de processeur.

shred est l'outil optimisé pour ce purpouse, faisant essentiellement ce que dd fait de manière organisée. Il utilise moins de données "aléatoires" (par rapport à tout obtenir de/dev/urandom) lors de l'écrasement du disque avec des données aléatoires - toujours suffisamment aléatoire pour pousser un SSD hors des blocs de rechange et rendre les analyses magnétiques du disque dur difficiles par interférence entre caractères, mais moins gourmand en CPU pour générer.

Je n'ai jamais utilisé DBAN, mais d'après ce que j'ai lu, il semble fondamentalement être un outil semblable à un déchiqueteur dans un emballage amorçable.

Là encore, il y a la commande ATA SECURITY_ERASE (et même la commande SECURITY_ERASE_ENHANCED), accessible dans hdparm. Ils écrivent simplement des 0 sur le disque sans avoir besoin de les pousser dans l'interface. Sur disque dur, ils sont aussi rapides que jj (heures). Sur SSD, ils sont blkdiscard sur tout le disque. La variété améliorée essaie également de mettre à zéro les blocs marqués comme mauvais.

blkdiscard - fonctionne uniquement sur SSD. Marque les blocs comme libres pour qu'ils apparaissent comme des 0, il n'y a aucune garantie quand ils seront effacés en interne.

1
fraxinus

N'installez pas de système d'exploitation, créez une image

Si vous voulez quand même y mettre GNU/Linux, vous pouvez faire les deux en une seule étape: prendre un lecteur (ou une image) avec une nouvelle installation et le cloner sur le nouveau disque.

Si votre système d'exploitation prend par exemple 8 Go, c'est 8 Go d'espace que vous n'avez pas besoin de vider en premier. Pas beaucoup par rapport à 1 To, je l'admets, mais cela pourrait également vous faire gagner du temps d'installation. Plus vous préinstallez, mieux c'est;)

Si l'image source est trop courte pour couvrir l'intégralité du disque (mieux vaut trop courte que trop longue), vous pouvez utiliser dd pour masquer le reste du disque. Et puis redimensionnez la partition après le clonage, si vous le souhaitez.

Si vous souhaitez utiliser un fichier image plutôt que de cloner un disque, vous pouvez utiliser une fonctionnalité utile appelée "fichiers clairsemés" pour réduire la taille du fichier là où les blocs sont tous des zéros dans l'image.

1
Artelius

Les disques (spinning et ssd) proviennent d'ordinateurs donnés et seront ensuite utilisés pour installer Linux-Desktops sur eux, distribués à des personnes qui n'ont pas les moyens d'acheter un ordinateur, mais qui en ont besoin.

D'accord, votre solution à long terme est la suivante (c'est une variante de DBAN)

  • préparer un CD auto-amorçable pour l'installation de Linux (en utilisant par exemple Anaconda)
  • écrire un script qui:
    • exécuter memtest86 et d'autres diagnostics simples
    • reconnaître le matériel (juste le CPU, que ce soit en 32 ou 64 bits)
    • mettre à zéro tout le disque dur en utilisant dd
    • partitionner le disque dur en système, swap et données
    • installer la version de distribution Linux appropriée sur le système
    • éjecter le CD

Supposons maintenant que trois PC arrivent dans le laboratoire, vous les allumez, placez une copie du CD dans le tiroir, démarrez à partir du CD et continuez de faire ce que vous faisiez avant, jusqu'à ce qu'ils vous avertissent que le travail est terminé. Il y a des années, j'ai fait quelque chose comme ça: le script émettait trois longs bips immédiatement au démarrage (donc je savais que le haut-parleur fonctionnait, c'était des ordinateurs de bureau et je ne voulais pas connecter un moniteur à moins que je ne le devais vraiment), puis d'autres sons selon l'état de sortie.

Fondamentalement, chaque ordinateur a pris environ une minute de travail - quarante secondes pour le démarrer, vingt secondes pour l'éteindre lorsqu'il a commencé à jouer à "Reveille" ou "Taps". Je n'ai eu aucun problème de confidentialité, donc je n'ai jamais ajouté l'étape dd; mais il devrait être facile à mettre en œuvre. Même si ma proposition d'origine, comme @PeterCordes l'a remarqué, était imparfaite.

1
LSerni

Configurez un Raspberry Pi pour effacer automatiquement tout stockage USB qui y est branché et allumez une LED quand c'est fait. Ensuite, clonez la carte SD et achetez un tas de framboises pour travailler en parallèle. Si vous choisissez d'utiliser l'effacement sécurisé ATA, avec 4 appareils, vous pourrez effacer les disques aussi vite que vous pourrez les brancher. Si vous choisissez d'écraser l'ensemble de l'appareil, il sera toujours lent, mais toujours 4 fois plus rapide que l'effacement d'un disque à la fois.

La même chose peut être faite avec les ordinateurs portables ordinaires si vous les avez également dans votre boîte de dons, vous épargnant ainsi le coût du matériel.

0
Dmitry Grigoryev