Jak mogę się upewnić, że katalog lub plik został rzeczywiście usunięty?

14

Wiem, że większość plików po usunięciu nie jest faktycznie usuwana z dysku i można je później odzyskać.

Jak mogę się upewnić, że katalog, który usunąłem, zostanie faktycznie usunięty z dysku? Czy są na to narzędzia?

Używam Debian Linux.

jcora
źródło
5
Krótka odpowiedź: nie możesz! Długa odpowiedź: albo fizycznie zniszcz dysk, albo sformułuj ponownie pytanie: ile wysiłku wymagałoby odzyskanie danych i jaki byłby powodzenie takiej próby?
Marco

Odpowiedzi:

11

Zaszyfruj dane przed ich zapisaniem. Aby usunąć dane, wyczyść klucz.

Jeśli dane zostały już zapisane w postaci zwykłego tekstu, jest już za późno, aby je wyczyścić w prosty sposób. W różnych miejscach może znajdować się wiele kopii danych:

  • w systemie plików, jeśli plik został zapisany wiele razy (nadpisany lub zastąpiony);
  • w systemie plików, jeśli został on przestawiony w ramach defragmentacji;
  • w czasopiśmie (prawdopodobnie zniknie dość szybko po ostatnim zapisaniu danych);
  • w kopiach zapasowych;
  • w sektorach niepełnosprawnych (szczególnie na dyskach SSD).

Aby pozbyć się kopii danych w systemie plików, prymitywną metodą jest wypełnienie wolnego miejsca ( cat /dev/zero >somefilei poczekanie, aż się zatrzyma, ponieważ system plików jest pełny). Spowoduje to zastąpienie wszystkich pełnych bloków.

Małe części danych mogą pozostać w niekompletnych blokach, które są częściowo używane przez inne pliki. Jest to szczególnie ważne w przypadku nazw plików, które mogą pozostać w blokach przechowujących zawartość katalogu. Aby pozbyć się wszystkiego, wykonaj kopię zapasową wszystkich plików, całkowicie zastąp urządzenie zawierające system plików, a następnie przywróć pliki.

Nośniki pamięci mogą przechowywać dane w blokach, które nie są już używane. Na dyskach twardych oznacza to złe bloki, które zostały przeniesione; jest to dość rzadkie zjawisko, dopóki dysk nie zaczyna się zużywać. Na dyskach SSD jest to częste zjawisko z powodu wyrównywania zużycia. W obu przypadkach zagrożenie jest bardzo niskie, ponieważ dostęp do tych danych wymaga nieco wyrafinowanego atakującego z umiarkowanie drogim sprzętem i czasem do stracenia. Jeśli zależy Ci na tych zagrożeniach, zaszyfruj dane i nie zostawiaj klucza w pobliżu.

Pamiętaj, że możesz zobaczyć porady na temat usuwania danych, wykonując wiele przejść lub używając losowych danych zamiast zer („czyszczenie Gutmanna”). Zapomnij o tym: dotyczy to tylko dysków twardych z lat osiemdziesiątych (i nawet wtedy dane nie są tak tanie do odtworzenia, a rekonstrukcja raczej niewiarygodna). Nadpisywanie zerami jest wystarczające; wykonywanie wielu losowych przejść jest przestarzałą radą lub olejem węża. Zobacz Dlaczego zapisywanie zer (lub danych losowych) na dysku twardym wiele razy jest lepsze niż jednorazowe zrobienie tego?

Gilles „SO- przestań być zły”
źródło
12

Istnieje bardzo popularne narzędzie o nazwie shred. Zastąpi każdy plik 25 razy, zanim zostanie usunięty. To może mnie to, czego szukasz.

Użycie niszczenia jest dość proste

$ shred secret_archive.tar.gz

Należy jednak pamiętać, że w nowoczesnych systemach shredmoże być nieefektywne lub bezużyteczne, jeśli:

  • Twoje programy tworzą pliki tymczasowe, których nie znasz (podobnie jak wiele aplikacji GUI)
  • Twój FS jest oparty na Copy-On-Write (jak ZFS lub Btrfs)
  • Twój FS jest oparty na logach (jak NILFS)
  • Twój FS używa kronikowania danych (w niektórych konfiguracjach jak JFS, ReiserFS, XFS, ext3 lub ext4)
  • Twój FS używa kompresji
  • Twój FS przydziela nowe wersje plików w różnych lokalizacjach
  • Masz migawki lub kopie zapasowe
  • Jesteś w sieci FS
  • Używasz dysku SSD z algorytmami wyrównywania zużycia

Inne i potencjalnie bezpieczniejsze opcje to:

  • Szyfrowanie krytycznych danych
  • Nadpisywanie całej partycji lub urządzenia pamięci masowej
  • Fizyczne zniszczenie urządzenia
tafer
źródło
1
Według mojej strony man shreddziała nawet z ext3 (i chyba też ext4) przy użyciu trybów data = uporządkowany (domyślnie) i data = zapis . Ponadto istnieje prosta alternatywa: po prostu stwórz ogromny plik zajmujący całą pozostałą przestrzeń systemu plików, aby usunięty plik został nadpisany.
scai
Dzięki. Właśnie to naprawiłem. journaling -> data jornaling
taffer
@ scai, ogromna metoda pliku niekoniecznie będzie działać, ponieważ bloki pliku mogły być już przeniesione i jeszcze nie zapisane (jak fałszywe dane, ostatni blok plików lub katalogi ...)
Stéphane Chazelas
3
shredjest olejem wężowym: nie jest lepszy niż head -c $(wc -c secret_archive.tar.gz)>! secret_archive.tar.gz`. Używanie niszczenia jest zawsze bezcelowe, chyba że używasz dysku twardego z lat 80. lub wczesnych 90.
Gilles „SO- przestań być zły”
3
shred / bcwipe / itp. są olejkami wężowymi na poziomie systemu plików. Dla dowolnego systemu plików. Ze względu na sposób pracy z plikami: za każdym razem, gdy klikniesz Zapisz, stary plik jest usuwany (pozostaje w wolnej przestrzeni) i tworzony jest nowy plik. Nie możesz go zniszczyć, jeśli system plików już o nim zapomniał. - Różni się na poziomie urządzenia lub zastępuje poziom wolnego miejsca. Shred jest jednym z niewielu szybkich losowych źródeł danych dostępnych w systemie Linux / Unix. / dev / (u) random jest zbyt cholernie wolny, aby nadawał się do nadpisywania dużych ilości danych. - Tak więc pojedyncze przejście na niszczenie jest w porządku dla urządzenia lub wolnego miejsca, tylko nie dla pojedynczego pliku
frostschutz