Как ускорить безопасную очистку диска?

Как небольшой сценарий оболочки:

#!/bin/sh

if [ $(pgrep -cf /opt/php56/bin/php-cgi) -gt 20 ]
then
  pkill -f./opt/php56/bin/php-cgi
fi

pgrep-cпредлагает подсчитать совпадающие экземпляры; -fговорит, что нужно соответствовать полному имени процесса. Если их строго больше 20 (, отрегулируйте это число по вкусу ), затем запустите соответствующую команду pkill.

Убить их, если общее количество процессов больше 20:

if [ $(ps -e -o pid= | wc -l) -gt 20 ]
then
  pkill -f./opt/php56/bin/php-cgi
fi

Эта строка psговорит собрать все(-e)процессов, вывести только поле pidи использовать (ничего )в качестве переименованного заголовка для столбца pid--, что означает, не отображать заголовок «PID» --, а затем подсчитывать количество результирующих строк (wc -l).

35
21.11.2019, 14:36
15 ответов

Перезапись суперблока или таблицы разделов просто делает неудобным восстановление данных, которые, очевидно, все еще там, если вы просто делаете шестнадцатеричный дамп.

Жесткие диски имеют встроенную -функцию стирания:ATA Secure Erase , которую можно активировать с помощьюhdparm:

  1. Подберите пароль (любой пароль):

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

  2. Инициировать стирание:

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

Так как это встроенная -функция, маловероятно, что вы найдете более быстрый метод, который действительно предлагает реальное стирание. (Однако вам решать, соответствует ли это вашему уровню паранойи.)

В качестве альтернативы можно использовать диск с полным -шифрованием диска, а затем просто выбросить ключ, когда вы захотите избавиться от данных.

46
27.01.2020, 19:36

/dev/zero быстрый, /dev/urandom медленный и процессор -тяжелый.

Оба из них лучше использовать с dd с использованием большого блока (bs=1M ), чем с кат. cat не понимает блоки, он перемещает по одному символу за раз, используя много циклов процессора.

shred — это инструмент, оптимизированный для этой цели, который в основном делает то же, что и dd, организованно. Он использует меньше «случайных» данных (по сравнению с получением всего из /dev/urandom )при перезаписи диска случайными данными -, которые все еще достаточно случайны, чтобы вытолкнуть SSD из запасных блоков и усложнить магнитный анализ жесткого диска. пересечение -символьных интерференций, но процессор -менее требователен к генерации.

Я никогда не пользовался DBAN, но из того, что я читал, кажется, что это в основном инструмент, -похожий на клочок, в загрузочной оболочке.

С другой стороны, есть команда ATA SECURITY _ERASE (и даже команда SECURITY _ERASE _ENHANCED ), доступная в hdparm. Они просто записывают 0 на диск без необходимости проталкивать их в интерфейс. На жестком диске они достигают дд (часов ). На SSD они blkdiscard на весь диск. Расширенный вариант пытается обнулить также блоки, помеченные как плохие.

blkdiscard -работает только с SSD. Блоки помечаются как свободные, поэтому они отображаются как 0, нет гарантии, что они будут стерты внутри.

1
27.01.2020, 19:36

Настройте Raspberry Pi на автоматическое стирание всех подключенных к нему USB-накопителей и загорание светодиода, когда это будет сделано. Затем клонируйте SD-карту и купите кучу Raspberry для параллельной работы. Если вы решите использовать безопасное стирание ATA, с 4 устройствами вы сможете стирать диски так быстро, как только сможете их подключить. Если вы решите перезаписать все устройство, это все равно будет медленным, но все же в 4 раза быстрее по сравнению со стиранием одного диска за раз.

То же самое можно сделать и с обычными ноутбуками, если они есть у вас в ящике для пожертвований, что позволит вам сэкономить на оборудовании.

0
27.01.2020, 19:36

From the answers that have come in so far, it seems there is no cutting corners.

Вот ответ, который срезает углы.

Есть ли на входящем компьютере SSD? Найдите программное обеспечение, поддерживающее «ATA Secure Erase», и запустите его на диске. Это говорит SSD стереть его внутренний ключ шифрования, делая содержимое полностью нечитаемым. Занимает 30 секунд и достаточно для чего-то меньшего, чем ядерные секреты.

Есть ли на входящем компьютере вращающийся диск? Снимите его, просверлите пару отверстий в корпусе и диске и отправьте в центр переработки. Получите SSD + монтажный кронштейн на Amazon примерно за 50 долларов. Это намного меньше, чем ваше время на обработку старых дисков, и обеспечит гораздо лучшую производительность. «Пожертвованные компьютеры» подразумевают образовательную среду, 200 ГБ достаточно много.

А если у вас его еще нет, купите док-станцию ​​с 2 -портами для жестких дисков, поддерживающую клонирование. Вставьте мастер-диск и новый чистый, нажмите кнопку копирования. Он делает блочную копию, поэтому полностью независим от ОС. Также помогает массовое -стирание входящих SSD.

0
27.01.2020, 19:36

Не устанавливайте ОС, создайте образ

Если вы все равно собираетесь установить на него GNU/Linux, вы можете сделать и то, и другое за один шаг :взять диск (или образ )с новой установкой и клонировать его на новый диск.

Если ваша ОС принимает, например. 8 ГБ, то это 8 ГБ пространства, которое вам не нужно сначала очищать. Я признаю, что это немного по сравнению с 1 ТБ, но это также может сэкономить вам время на установку. Чем больше вы предварительно установите, тем лучше;)

Если исходное изображение слишком короткое, чтобы покрыть весь диск (лучше слишком короткое, чем слишком длинное ), вы можете использовать dd, чтобы очистить остальную часть диска. А затем измените размер раздела после клонирования, если хотите.

Если вы хотите использовать файл изображения, а не клонировать диск, вы можете использовать полезную функцию под названием «разреженные файлы», чтобы сократить размер файла, где все блоки в образе состоят из нулей.

1
27.01.2020, 19:36

The disks (both, spinning and ssd) come from donated computers and will be used to install Linux-Desktops on them afterwards, handed out to people who can't afford to buy a computer, but need one.

Итак, ваше долгосрочное -решение таково: (это вариант DBAN)

  • подготовьте установочный диск Linux -загрузочный компакт-диск (, используя, например,. Анаконда)
  • написать скрипт, который будет :
    • запустить memtest86 и другую простую диагностику
    • распознавать аппаратное обеспечение (только процессор, будь то 32 или 64 бита)
    • обнулить весь жесткий диск с помощьюdd
    • разделить жесткий диск на систему, подкачку и данные
    • установить соответствующую версию дистрибутива Linux в систему
    • извлечь компакт-диск

Теперь предположим, что в лабораторию приходят три компьютера, вы включаете их, кладете копию компакт-диска в лоток, загружаетесь с компакт-диска и продолжаете делать то, что делали до этого, пока они не предупредят вас, что работа сделана. Несколько лет назад я сделал что-то подобное :сценарий воспроизводил три длинных звуковых сигнала сразу после запуска (, поэтому я знал, что динамик работает, это были рабочие столы, и я не хотел подключать монитор, если мне действительно не нужно ), затем другие звуки в зависимости от статуса выхода.

В основном каждому компьютеру требовалось около одной минуты работы -сорок секунд, чтобы загрузить его, двадцать секунд, чтобы выключить его, когда он начал играть либо "Reveille", либо "Taps". У меня не было проблем с конфиденциальностью, поэтому я никогда не добавлял шаг dd; но это должно быть легко реализовать. Даже если мое первоначальное предложение, как заметил @PeterCordes, было ошибочным.

1
27.01.2020, 19:36

Вызов кадра:

Прекратить разборку ПК

За свою жизнь я разобрал много ПК. Вы жалуетесь на время, но вы тратите время на разборку ПК для создания образа --каждый ПК должен быть протестирован дважды, а затем повторно -протестирован.

А твой ожог -в периоде — слабый чай. Вы собираете систему только на время, достаточное для настройки и тестирования нового образа диска. Таким образом, вы будете отправлять дефектные ПК клиентам (, многие из которых вам даны по какой-то причине ; мелкие глюки напр. тепловые проблемы являются одним из таких.)

Смените сборочную линию. Включите питание ПК в стойку, подключите KVM и используйте ПК для очистки ПК . Это также даст ему удобный способ «погонять на некоторое время» -; а если вы используете /dev/urandom, то прочный процессор/термический ожог -тоже.

Вы можете либо загрузиться в их среде Windows и удалить все, кроме системных файлов и приложений, либо загрузиться с компакт-диска, либо, если система на это способна, загрузиться с USB-накопителя. Или вы можете сначала создать образ системы и стереть свободное пространство после установки нового образа.

При изначальной работе в устаревшей ОС нет необходимости удалять и стирать системные файлы и приложения Windows, т.е. World of Warcraft — это 40 ГБ данных, которые не нужно безопасно -стирать. Таким образом, \Windows, \Program Filesи другие системные каталоги могут быть исключены из очистки безопасности. (Если они поместят туда данные,они не могут рассчитывать на безопасную очистку ). Существует переносимая версия Perl 4, которая облегчит эту работу, а Perl 4 достаточно мощен для такого рода вещей.

Если бы я использовал родную ОС, я бы сделал это за 2 прохода. :Сначала удалите все не -системные не -файлы приложений; затем заполните диск нулями (или копиями системного файла, если вас беспокоит криминалистика диска ЦРУ -уровня ).

Или сотрите его последним после создания образа

То же самое; по-прежнему использовать сам ПК для изображения, например. загрузка с компакт-диска и передача образа по сети Ethernet или что-то еще.

Теперь создайте образ с действием -при -первой -загрузке, где он стирает свободное пространство, а затем отключается.

Все данные перезаписываются либо a )файлами нового образа, либо b )перезаписью вашего свободного пространства.

Если вы хотите, чтобы эта функция могла "проверить -точку -", то есть не должна была начинать заново после сбоя питания, тогда пусть она просто записывает огромные файлы со случайными именами в /tmp/, пока диск не заполнится. Убедившись, что диск заполнен, удалите файлы /tmp/, а затем удалите себя.

Когда диск заполнен новыми данными на 100 %, старые данные должны быть перезаписаны.

5
27.01.2020, 19:36

С точки зрения безопасности (параноиков )это, вероятно, невозможно.

Есть один сценарий, когда вы можете перезаписать только небольшую часть диска, и большинство людей сочтет это спасением. Если диск был зашифрован с перезаписью заголовка шифрования (, место, где хранится ключ шифрования ), должно сделать невозможным восстановление.

Но есть еще одна проблема -SSD потенциально может хранить данные заголовка (случайные данные, которые использовались для перезаписи заголовка, могут быть сохранены в других ячейках ).

6
27.01.2020, 19:36

dd с большими блоками может быть быстрее, чемcat:

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

Уничтожение диска в процессе — это хорошо, но, скорее всего, это было маргинальным в любом случае.

Если вы шифруете LUKS -, это можно сделать после настройки -шифрования, (затрудняющего определение используемого/неиспользуемого пространства на диске ).

Вы не можете избежать ввода-вывода со скоростью 50 МБ/с (, что является хорошей скоростью для старых дисков ), запись 250 ГБ занимает 5000 секунд (около 1,5 часов ). Вопрос только в том, насколько близко к этому вы сможете подобраться.

13
27.01.2020, 19:36

Возможно, вы захотите распараллелить его. Например, в 8-ядерном процессоре вы можете использовать следующую командную строку:

for i in {1..8}; do dd bs=16M if=/dev/zero of=$i & done

Примечание. :Проверьте спецификацию жесткого диска и соответствующим образом отрегулируйте буфер.

В моем случае мой жесткий диск имеет размер буфера 128 МБ, следовательно, 128 МБ/8 ядер = 16 МБ буфера.

-4
27.01.2020, 19:36

Даже на устройстве с поврежденной файловой системой часто можно восстановить, скажем, изображения JPG, просто прочитав устройство.

Чтобы усложнить задачу, вы можете перезаписать все начала файлов данными.

Что-то вроде:

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

Если файлов всего несколько, это будет быстрее, чем перезапись всего диска.

2
27.01.2020, 19:36

blkdiscard -удаление секторов на устройстве

Я не пробовал, но из беглого чтения можно попробовать blkdiscard .

Это просто отправит простые команды на привод и должно быть очень быстрым, но я не нашел никакой гарантии, что данные в блоках будут стерты. Хотя есть некоторые намеки.

  • Из справочной страницы:

WARNING: All data in the discarded region on the device will be lost!

TRIM tells the SSD to mark a LBA region as invalid and subsequent reads on the region will not return any meaningful data. For a very brief time, the data could still reside on the flash internally. However, after the TRIM command is issued and garbage collection has taken place, it's highly unlikely that even a forensic scientist would be able to recover the data.

Очевидно, я бы не стал доверять этому для серьезного бизнеса, но, поскольку ваше требование «достаточно хорошее», это может быть приемлемым вариантом. Предположительно, он работает только на твердотельных накопителях, что может быть более серьезным препятствием, если вы имеете дело со старыми пожертвованными компьютерами.

7
27.01.2020, 19:36

Потенциально непопулярный ответ:Потерпите время, чтобы полностью стереть диски надежно.

Вы приняли бесплатное оборудование из разных источников и пообещали, что их данные будут надежно удалены. Итак, вы должны сделать то, что обещали и надежно стереть диски.

Если бы я был донором и обнаружил, что вы не выполняете свои обещания, я бы не дал вам больше оборудования в будущем.

И не сокращайте время выполнения DBAN, думая, что очистки первой половины или первых 10% достаточно, когда это не так.


Вы обычно удаляете диски с хостов, чтобы сделать работу DBAN более удобной? Если это так, имейте настольный компьютер с довольно низким -питанием и несколькими портами SATA. Когда у вас есть пара дисков, готовых к очистке, настройте их все на этой машине и очистите их с помощью загрузочного ISO-образа DBAN или сеанса DBAN с сетевой загрузкой. Затем оставьте машину работающей, пока не будет завершена последняя.

Вы можете использовать док-станцию ​​SATA -для USB-дисков, но они, как правило, очень медленные по сравнению со стандартными соединениями SATA.

Во-вторых, есть ли у вас рабочий процесс хранения пожертвований и их последующей обработки? Или вы принимаете оборудование, тестируете его, стираете, а затем сохраняете для использования? Я предлагаю вам создать конвейер, который работает на вас, и сделать DBAN этапом в этом конвейере. Так что когда вы вытаскиваете машину из магазина, она уже протерта как известно -хорошо.

20
27.01.2020, 19:36

Большинство компаний, которые заботятся о безопасности данных, уже шифруют свои диски, (если )не будут предоставлять вам ключи шифрования дисков, так что данные с дисков в любом случае уже эффективно «стерты».

Параллельное стирание решило бы самую большую проблему скорости. Скорость ввода-вывода SATA не является вашим узким местом, физическая скорость записи жесткого диска является пределом. Современные материнские платы имеют не менее 4 -8 разъемов для дисков SATA. Настройте один (или несколько )лабораторных компьютеров (с )для быстрой загрузки с SSD (). Подключите 4 -6 дисков для стирания, затем используйте предпочтительный метод стирания из предложенных подходов.

Предположим, у вас есть 4 диска (b,c,d,e )... тогда простой сценарий сотрет все диски параллельно. И лабораторные компьютеры позволяют вам регистрировать стирание дисков.

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

Хотя я бы запускал стирание каждого диска в отдельном терминале, чтобы отслеживать ошибки на конкретных дисках. Диски с более чем несколькими ошибками должны быть заменены. Информация SMART с дисков даст вам представление о возрасте диска.

Если у вас настроено 2 -4 лабораторных компьютера, проблема будет заключаться в том, чтобы в лабораторных компьютерах было загружено достаточно дисков, чтобы они были заняты стиранием дисков. Предположим, у вас есть 5 дисков на лабораторный компьютер X 3 лабораторных компьютера = 15 дисков, которые стираются параллельно. Вы завершаете партию каждые 30 (или )минут

С SSD все ставки сняты, они работают по-другому. Большинство из них имеют гораздо более высокую скорость записи. И ни один из вышеперечисленных способов не стирает секторы, которые были сопоставлены с неиспользуемыми из-за плохого -обнаружения блоков (, некоторые данные все равно не могут быть стерты ).

Было проведено несколько исследований, в частности довольно крупное исследование Google,Это показало, что после первых двух лет вероятность отказа жесткого диска достигала 5 -6% (в год )и значительно возрастала в последующие годы. Любой диск старше 5 лет имеет значительную вероятность отказа. Подумайте о том, чтобы просто вывести из эксплуатации (уничтожить, переработать )жесткие диски старше пяти лет.

Я бы посоветовал оставить диски возрастом не более трех лет или заменить все диски и вывести из эксплуатации (уничтожить или переработать ).

5
27.01.2020, 19:36

Обновление для тех, кто ищет замену/альтернативу DBAN с открытым исходным кодом

Я бы также рекомендовал выполнить настоящую процедуру очистки всего диска вместо простого заполнения нулями. Если когда-нибудь мне придется доверить кому-то уничтожение моих данных, я бы хотел, чтобы этот человек был заслуживающим доверия в том, что касается правильного выполнения работы.

В любом случае, поскольку DBAN не развивался с 2015 года, а его коммерческий преемник не имеет открытого исходного кода, я искал хорошее решение, которое бы выполняло эту работу.

Найден nwipe, ответвление включенной в DBAN dwipeпрограммы, которая просто остается открытым исходным кодом .

Полнофункциональную загрузочную ОС под названием ShredOS2020, имеющую тот же внешний вид, что и DBAN, основанную на nwipe, можно загрузить с github ShredOS

.

Надеюсь, это сэкономит некоторым из вас время поиска;)

1
20.04.2021, 09:44

Теги

Похожие вопросы