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

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

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

Что-то простое, например:

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

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

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

решение1

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

Большая часть ответов доступна на 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. Перезагрузитесь. Ваша новая ОС должна быть готова к работе.

решение2

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

решение3

Это не совсем ответ, но мне удалось сделать что-то похожее. Пытаюсь sudo dd if=./bootcd-usb-debug.iso of=/dev/sdaзаписать ReactOS iso на то, что я собирался сделать своим usb-накопителем, но поскольку я не проверил, была ли это моя работающая система Linux. Надеюсь, я смогу восстановить свои данные.

Связанный контент