Безопасно стереть безголовый удаленный сервер Linux

18

Я собираюсь прекратить мои отношения с моим хостинг-провайдером на много лет, но я бы хотел, чтобы безопасно стереть коробку, прежде чем я это сделаю. Это выделенный сервер, на котором запущен Debian на одном диске EXT3, и хотя у меня есть доступ с правами root, я не могу загрузить альтернативный носитель, так как он где-то находится без стойки в стойке.

Мне не нужно многократных проходов, но я бы хотел стереть свободное место, если это возможно. По сути, я хотел бы уйти и убедиться, что я не оставляю свои личные данные позади. Я обеспокоен тем, что окно может произойти сбой, прежде чем он заканчивает стирание / синхронизацию файловой системы, если я просто запуститеsrm -R -s /

notpeter
источник
imho, используйте дд (внизу)
Некоторые Linux Nerd

Ответы:

4

Я успешно прошел весь путь rm -rf --no-preserve-root /без сбоев системы, и ничего не осталось на диске.

Фахад Сада
источник
Я запустил srm в своих каталогах данных, а затем rm -rf --no-preserve-root /через SSH, чтобы очистить остальные. Он выдал пару ошибок в / dev и затем завершился; Я не совсем знал, что делать в командной строке bash. Без / bin / ls или / sbin / shutdown я не смог бы подтвердить успех. Twas антиклиматический; Я был морально готов к тому, что он рухнул, а не ядро ​​зомби и сессия sshd.
Notpeter
7
Это не безопасно. Данные не стерты, и удаление все еще возможно. Лучше ddвместо диска.
qris
10

Установщик CentOS (anaconda), который поставляется с образами PXE, включает в себя VNC-сервер, так что вы можете изменить конфигурацию grub для загрузки установщика CentOS, передав ответы на вопросы установщика до этапа 2 в строке grub, перезагрузиться и затем VNC установщику.

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

Скопируйте файлы vmlinuz и initrd из каталога PXE в дистрибутиве CentOS ( http://mirror.centos.org/centos/5/os/i386/images/pxeboot/ ) в / boot и измените конфигурацию grub:

по умолчанию 0
тайм-аут 5
название CentOS
корень (hd0,0)
ядро /boot/vmlinuz.cent.pxe vnc vncpassword = ПАРОЛЬ безголовый ip = маска IP = 255.255.255.0 шлюз = GATEWAYIP dns = 8.8.8.8 ksdevice = метод eth0 = http: //mirror.centos.org/centos/5/os / i386 / lang = en_US keymap = us
initrd /boot/initrd.img.cent.pxe

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

Стивен Нельсон-Смит
источник
3
Они не являются «достойной хостинговой компанией», поэтому мне нужно уйти и вытереть диски.
Notpeter
Я не использовал этот метод, но использование GRUB для загрузки минимального образа восстановления, предварительно настроенного для включения vnc (или даже только SSH), вполне выполнимо. Если вы запутались, у вас может остаться система, которая требует ручного вмешательства для правильной загрузки, поэтому, вероятно, стоит сначала протестировать на ВМ.
notpeter
1
Слово о порядке, в котором вещи стираются, может быть полезным. Сначала очистив все разделы, кроме одного, содержащего /boot, вы сможете начать заново, если машина будет перезагружена в середине процесса. Если это /bootпроисходит в /разделе, можно удалить все файлы за пределами /bootи очистить свободное пространство, прежде чем окончательно очистить весь раздел. Это сведет к минимуму объем данных, оставленных на диске, в случае, если он будет перезагружен после того, как вы удалили его так много, что вы больше не сможете его загрузить.
Касперд
7

Перед тем, как уничтожить ОС, вы можете удалить что-нибудь чувствительное и заполнить нулями (используя dd if = / dev / zero of = justabigfile).

И я полагаю, что большинство систем доживут до работающей системы достаточно долго, чтобы перезаписать весь диск. Обратного пути нет, если не получится, конечно.

Джорис
источник
4
Если вы удалите все файлы, которые вас беспокоят, прежде чем сделать это, поменять раздел подкачки, стереть раздел подкачки (используя wipe или dd), тогда вышеприведенное должно быть довольно безопасным. Вам нужно будет сделать это как root, чтобы преодолеть 5%, зарезервированные для root, и вы можете не стереть все имена файлов, но данные должны быть удалены.
Slartibartfast
6

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

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

mkdir /root/tmpfs/
mount -t tmpfs tmpfs /root/tmpfs/
debootstrap --variant=buildd --arch amd64 precise /root/tmpfs/
mkdir /root/tmpfs/mainroot
mount --bind / /root/tmpfs/mainroot
mount --bind /dev /root/tmpfs/dev
chroot /root/tmpfs/

# fill mainroot partition to wipe previously deleted data files
dd if=/dev/zero of=/mainroot/root/bigfile; rm /mainroot/root/bigfile
# now clobber the entire partition, probably won't be able to stay connected to ssh after starting this
# obviously change '/dev/md1' to the device that needs cleared
nohup dd if=/dev/zero of=/dev/md1 >/dev/null 2>&1

Это должно заботиться об этом!

moparisthebest
источник
1

Вы можете просто использовать, ddчтобы перезаписать весь раздел / диск на работающем сервере без каких-либо забот. Мы часто используем его на работе (когда клиент не хочет платить за безопасное уничтожение физического диска).

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

Я использую эти команды: dd if=/dev/zero of=/dev/sda bs=1M & и затем, kill -HUP %1чтобы следить за прогрессом (dd распечатает текущую скорость и количество записанных данных). Установка размера блока ( bs) очень важна для достижения скорости записи на жесткий диск с помощью dd.

Каждый раз ddудавалось стереть диск до конца, и я смог выдать killкоманду (встроенную в оболочку) до конца. Если у вас есть программный рейд, вы можете стереть либо само mdустройство, либо каждое компонентное устройство по отдельности.

Marki555
источник
Мой коллега сделал это, и xwindows не удалось аварийно завершить работу, это должно быть именно то, что нужно запрашивающей стороне.
Немного Linux Nerd
1

Протокол ATA имеет команду «безопасного стирания», которая, как указывает его название, должна безопасно удалять весь жесткий диск.

За подробностями обращайтесь к вики-статье Kernel, но обратите внимание на предупреждения вверху:

https://ata.wiki.kernel.org/index.php/ATA_Secure_Erase

Владимир Пантелеев
источник
Обновление 2018 года: я успешно использовал это несколько раз для удаленной очистки серверов, даже если они работают с очищаемой файловой системы. Поскольку программа просто выдает команду ATA и ожидает ответа, во время процесса очистки не требуется выполнять код на ЦП.
Владимир Пантелеев
0

Вы можете попытаться записать случайные данные на свой диск следующим образом:

dd if=/dev/urandom of=/dev/sda

Это безопаснее, чем использовать / dev / zero, потому что он записывает случайные данные, но это также НАМНОГО медленнее.

Kedare
источник
Как человек, который не знает лучше, почему люди голосуют за это? Разве это не хорошая практика?
Канадец Люк восстановит Монику
@CanadianLuke Речь идет о безопасном удалении уже работающего сервера. Вы не можете писать на подключенный диск, как это, поэтому он не будет работать.
longneck
@ longneck Спасибо. По какой-то причине я думал, что root может сделать это ... Хотя я никогда не пробовал, так что я верю вашему слову. Спасибо за объяснение, хотя
канадец Люк REINSTATE MONICA
@ longneck да, вы можете, добавил комментарий выше, но у меня был действительно параноидальный коллега, делающий это. На самом деле вы можете полностью отключить жесткий диск, и linux будет продолжать запускать все, что находится в памяти, без каких-либо дополнительных сообщений об ошибках приложения.
Немного Linux Nerd
0

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

Получите аналогичный экземпляр в AWS (или gcloud или ...) и попробуйте его там, сохранив диск, а затем подключив его к другому экземпляру в качестве дополнительного хранилища и просканировав его. дд если = SDB | HD

Почти все ваши чувствительные материалы должны быть в

/home
/opt
/var
/etc
/usr

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

rm удалит файлы, но шестнадцатеричный редактор все равно будет читать диск. Так что ноль потом. Посмотрите на клочок. У вас должен быть журнал ваших конфигурационных файлов, и где они находятся для целей DR, верно? Не забывайте файлы crontab, если у вас есть пароли, скажем так.

Установка CentOS или любое другое решение на основе виртуального диска является надежным. Ядро будет в памяти, вам нужен dd и некоторое содержимое bin. Но если вы перезагружаетесь в режиме восстановления, у вас может не быть сети или SSH, и вы можете отключиться.

NB Kedare имеет хорошую идею, и если вы работаете с ram при следующей перезагрузке (ramdisk), это возможно, очень трудно восстановиться после записи / dev / zero с нуля, так что это на самом деле не добавляет ценности, если ваша жизнь зависит от этого?

mckenzm
источник