
У меня есть (физически) удаленный сервер, который я хотел бы надежно уничтожить. К сожалению, диск разделен на один большой корневой раздел и больше ничего. Могу ли я надежно использовать dd
для стирания устройства, содержащего корневую файловую систему?
Что-то простое, например:
$ sudo nohup dd if=/dev/urandom of=/dev/sda bs=1024
Очевидно, я никогда не увижу вывод задания, поэтому не смогу проверить, что оно успешно выполнено. Программы dd
и nohup
должны быть достаточно маленькими, и на сервере в этот момент больше ничего не запущено, поэтому нет причин для того, чтобы эти программы были вытеснены из памяти во время их выполнения. Будут ли они выполнены до завершения или ядро, скорее всего, в какой-то момент запаникует до dd
завершения?
Я обдумываю и другие возможности, но задам о них отдельные вопросы.
решение1
Да, Этоабсолютновозможно, но это требует некоторой работы.
Большая часть ответов доступна на StackExchange, но я приведу здесь резюме со ссылками на источники, которые содержат гораздо больше подробностей и заслуживают признания за отличную информацию.
- Создайте базовую среду Linux в памяти и переключитесь на нее с помощью
pivot_root
. - Убедитесь, что вы можете получить доступ к серверу извне с помощью
ssh
. Очистите корневое устройство.
# nohup dd if=/dev/urandom of=/dev/sda bs=512 > wipe.log &
Не стесняйтесь время от времени проверять ход выполнения
dd
, поскольку обычно он не дает никаких указаний на прогресс.# kill -USR1 [ddpid]
Вернитесь позже и проверьте, что процесс завершен (проверьте файл журнала). Посмотрите на диск, чтобы убедиться, что на нем есть случайный мусор вместо настоящей файловой системы. Сотрите его второй (или третий) раз, если хотите.
Решите, что делать дальше.
Если хотите, можете просто остановиться здесь и уйти. Когда машина выключится, у вас будет незагружаемое устройство, которое будет настолько безопасным, насколько вы решите
dd
.Я решил сделать следующее: попробовать то, чего я раньше не делал: удаленно построить базовую систему Linux. Поэтому я продолжил:
Используйте
fdisk
для повторного разбиения корневого устройства по своему усмотрению иmkfs
для создания файловых систем на этих разделах.- Использовать
debootstrap
кустановить базовую среду Debianна (будущей) корневой файловой системе. chroot
в новую базовую среду установите дополнительные пакеты (напримерsshd
, ядро и загрузчик (напримерgrub
, убедитесь, что загрузчик действительно установлен на устройство, а не просто установите пакет).- Используйте
root_pivot
для переключения на новую среду таким же образом, как вы делали это в шаге № 1 выше. Поднимите все службы (например,sshd
), чтобы убедиться, что вы сможете получить доступ к серверу, например, черезssh
. - Перезагрузитесь. Ваша новая ОС должна быть готова к работе.
решение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. Надеюсь, я смогу восстановить свои данные.