Что происходит, когда я использую 'dd' для перезаписывания диска, с которого работает Ubuntu?

9

Что произойдет, если я использую

sudo dd if=/dev/zero of=/dev/sda

из установки Ubuntu работает от /dev/sda ?

Я попробовал это на виртуальной машине, и появляется , чтобы правильно стереть диск. Будет ли это так каждый раз? Это безопасный способ "стереть" установку Ubuntu и все данные?

Мой вопрос несколько вдохновлен:

  1. Как удалить Ubuntu с компьютера?
  2. Как "rm -rf /" в состоянии удалить все файлы в системе? .
задан JonasCz 03.07.2016 в 07:30
источник

5 ответов

17

На самом деле файловая система все еще смонтирована, а некоторые записи буферизованы, что означает, что они все еще находятся в ОЗУ, ожидая записи на диск. Предположим, что dd правильно перезаписывает все, а только за ним буфери становятся красными, а некоторые потенциально конфиденциальные данные записываются обратно на диск. Нет, это не безопасный способ вытирать диск.

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

Если вы хотите иметь какую-то функцию панического удаления, я предлагаю зашифровать ваш диск с помощью LUKS (установщик Ubuntu может это сделать), а затем после мой ответ на Security Stack Exchange . Это включает в себя очистку cryptheader, размер которого составляет всего 2 МБ, и для перезаписывания требуется меньше секунды. Затем перезагрузите систему, и ключи шифрования диска исчезнут из памяти, и нет способов их восстановления, поскольку сам склепфейдер тоже ушел.

    
ответ дан André Borie 03.07.2016 в 14:09
источник
9

Я пожертвовал виртуальной машиной, используя немного более продвинутое использование dd , заимствованное и слегка измененное из страниц Arch Wiki .

Сначала установите хороший индикатор выполнения:

sudo apt-get install pv

И затем запустите команду «расширенный» dd

sudo openssl enc -aes-256-ctr -pass pass:"$(dd if=/dev/urandom bs=128 count=1 2>/dev/null \
| base64)" -nosalt </dev/zero \
| pv -bartpes "$(sudo blockdev --getsize64 /dev/sda)" \
| sudo dd bs=64K of=/dev/sda

Это оставит диск заполненным зашифрованным текстом AES. Полная и безопасная защита диска? Вероятно, лучше, чем ваш собственный пример dd , но ничто не является полностью безопасным или гарантированным ...

И ты должен мне одну ВМ:)

Литература:

ответ дан andrew.46 03.07.2016 в 09:49
6

Короткий ответ: он сделает примерно то, что вы хотите, и тогда ничего не получится. Используя dd , вы работаете на уровне ниже файловой системы, что означает, что любые ограничения, которые будут применяться там, больше не актуальны (это не означает, что ядро ​​не могло помешать вам это делать, но это не так) , Некоторое содержимое из файловой системы уже находится в памяти, например, сама ядро ​​и сама программа dd , а некоторые - в кеше. Существует вероятность того, что если система находится в многопользовательском режиме, некоторые файлы могут быть записаны обратно, пока выполняется dd , предполагая, что они действительно изменились, и если вы находитесь под давлением памяти, некоторые страницы оттуда могут также (они должны быть зашифрованы и, следовательно, непригодны для использования после перезагрузки).

Большинство команд, которые вы выведете после этого, включая reboot , не будут в кеше и поэтому не будут работать. Поэтому, если вы в однопользовательском режиме, это будет очень хорошо, если вы находитесь в многопользовательском режиме, он уничтожит подавляющее большинство данных. В идеале вы должны сделать это, загрузившись с какого-либо другого носителя (возможно, остановившись на initrd), чтобы вы могли быть уверены, откуда берутся все записи.

Если вы хотите безопасную стирать, это не будет выполнять задание, потому что все еще остаются некоторые следы исходных данных, если вы просто обнулите их. Обычно вам требуется до трех случайных записей, что означает копирование из /dev/urandom вместо /dev/zero - гораздо медленнее, но более безопасно. Некоторые могут предположить, что вы используете /dev/random , который является устройством для «чистых» случайных данных - не псевдослучайным, но для этой цели вероятность того, что кто-то сможет взломать семя PRNG и успешно маскировать данные, по существу незначительна.

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

    
ответ дан Jim Driscoll 03.07.2016 в 15:29
4

Как и в вашей VM, вытереть диск и сделать вашу систему непригодной.

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

    
ответ дан Videonauth 03.07.2016 в 07:35
1

Он должен работать, текущий процесс выполняется в Рам и не нужен диск. В любом случае, я бы использовал живую систему, запущенную с cd или usb. Существует даже dban, специализированный live linux для очистки диска.

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

Будьте осторожны при использовании перезаписывания ssd не гарантирует удаление всех данных из-за износа.

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

    
ответ дан Uwe Burger 03.07.2016 в 20:16