Bezpiecznie wyczyść bezgłowy zdalny serwer Linux

18

Mam zamiar zakończyć wieloletnią relację z moim dostawcą hostingu, ale zanim to zrobię, chcę bezpiecznie wytrzeć pudełko. Jest to dedykowany serwer z systemem Debian na jednym dysku EXT3 i chociaż mam dostęp do roota, nie mogę uruchomić alternatywnego nośnika, ponieważ gdzieś jest bez głowy w szafie.

Nie potrzebuję wielu przejść, ale jeśli to możliwe, chciałbym wyczyścić wolne miejsce. Zasadniczo chciałbym odejść i upewnić się, że nie pozostawiam żadnych moich danych osobowych. Martwię się, że okno może się zawiesić, zanim skończy się czyszczenie / synchronizacja systemu plików, jeśli tylko uruchomięsrm -R -s /

notpeter
źródło
imho, użyj dd (na dole)
Some Linux Nerd

Odpowiedzi:

4

Udało mi się przebrnąć przez całą drogę rm -rf --no-preserve-root /bez awarii systemu i bez pozostawienia niczego na dysku.

Fahad Sadah
źródło
Uruchomiłem srm w moich katalogach danych, a następnie rm -rf --no-preserve-root /przez SSH, aby wyczyścić resztę. Zgłoszono kilka błędów w / dev i następnie zakończono; Nie bardzo wiedziałem, co robić po zachęcie do basha. Bez / bin / ls lub / sbin / shutdown nie mogłem potwierdzić sukcesu. Był antyklimaktyczny; Byłem mentalnie przygotowany na awarię, a nie jądro zombie i sesję sshd.
notpeter
7
To nie jest bezpieczne. Dane nie są usuwane, a ich usunięcie jest nadal możliwe. ddZamiast tego lepiej przesadzić z dysku.
qris
10

Instalator CentOS (anakonda), który jest dostarczany z obrazami PXE, zawiera serwer VNC, dzięki czemu możesz zmienić konfigurację gruba, aby uruchomić instalator CentOS, przekazując odpowiedzi na pytania instalatora przed 2 etapem w linii grub, uruchom ponownie, a następnie VNC do instalatora.

Teraz, jeśli moja pamięć służy mi poprawnie, z poziomu tego instalatora powinieneś mieć możliwość upuszczenia do powłoki, z której możesz uzyskać dostęp i zniszczyć dysk.

Skopiuj pliki vmlinuz i initrd z katalogu PXE w dystrybucji CentOS ( http://mirror.centos.org/centos/5/os/i386/images/pxeboot/ ) do / boot i zmodyfikuj konfigurację grub:

domyślnie 0
limit czasu 5
tytuł CentOS
root (hd0,0)
jądro /boot/vmlinuz.cent.pxe vnc vncpassword = HASŁO bezgłowy ip = maska ​​sieci IP = 255.255.255.0 brama = GATEWAYIP dns = 8.8.8.8 ksdevice = metoda eth0 = http: //mirror.centos.org/centos/5/os / i386 / lang = en_US keymap = us
initrd /boot/initrd.img.cent.pxe

Nawiasem mówiąc, każda przyzwoita firma hostingowa powinna być przygotowana na zniszczenie twoich dysków.

Stephen Nelson-Smith
źródło
3
Nie są „przyzwoitą firmą hostingową”, dlatego muszę wyjść i wyczyścić dyski.
notpeter
Nie użyłem tej metody, ale użycie GRUB-a do uruchomienia minimalnego obrazu ratunkowego, który jest wstępnie skonfigurowany do włączenia vnc (a nawet tylko SSH) jest całkowicie wykonalny. Jeśli się zepsujesz, potencjalnie pozostanie Ci system, który wymaga ręcznej interwencji, aby ponownie poprawnie się uruchomić, więc prawdopodobnie najpierw warto przetestować na maszynie wirtualnej.
notpeter
1
Przydatne może być słowo dotyczące kolejności wycierania rzeczy. Po pierwszym wyczyszczeniu wszystkich partycji oprócz tej zawierającej /bootbędziesz mógł zacząć od nowa, na wypadek gdyby maszyna została ponownie uruchomiona w trakcie procesu. Jeśli /bootzdarzy się, że znajduje się na /partycji, można usunąć wszystkie pliki poza nią /booti wyczyścić wolne miejsce przed ostatecznym wyczyszczeniem całej partycji. Pozwoliłoby to zminimalizować ilość danych pozostawionych na dysku w przypadku, gdyby został ponownie uruchomiony po wyczyszczeniu tak dużo, że nie będzie już można go uruchomić.
kasperd
7

Przed zniszczeniem systemu operacyjnego możesz usunąć wszystko wrażliwe i zerować (używając dd if = / dev / zero of = justabigfile).

I wierzę, że większość systemów przetrwa dd na działającym systemie wystarczająco długo, aby zastąpić cały dysk. Oczywiście nie ma odwrotu, jeśli nie.

Joris
źródło
4
Jeśli usuniesz wszystkie niepokojące pliki, zanim to zrobisz, zamień partycję wymiany, wyczyść partycję wymiany (używając funkcji wipe lub dd), to powyższe powinno być całkiem bezpieczne. Musisz to zrobić jako root, aby ominąć 5% zarezerwowane dla roota, i możesz nie wyczyścić wszystkich nazw plików, ale dane powinny zniknąć.
Slartibartfast
6

Moje rozwiązanie polega na wieloetapowym podejściu wykonującym niektóre z powyższych czynności, ale także na chroocie w pamięci RAM, który powinien pozwolić dd na całkowite wyczyszczenie dysku.

Najpierw usuń wszystkie wrażliwe dane, pozostawiając pliki niezbędne do uruchomienia systemu operacyjnego. Następnie zrób to (nie w skrypcie, zrób to jedno polecenie na raz):

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

To powinno się tym zająć!

moparisthebest
źródło
1

Możesz po prostu ddzastąpić całą partycję / dysk na działającym serwerze bez żadnych obaw. Używamy go często w pracy (gdy klient nie chce płacić za bezpieczne niszczenie dysku fizycznego).

W rzeczywistości usuwasz dane bez wiedzy o zamontowanym systemie plików, więc system plików zacznie wariować w miarę utraty metadanych, a następnie sam system operacyjny zacznie się „załamywać”. Jednak to, co jest już w pamięci podręcznej, nadal działa. Możesz więc monitorować postęp za pomocą zdalnej konsoli lub KVM (nie próbowałem tego przez ssh). System działa nawet po ddzakończeniu, jednak żadne polecenie nie będzie działać, a wszystkie demony prawdopodobnie już nie działają.

Używam tych poleceń: dd if=/dev/zero of=/dev/sda bs=1M & a następnie kill -HUP %1do monitorowania postępu (dd wydrukuje aktualną prędkość i ilość zapisanych danych). Ustawienie rozmiaru bloku ( bs) jest bardzo ważne dla osiągnięcia prędkości zapisu sekwencji HDD za pomocą dd.

Za każdym razem ddmogłem wyczyścić dysk do końca i mogłem wydać killpolecenie (wbudowane w powłokę) do końca. Jeśli masz raid oprogramowania, możesz wyczyścić mdsamo urządzenie lub każde urządzenie składowe osobno.

Marki555
źródło
Mój współpracownik to zrobił i xwindows nie zawiesił się, powinno być dokładnie tym, czego potrzebuje requester.
Niektóre Linux Nerd
1

Protokół ATA ma polecenie „bezpiecznego wymazywania”, które, jak wskazuje jego nazwa, powinno bezpiecznie wyczyścić cały dysk twardy.

Szczegółowe informacje można znaleźć w artykule wiki jądra, ale pamiętaj o ostrzeżeniach u góry:

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

Vladimir Panteleev
źródło
Aktualizacja 2018: kilkakrotnie z powodzeniem korzystałem z tego, aby zdalnie czyścić serwery, nawet jeśli działają one na wymazywanym systemie plików. Ponieważ program po prostu wydaje polecenie ATA i czeka na odpowiedź, nie trzeba wykonywać kodu na procesorze podczas procesu czyszczenia.
Vladimir Panteleev
0

Możesz spróbować zapisać losowe dane na dysku w następujący sposób:

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

Jest bezpieczniejszy niż używanie / dev / zero, ponieważ zapisuje on losowe dane, ale jest także DUŻO wolniejszy ..

Kedare
źródło
Jako ktoś, kto nie wie lepiej, dlaczego ludzie tak głosują? Czy to nie jest dobra praktyka?
Kanadyjczyk Luke REINSTATE MONICA
@CanadianLuke Pytanie dotyczy bezpiecznego usunięcia już uruchomionego serwera. Nie możesz pisać na tak zamontowanym dysku, więc nie będzie działać.
longneck
@ Longongeck Dzięki. Z jakiegoś powodu myślałem, że root może to zrobić ... Chociaż nigdy nie próbowałem, więc uwierzę ci na słowo. Dzięki za wyjaśnienie
Kanadyjczyk Luke REINSTATE MONICA
@ Longong, możesz, dodałem komentarz powyżej, ale miałem naprawdę paranoicznego współpracownika, który to zrobił. W rzeczywistości możesz całkowicie odłączyć dysk twardy, a Linux nadal będzie działał w pamięci bez niczego więcej niż kilku komunikatów o błędach aplikacji.
Niektóre Linux Nerd
0

Cokolwiek wybierzesz, skontaktuj się z innym dostawcą i przetestuj go.

Pobierz podobną instancję na AWS (lub gcloud lub ...) i wypróbuj ją tam, trzymając dysk, a następnie dołączając go do innej instancji jako dodatkową pamięć i skanując. dd if = sdb | hd

Prawie wszystkie wrażliwe materiały powinny być w środku

/home
/opt
/var
/etc
/usr

To pliki konfiguracyjne z osadzonymi hasłami przeszkadzają większości ludzi. Jeśli wiesz, czym one są, przeszukaj cały system plików, aby je wykorzenić.

rm usunie pliki, ale edytor szesnastkowy nadal będzie czytał dysk. Więc zero potem. Spójrz na strzępy. Powinieneś mieć dziennik swoich plików konfiguracyjnych i gdzie są one do celów odzyskiwania DR, prawda? Powiedzmy, że nie zapomnij plików crontab, jeśli masz w nich hasła.

Instalacja CentOS lub dowolne rozwiązanie ramdysku jest prawidłowe. Jądro będzie w pamięci, potrzebujesz dd i trochę zawartości bin. Ale jeśli uruchomisz ponownie w trybie odzyskiwania, możesz nie mieć sieci lub SSH i odciąć się.

Uwaga: Kedare ma dobry pomysł, a jeśli uciekasz z pamięci RAM przy następnym ponownym uruchomieniu (ramdysku), jest to możliwe, bardzo trudno jest odzyskać od / dev / zero zapisów na początku, więc tak naprawdę nie dodaje wartości, chyba że twoje życie zależy od tego?

mckenzm
źródło