Co się stanie, gdy użyję „dd” do zastąpienia dysku, z którego działa Ubuntu?

9

Co by się stało, jeśli użyję

sudo dd if=/dev/zero of=/dev/sda

z instalacji Ubuntu uruchomionej z /dev/sda ?


Próbowałem go na maszynie wirtualnej i wygląda na to, że poprawnie wyczyściłem dysk. Czy tak będzie za każdym razem? Czy to bezpieczny sposób na „wyczyszczenie” instalacji Ubuntu i wszystkich danych?

Moje pytanie jest nieco inspirowane:

  1. Jak odinstalować Ubuntu z komputera?
  2. W jaki sposób „rm -rf /” jest w stanie usunąć wszystkie pliki w systemie? .
JonasCz - Przywróć Monikę
źródło
2
Nie nie nie. Kiepski pomysł. Nie polegaj na tym, jeśli chcesz bezpiecznie usunąć swoje dane.
André Borie

Odpowiedzi:

16

W rzeczywistości system plików jest nadal zamontowany, a niektóre zapisy są buforowane, co oznacza, że ​​wciąż znajdują się w pamięci RAM i czekają na zapis na dysk. Powiedzmy, że ddpoprawnie nadpisuje wszystko, a tuż za nim bufory są opróżniane, a niektóre potencjalnie wrażliwe dane są zapisywane z powrotem na dysk. Więc nie, to nie jest bezpieczny sposób czyszczenia dysku.

Możesz uniknąć tego problemu, najpierw ponownie instalując w trybie tylko do odczytu główny system plików i wszelkie inne systemy plików znajdujące się na dysku (lub całkowicie odmontowując je, ale nie będzie to możliwe w przypadku głównego systemu plików), a następnie nie więcej zapisów powinno być w ogóle dozwolone w systemach plików (więc nie ma buforów do opróżnienia), więc twoje polecenie powinno być teraz bezpieczne, nawet jeśli nadal jest to zły pomysł w przypadku paniki, ponieważ zajmuje to dużo czasu.

Jeśli chcesz mieć jakąś funkcję usuwania paniki, sugeruję zaszyfrowanie dysku za pomocą LUKS (instalator Ubuntu może to zrobić), a następnie podążając za moją odpowiedzią na Security Stack Exchange . Wymaga to wyczyszczenia cryptheadera, który ma tylko 2 MB i którego zastąpienie zajmuje mniej niż sekundę. Następnie uruchom ponownie system, a klucze szyfrowania dysku znikną z pamięci, bez możliwości ich przywrócenia, ponieważ zniknął również sam moduł szyfrowania.

André Borie
źródło
Powiązane również: security.stackexchange.com/questions/106131/…
André Borie
10

Poświęciłem maszynę wirtualną, używając nieco bardziej zaawansowanego użycia ddpożyczonych i nieco zmodyfikowanych ze stron Arch Wiki .

Najpierw zainstaluj fajny miernik postępu:

sudo apt-get install pv

A następnie uruchom „wzmocnionej” ddpolecenia

sudo openssl enc -aes-256-ctr -pass pass:"$(dd if=/dev/urandom bs=128 count=1 2>/dev/null \
| base64)" -nosalt </dev/zero \
| pv -bartpes "$(sudo blockdev --getsize64 /dev/sda)" \
| sudo dd bs=64K of=/dev/sda

Spowoduje to, że dysk będzie wypełniony tekstem szyfrowanym AES. Kompletne i bezpieczne czyszczenie dysku? Prawdopodobnie lepszy niż twój ddprzykład, ale nic nie jest całkowicie bezpieczne ani gwarantowane ...

wprowadź opis zdjęcia tutaj

I jesteś mi winien jedną maszynę wirtualną :)

Bibliografia:

andrew.46
źródło
Czy możesz podać przykład, jak wyglądałaby składnia, gdyby wolałbyś wypełnić dysk zerami (if = / dev / zero) używając ddi pvproszę?
Stormlord
1
@Stormlord Po prostu przepuszczasz go pv(przeglądarka dd if=/dev/zero | pv | dd of=/dev/sdX
potoków
2
Nie musisz poświęcać maszyny wirtualnej - po prostu zrób wcześniej migawkę i przywróć, gdy skończysz :-)
JonasCz - Przywróć Monikę
Tak więc nawet jeśli istnieje opóźnienie, całkowity wynik jest skomplikowany steganograficznie. Bez „śmieci” w przeciwnym razie łatwo byłoby zrzucić dysk w celu znalezienia niezerowych wartości.
mckenzm
6

Krótka odpowiedź: zrobi mniej więcej tyle, ile chcesz, a potem nic nie zadziała. Używanie dddziała na poziomie poniżej systemu plików, co oznacza, że ​​wszelkie obowiązujące ograniczenia nie są już istotne (nie oznacza to, że jądro nie mogło temu zapobiec - ale tak nie jest). Niektóre treści z systemu plików są już w pamięci, na przykład jądro i ddsam program, a niektóre będą w pamięci podręcznej. Istnieje możliwość, że jeśli system działa w trybie wielu użytkowników, niektóre pliki mogą zostać zapisane w trakcie trwania dd, przy założeniu, że faktycznie się zmieniły, a jeśli jesteś pod presją pamięci, niektóre strony mogą również zostać zamienione (powinny być zaszyfrowane i dlatego nie można ich używać po ponownym uruchomieniu).

Większość poleceń, które wydasz po tym - w tym reboot- nie będzie w pamięci podręcznej, a więc nie będzie działać. Więc jeśli jesteś w trybie pojedynczego użytkownika, zrobi to wyjątkowo dobrze, jeśli jesteś w trybie wielu użytkowników, wyczyści on ogromną większość danych. Idealnie powinieneś to zrobić z jakiegoś innego nośnika (być może nawet zatrzymując się na initrd), aby mieć pewność, skąd pochodzą wszystkie zapisy.

Jeśli chcesz mieć bezpieczne czyszczenie, nie wykona tego zadania, ponieważ pozostaną pewne ślady oryginalnych danych, jeśli tylko je wyzerujesz. Zazwyczaj potrzebujesz do trzech losowych zapisów, co oznaczałoby kopiowanie /dev/urandomzamiast /dev/zero- znacznie wolniej, ale bezpieczniej. Niektórzy mogą sugerować, że używasz urządzenia, /dev/randomktóre służy do „czystych” losowych danych - bez pseudolosowych - ale w tym celu szansa na to, że ktoś zdoła złamać ziarno PRNG i skutecznie zamaskować dane, jest w zasadzie nieistotna.

Jeśli jesteś naprawdę paranoikiem, musisz wrzucić urządzenie magazynujące do pieca, aby się rozmagnesował / wyładował.

Jim Driscoll
źródło
1
Czy pamiętasz wyzwanie dd? To było lata temu, ale zaoferowali nagrodę każdej firmie, która mogła odzyskać dane z dysku twardego, który został wyzerowany raz. Nie mieli chętnych.
Casey
1
„Trzy razy” to kompletna bzdura. Losowe dane 1 raz są z pewnością nie do odzyskania. Nawet zerowanie będzie zbyt drogie do odzyskania (patrz komentarz @ Casey). Może gdyby nagroda wyniosła około 1 miliarda dolarów, mieliby chętnych ...
R .. GitHub ZATRZYMAJ LODĘ
Zależy od twojego budżetu i technologii dysku. Jeśli jest to talerz, możesz uzyskać dane. Nawet z „pionową” technologią magnetyczną. Im bardziej zmienna pamięć, tym bezpieczniejszy jesteś.
mckenzm
4

Podobnie jak na maszynie wirtualnej wyczyści dysk i sprawi, że system będzie bezużyteczny.

Jednak jeśli masz na myśli coś w rodzaju „usuwania paniki”, ddmoże to nie być wystarczająco szybkie i nie jestem pewien, czy w tym przypadku są dostępne szybsze polecenia lub programy.

Videonauth
źródło
1

Powinien działać, uruchomiony proces odbywa się w pamięci RAM i nie wymaga dysku. I tak użyłbym systemu działającego na żywo z płyty CD lub USB. Istnieje nawet dban, wyspecjalizowany linux na żywo do czyszczenia dysków.

Zastąpienie dysku zerami jest zapisywane, ale jeśli jesteś wystarczająco paranoikiem lub masz przepisy prawne, możesz wielokrotnie zastąpić losowymi danymi.

Zachowaj ostrożność podczas korzystania z nadpisywania ssd nie gwarantuje usunięcia wszystkich danych z powodu wyrównywania zużycia.

Jeśli używasz pełnego szyfrowania dysku (Luks), nie musisz usuwać całego dysku, wystarczy usunąć nagłówek Luks.

Uwe Burger
źródło