Nowe posty

xx Touchpad po pewnym losowym czasie przestaje reagować (7)
Wczoraj o 13:28:28
xx badblocks nie sprawdza dalej. (3)
2019-04-23, 20:44:36
xx Automat/scrypt do uruchamiania bootowalnego USB (0)
2019-04-22, 22:15:41
xx Zdalne polaczenie z posrednikiem pod Ubuntu bez GUI (2)
2019-04-22, 20:59:31
xx Uprawnienia (1)
2019-04-22, 14:10:38
xx bład krytyczny na dysku, dysk jest w LVM (2)
2019-04-19, 06:38:20
xx Przekierowanie na bezpieczną stronę z SSL (1)
2019-04-16, 19:52:43
xx bootloader (4)
2019-04-13, 18:31:03
xx Ubuntu i Bluetooth (1)
2019-04-12, 10:12:18
clip Opera - odtwarzanie niektórych filmów nie działa (1)
2019-04-12, 00:41:50

Autor Wątek: Czyszczenie "nieużywanej" części dysku - możliwości  (Przeczytany 3750 razy)

Offline McCone

  • Users
  • Nowy na forum
  • *
  • Wiadomości: 26
    • Zobacz profil
Witam!
Mam pytanie związane z koniecznością "wyczyszczenia" dysku z pozostałości  po danych wcześniej przechowywanych na dysku. Używam Ubuntu 15.04 - ext4,  i zapisałem w przeszłości kilka rzeczy, które usunąłem poprzez proste przeniesienie ich do kosza a następnie jego opróżnienie. Obecnie, chciałbym "wyzerować" dysk w taki sposób, aby usunąć ślady po tych danych. Oczywiście - mówię tutaj o czyszczeniu tylko fragmentów dysku ( nie chodzi o całkowite zerowanie dysku) - analogicznie jak robią to windowsowe programy ( np. Eraser - czyszczenie nieużywanej części dysku).

Pozdrawiam
McCone

Offline Paweł Kraszewski

  • Administrator
  • Guru
  • *****
  • Wiadomości: 2484
  • Lenistwo jest matką potrzeby = babcią wynalazku
    • Zobacz profil
    • Linuxpedia.PL
Odp: Czyszczenie "nieużywanej" części dysku - możliwości
« Odpowiedź #1 dnia: 2016-02-18, 14:46:13 »
Pewnie zerofree będzie przydatne. Nie służy do anty-forensikowego czyszczenia dysku, po prostu nadpisuje nieużywane obszary zerami.

ALE: nowe systemy plików (w tym EXT4) mają dużo metadanych rozpylonych po całym dysku i tam mogą uchować się jakieś kawałki danych. Jak chcesz być pewny, to backup plików partycji->pełny wipe partycji->przywrócenie backupu. Pełny wipe partycji zrobisz narzędziami typu nwipe.

Paweł Kraszewski
~Gentoo/FreeBSD/OpenBSD/Specjalizowane customy

Offline ultr

  • Users
  • Guru
  • *****
  • Wiadomości: 1185
    • Zobacz profil
Odp: Czyszczenie "nieużywanej" części dysku - możliwości
« Odpowiedź #2 dnia: 2016-02-18, 16:33:08 »
Można też bardzo prosto:
cd /punkt/montowania/partycji/i/dowolny/podkatalog
dd if=/dev/zero of=plik bs=4k
zajmie całe dostępne miejsce jednym plikiem i się zakończy
potem rm plik i dysk jest czysty.
Tylko żeby nie była to używana systemowa partycja, bo po zajęciu całego miejsca system może być niestabilny. Dobrze wtedy zrobić to z LiveCD.

Nie służy do anty-forensikowego czyszczenia dysku.
Tak samo w tym przypadku nadpiszesz tylko zawartości plików. Ale np. nazwy plików które kiedyś istniały pozostaną, bo siedzą w tablicy alokacji plików.
https://ext4.wiki.kernel.org/index.php/Ext4_Disk_Layout#Linear_.28Classic.29_Directories

Offline McCone

  • Users
  • Nowy na forum
  • *
  • Wiadomości: 26
    • Zobacz profil
Odp: Czyszczenie "nieużywanej" części dysku - możliwości
« Odpowiedź #3 dnia: 2016-02-20, 14:21:26 »
Dzięki za podpowiedzi - coś już wiem ... co prawda  muszę poszukać składni zerofree, ale to już szczegół ...
Zapytam jeszcze o jedno - czy w przypadku backupu plików danej partycji - a następnie wipu  - i powrotu  z danymi, uzyskam podobny efekt, jak przy formacie tej partycji ???
Szkoda, że w tym zakresie linux jest bardziej niebezpieczny do przechowywania danych "wrażliwych"....;-)  ( w windzie eraser usuwa skutecznie dane i informacje o nich :-) )

Pozdrawiam
McCone

Offline 1709

  • Users
  • Guru
  • *****
  • Wiadomości: 2138
  • 1709
    • Zobacz profil
Odp: Czyszczenie "nieużywanej" części dysku - możliwości
« Odpowiedź #4 dnia: 2016-02-20, 16:23:32 »
Cytuj
...w windzie eraser usuwa skutecznie dane
Cytuj
... które usunąłem poprzez proste przeniesienie ich do kosza a następnie jego opróżnienie.
Nie znam Erasera, ale Tobie napewno nie chodzi o skuteczne,
 ale o proste i wygodne, a to jest różnica.
Poza tym nadpisywanie to nadpisywanie, niewazne jakiego systemu używasz,
 ważne jak to robisz i ile razy.
- przepraszam że się nie potrzebnie wtrąciłem, post mój można zgłosić do usunięcia.
Pochwal się swoją kartą graficzną w tym wątku-->
http://forum.linux.pl/index.php/topic,19841.msg121122.html#msg121122

Offline Paweł Kraszewski

  • Administrator
  • Guru
  • *****
  • Wiadomości: 2484
  • Lenistwo jest matką potrzeby = babcią wynalazku
    • Zobacz profil
    • Linuxpedia.PL
Odp: Czyszczenie "nieużywanej" części dysku - możliwości
« Odpowiedź #5 dnia: 2016-02-20, 21:29:03 »
Cytat:  link=topic=24377.msg131775#msg131775 date=1455974486
(...) uzyskam podobny efekt, jak przy formacie tej partycji ??? (...)
Nie. Format nadpisuje tylko tyle, żeby było widać pustą partycję. Fizycznie dane w znakomitej większości zostają nie naruszone.

Cytat:  link=topic=24377.msg131775#msg131775 date=1455974486
Szkoda, że w tym zakresie linux jest bardziej niebezpieczny do przechowywania danych "wrażliwych"....;-)  ( w windzie eraser usuwa skutecznie dane i informacje o nich :-) )
Jeżeli myślisz, że NTFS nie jest "pamiętliwy", to jesteś w gruuuubym błędzie. A dane "wrażliwe" trzymasz na szyfrowanej partycji.
Paweł Kraszewski
~Gentoo/FreeBSD/OpenBSD/Specjalizowane customy

Offline McCone

  • Users
  • Nowy na forum
  • *
  • Wiadomości: 26
    • Zobacz profil
Odp: Czyszczenie "nieużywanej" części dysku - możliwości
« Odpowiedź #6 dnia: 2016-02-20, 22:31:24 »
Witam!
Jeszcze raz - dzięki za odpowiedzi  :)
Co do pytania o format - to chyba źle sformułowałem zagadnienie - chodziło mi o to, że po usunięciu danych z partycji i nadpisaniu ( np. zerofree ) jej powierzchni - gdy wykonam format - to zostanie usunięta tablica alokacji plików ( tak myślę  8)). Więc na dysku nie będzie ani tablicy ani danych do odzyskania ... - o co się Polska biła ....

Jak przypuszczam, drugi wariant ( ten z backupem ) - prowadzi do tego samego wyniku ....
???

A co do "danych wrażliwych" - to była przenośnia .... przecież nie mamy nic do ukrycia przed służbami .. ;)

Pozdrawiam
McCone

Offline ultr

  • Users
  • Guru
  • *****
  • Wiadomości: 1185
    • Zobacz profil
Odp: Czyszczenie "nieużywanej" części dysku - możliwości
« Odpowiedź #7 dnia: 2016-02-21, 02:07:03 »
Generalnie dysk to jeden wielki blok bajtów. Jak bardzo chcesz, to możesz zrobić program, który (z prawami roota) otworzy fopen() bezpośrednio np. /dev/sdb i będzie używał sobie całego dysku jak wielkiego pliku:

..............................................................................................

Tyle, że nie jest to zbyt praktyczne. Stąd też partycje i systemy plików.

Aby były partycje, musisz mieć tablicę partycji MBR (albo GPT) [1-4].
Tablica partycji dzieli powierzchnię dysku znów na kilka mniejszych ciągłych podbloków. Mówi gdzie partycja się zaczyna i gdzie kończy. I tylko tyle.
(Są jeszcze dyski logiczne, które wyglądają odrobinę inaczej, ale dla użytkownika i tak jest to praktycznie przeźroczyste.)
MBR zawiera też informacje o programie rozruchowym systemu operacyjnego, i to właśnie w MBR dysku BIOS szuka tych danych gdy uruchamia komputer "z danego dysku".

Więc /dev/sdb1, /dev/sdb2, ... to znów po prostu bloki bajtów odpowiadające pewnemu zakresowi powierzchni dysku.
Znów możesz je sobie otworzyć jak zwykły plik i po nich pisać:

MBR[..........................................................][.................][..........]

Ale to nadal nie jest wygodne, mamy więc systemy plików.
Dopiero teraz pojawia się formatowanie.
Formatując partycję powodujesz, że ten wielki blok bajtów będzie posiadał strukturę (narzuconą przez dany system plików) i będzie zarządzany przez system operacyjny.
Co wchodzi w skład systemu plików na takiej partycji? Przede wszystkim dwie zupełnie rozdzielne rzeczy: sektory zawierające metadane plików i katalogów, oraz sektory zawierające pocięte dane z samych plików (im bardziej pocięte, tym większa fragmentacja dysku).

MBR[{X..........}{...........................................}][.................][..........]

MBR[{XABC.......}{aaaaaaabbbcccbbb...........................}][.................][..........]

(Tak na prawdę jest kilka kopii tablicy alokacji rozrzuconych po całej partycji. Polecenia mkfs.* informuje o ich lokalizacjach podczas formatowania.)

Natomiast usuwając plik tak na prawdę niczego nie usuwasz. Oznaczasz tylko, że sektory zawierające dane pliku nie są już używane i mogą być (w przyszłości) nadpisane nowym plikiem - ale na razie ich zawartość zostaje, bo po co marnować czas na ich czyszczenie. Z nazwą pliku jest różnie w różnych systemach plików, ale także może zostać tylko oznaczona jako już nieistniejąca, ale sam ciąg znaków nadal nie zniknie z powierzchni dysku. W systemach ext jeden rekord (inode) wskazuje na inny, tworząc drzewo [5]. "Usunięcie" wpisu polega na odpięciu takiego inode od drzewa, ale niekoniecznie fizycznym usunięciu jego metadanych z dysku:

MBR[{XABC.......}{aaaaaaabbbcccbbb...........................}][.................][..........]

Stąd też np. polecenie wipe, poza nadpisaniem zawartości pliku, domyślnie zmienia także jego nazwę przed usunięciem - aby to co zostanie w tablicy alokacji było losowym ciągiem znaków:

MBR[{XABW.......}{aaaaaaabbbwwwbbb...........................}][.................][..........]

Natomiast formatowanie nie powoduje usunięcia żadnych danych - ani zawartości plików, ani tego drzewa metadanych. Tworzy tylko nowy korzeń drzewa (i katalog lost+found). Reszta tego drzewa pozostaje odcięta i nadal widnieje zapisana fizycznie na dysku. Dlaczego? Bo system nie będzie bawił się w odczytywanie starego systemu plików (który może być dowolny, nieobsługiwany, może go nie być, albo mogą być w tym miejscu losowe dane) aby odnaleźć jaką część dysku stanowiła poprzednia tablica alokacji i ją usunąć:

MBR[{YABC.......}{aaaaaaabbbcccbbb...........................}][.................][..........]


Więc:
Cytat:  link=topic=24377.msg131779#msg131779 date=1456003884
po usunięciu danych z partycji i nadpisaniu ( np. zerofree ) jej powierzchni - gdy wykonam format - to zostanie usunięta tablica alokacji plików
nie jest prawdą. Danych (najprawdopodobniej) nie będzie, ale tablica alokacji pozostanie na dysku do odczytania.


Jak zobaczyć co jest na dysku? Odmontować partycję (np. /dev/sdb1) i obejrzeć ją edytorem heksadecymalnym jak zwykły plik.
Tyle, że to będzie duuuuży plik. Więc jeśli chcesz się tylko przekonać na własne oczy co jest na dysku to proponuję poniższe:

To, że te partycje to wielkie bloki bajtów działa też w drugą stronę. Możesz stworzyć sobie jakiś plik (np. 50MB), a następnie go sformatować aby zawierał w sobie jakiś system plików i taki plik zamontować jak dysk:
$ dd if=/dev/zero of=plik.dat bs=1M count=50
$ /sbin/mkfs.ext4 plik.dat
$ mkdir montownia
$ sudo mount -t ext4 plik.dat montownia

Polecenie mount pokaże zamontowany system plików.
$ sudo mkdir montownia/dane
$ sudo chown 1000:1000 montownia/dane
$ cd montownia/dane
$ echo "tajne dane" > tajny_plik.txt
$ rm tajny_plik.txt
$ cd ../..
$ sudo umount montownia

I po odmontowaniu możesz obejrzeć plik.dat edytorem heksadecymalnym i poszukać charakterystycznych ciągów znaków: "tajne dane" oraz "tajny_plik.txt". Będą tam wszystkie.


A propos tego pliku z partycją - można tak też zrobić sobie szyfrowaną partycję w postaci zwykłego pliku do zamontowania. Wtedy wszelkie pozostawione dane łącznie z tablicą alokacji plików i tak są zaszyfrowane, a więc nie odczyta się ich edytorem heksadecymalnym (chyba, że zna się hasło do partycji).


A jak poprawnie wyczyścić partycję?
Najpierw odmontować. Potem:
dd if=/dev/zero of=/dev/sdb1 bs=1M
I dopiero teraz formatujemy ją na nowy system plików.
Po jednokrotnym nadpisaniu dane są nie do odczytania za pomocą zwykłego komputera. Choć w laboratorium nadal da się je odzyskać, szczególnie gdy nadpisujesz zerami. Szacuje się, że trzeba nadpisywać 25-35 razy, aby było to fizycznie skuteczne. Bezpieczniejsze jest też użycie losowych danych, ale jest to dłuższe (generowanie losowych danych obciąża CPU):
dd if=/dev/urandom of=/dev/sdb1 bs=1M
I należy wtedy pamiętać, aby, zanim utworzymy nowy MBR i partycje, oczyścić zerami początek dysku (minimum 4k), bo losowe dane w tej części mogą nie spodobać się BIOSowi:
dd if=/dev/zero of=/dev/sdb1 bs=4k count=1


[1] https://pl.wikipedia.org/wiki/Master_Boot_Record
[2] https://pl.wikipedia.org/wiki/GUID_Partition_Table
[3] https://en.wikipedia.org/wiki/Master_boot_record
[4] https://en.wikipedia.org/wiki/GUID_Partition_Table
[5] https://ext4.wiki.kernel.org/index.php/Ext4_Disk_Layout#Hash_Tree_Directories
« Ostatnia zmiana: 2016-02-21, 02:22:12 wysłana przez ultr »

Offline ultr

  • Users
  • Guru
  • *****
  • Wiadomości: 1185
    • Zobacz profil
Odp: Czyszczenie "nieużywanej" części dysku - możliwości
« Odpowiedź #8 dnia: 2016-02-21, 02:39:24 »
Jedna uwaga do powyższego:

system nie będzie bawił się w odczytywanie starego systemu plików (który może być dowolny, nieobsługiwany, może go nie być, albo mogą być w tym miejscu losowe dane)
Przynajmniej w przypadku tego 50M pliku partycji polecenie mkfs.ext4 wykonane ponownie na tym pliku nadpisuje wszystkie stare metadane jak również same zawartości plików (w hexedytorze jest czysto), i to nawet gdy tych plików jest więcej.
Jednak być może ma to związek z małym rozmiarem partycji. Bo nie jest to raczej możliwe w przypadku większych dysków - inaczej takie formatowanie trwałoby godzinami.

Offline McCone

  • Users
  • Nowy na forum
  • *
  • Wiadomości: 26
    • Zobacz profil
Odp: Czyszczenie "nieużywanej" części dysku - możliwości
« Odpowiedź #9 dnia: 2016-02-21, 13:33:46 »
Witam!
Bardzo dziękuję za wykład  :)
Teraz wiem już duuużo ....więcej  i zrozumiałem błędy mojego myślenia o FORMAT  :(

Więc chyba muszę "odszczekać" moją opinię o mniejszym bezpieczeństwie linux-a  ;)
Wiem co mam zrobić, wiem jakimi narzędziami i z jakim skutkiem....

Pozdrawiam
McCone