Могу ли я надежно использовать `dd`, чтобы стереть корневую файловую систему на работающем сервере Linux?

526
Christopher Schultz

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

Что-то простое, как:

$ sudo nohup dd if=/dev/urandom of=/dev/sda bs=1024 

Очевидно, что я никогда не увижу результат работы, поэтому я не смогу проверить, успешно ли она выполнена. Программы ddи nohupдолжны быть достаточно маленькими, и на этом этапе на сервере больше ничего не работает, поэтому нет причин для того, чтобы эти программы извлекались из памяти во время работы. Будут ли они работать до конца или ядро, вероятно, паникует в какой-то момент до ddзавершения?

Я обдумываю другие возможности, но я спрошу об этом в отдельных вопросах.

2

2 ответа на вопрос

1
HackSlash

В корпоративной среде вы хотели бы иметь какое-то внешнее управление, такое как IPMI, iDRAC или другое удаленное решение KVM. Вы бы использовали эту систему для загрузки с liveCD, где можно было бы выполнить и подтвердить удаление. Если вашей целью является безопасное удаление, то вам нужно проверить операцию. Вы не можете просто сказать «Ну, это должно было сработать». Потому что даже если он должен работать, это не значит, что он работал. Некоторые системы IPMI позволяют удаленно загружаться с ISO, который у вас есть удаленно. Вы можете использовать что-то простое, например, изображение DBAN.

Я пытался сделать это с загруженной ОС, и это не удалось. Решение проблемы без загрузки ОС или при работе ОС с виртуального диска является решением. Поскольку вы упомянули, что это сервер, я полагаю, доступно внешнее управление, что делает ответ Hackslash хорошим. +1 Hennes 6 лет назад 0
Хотя я ценю ваш ответ за «Правду», он не отвечает на мой настоящий вопрос. Christopher Schultz 6 лет назад 0
Ну, Крис, ответ в том, что вы не можете быть уверены в том, что произойдет после того, как система выйдет из строя и вы потеряете удаленное соединение. Этот ответ еще менее полезен. Вы должны предположить, что это не удалось, если вы не можете подтвердить успех. HackSlash 6 лет назад 0
1
Christopher Schultz

Да, это абсолютно возможно, но требует некоторой работы.

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

  1. Создайте базовую среду Linux в памяти и переключитесь на нее, используяpivot_root .
  2. Убедитесь, что вы можете получить доступ к серверу извне, используя ssh.
  3. Протрите корневое устройство.

    # nohup dd if=/dev/urandom of=/dev/sda bs=512 > wipe.log &

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

    # kill -USR1 [ddpid]

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

  6. Решите, что делать дальше.

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

    Далее я решил попробовать то, чего раньше не делал: создать базовую систему Linux удаленно. Итак, я продолжил:

  7. Используйте fdiskдля повторного разбиения корневого устройства по желанию и используйте mkfsдля создания файловых систем на этих разделах.

  8. Используется debootstrapдля установки базовой среды Debian в (будущей) корневой файловой системе.
  9. chrootв новой базовой среде установите дополнительные пакеты (например, sshdядро и загрузчик) (например, grubубедитесь, что загрузчик действительно установлен на устройстве, а не просто устанавливайте пакет).
  10. Используйте root_pivotдля переключения на новую среду так же, как вы делали это на шаге 1 выше. Воспользуйтесь всеми услугами (например sshd), чтобы убедиться, что вы сможете получить доступ к серверу, например, через ssh.
  11. Перезагружать. Ваша новая ОС должна быть готова к работе.

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