Jak bezpečně smazat soubory v systému Linux

Smazání starých datových souborů je stejně důležité jako skartace starých papírových dokumentů. Ukážeme si, jak bezpečně smazat soubory v Linuxu. Tento návod se zaměří na příkaz `shred` a sadu nástrojů pro bezpečné odstranění.

Proč smazané soubory lze obnovit

Běžné smazání souboru ve skutečnosti neodstraní jeho data z pevného disku. Vše závisí na tom, jak souborový systém pracuje s inody. Inody jsou datové struktury, které obsahují metadata o souborech, jako je jejich název, umístění na disku, atributy a oprávnění. Adresář je v podstatě také soubor, který obsahuje názvy a čísla inodů souborů, které obsahuje.

Když soubor smažete pomocí příkazu `rm`, souborový systém uvolní příslušný inode a upraví adresář. Tím se označí místo na disku, které soubor zabíral, jako volné pro další použití. Představte si to jako v knihovně, kde roztrhnete katalogovou kartu knihy. Kniha je stále na poličce, jen je těžší ji najít.

Prostor po smazaném souboru je tedy volný pro nové soubory, ale data starého souboru tam stále zůstávají. Dokud nebude toto místo přepsáno, existuje velká šance na obnovení smazaného souboru.

Úplné odstranění souboru ale není tak jednoduché, jak se zdá. Pojďme se na to podívat.

Pozor na SSD disky

Tyto techniky jsou vhodné pro tradiční mechanické pevné disky (HDD), ale neměly by se používat pro SSD disky. Na SSD by to nefungovalo a zbytečně by se zvyšoval počet zápisů, což by vedlo k opotřebení disku. Pro bezpečné vymazání dat z SSD disku byste měli použít nástroj od výrobce vašeho SSD.

Příkaz `shred`

Příkaz `shred` je navržen tak, aby přepsal data souboru, aby se nedal obnovit. Je součástí většiny linuxových distribucí, například Ubuntu, Fedora a Manjaro.

Představme si, že pracujeme v adresáři `~/research`, který obsahuje textové soubory a další podadresáře s dalšími soubory. Předpokládáme, že tyto soubory obsahují citlivé informace a je potřeba je trvale odstranit z disku.

Strukturu adresářů můžeme zobrazit pomocí příkazu `tree -d`, který zobrazí pouze adresáře:

tree -d

Skartování jednoho souboru

Pro skartování jednoho souboru použijeme následující příkaz s těmito parametry:

`-u`: Odstraní soubor po přepsání.
`-v`: Zobrazí podrobný výpis akcí, které `shred` provádí.
`-z`: Provede konečné přepsání nulami.

shred -uvz Preliminary_Notes.txt_01.txt

Ve výchozím nastavení `shred` soubor přepíše čtyřikrát. První tři průchody používají náhodná data a poslední průchod nuly, jak jsme si vyžádali. Poté soubor odstraní a přepíše některá metadata v inodu.

Nastavení počtu přepisovacích průchodů

Pomocí parametru `-n` můžeme nastavit počet přepisovacích průchodů. `shred` provede vždy alespoň jeden průchod, takže číslo udává počet dodatečných průchodů. Pro celkem tři průchody zadáme `-n 2`:

shred -uvz -n 2 Preliminary_Notes.txt_02.txt

Jak je vidět, `shred` provedl tři průchody.

Méně průchodů znamená menší bezpečnost, ale rychlejší proces. Nicméně, tři průchody jsou obvykle více než dostatečné.

Skartování více souborů

Pomocí zástupných znaků můžeme skartovat více souborů najednou. Znak `*` nahrazuje libovolný počet znaků a znak `?` nahrazuje jeden znak. Následující příkaz skartuje všechny zbývající soubory s názvem „Preliminary_Notes“ v aktuálním adresáři:

shred -uvz -n 2 Preliminary_Notes_*.*

`shred` postupně zpracovává zbývající soubory.

Příkaz `shred` nemá rekurzivní volbu, takže jej nelze použít pro vymazání celých adresářových stromů.

Problémy s bezpečným mazáním souborů

Přestože je příkaz `shred` užitečný, existuje problém. Moderní žurnálovací souborové systémy, jako ext3 a ext4, se snaží maximálně zajistit integritu dat. V případě žurnálovacích systémů neexistuje žádná záruka, že přepisování skutečně probíhá na stejných místech na disku, kde byl smazaný soubor.

Pokud chcete mít větší jistotu, že soubory byly smazány důkladněji, než by to udělal příkaz `rm`, může být `shred` užitečný. Nicméně není vhodné se spoléhat na to, že data jsou zcela a nenávratně smazána. Není to tak jisté, jak by se mohlo zdát.

Sada pro bezpečné odstranění

Příkazy z balíčku `secure-delete` se snaží překonat omezení žurnálovacích systémů a úspěšně přepsat soubory. Platí ale stejná upozornění jako u příkazu `shred` – není záruka, že přepis probíhá ve správné oblasti disku. Šance na úspěch je vyšší, ale stoprocentní jistota není.

Příkazy z balíčku `secure-delete` provádějí následující sekvenci přepisů a akcí:

  1. Přepíše data bajty s hodnotou 0xFF.
  2. Pětkrát přepíše náhodnými daty.
  3. 27krát přepíše speciálními hodnotami definovanými Peterem Gutmannem.
  4. Pětkrát přepíše náhodnými daty.
  5. Přejmenuje soubor na náhodnou hodnotu.
  6. Zkrátí soubor.

Pokud se vám to zdá přehnané, nejste sami. Peteru Gutmannovi, který je profesorem na University of Aukland, se to zdálo také. V roce 1996 publikoval článek diskutující o těchto technikách. Z tohoto článku se stal městský mýtus, že je nutné používat všechny techniky z článku najednou.

Peter Gutmann se později snažil uvést věci na pravou míru a prohlásil, že „dobré přepsání náhodnými daty bude fungovat tak dobře, jak lze očekávat.“

Ale sada secure-delete, i přes to, stále používá výše popsanou sadu technik. Nejprve ji ale musíme nainstalovat.

Instalace balíčku `secure-delete`

Pokud používáte Ubuntu nebo jinou distribuci založenou na Debianu, můžete balíček nainstalovat pomocí příkazu `apt-get`. Pro jiné distribuce Linuxu použijte správce balíčků své distribuce.

sudo apt-get install secure-delete

Balíček `secure-delete` obsahuje čtyři příkazy:

  • `srm`: bezpečná verze příkazu `rm`, která soubory smaže a přepíše jejich místo na disku.
  • `sfill`: nástroj pro přepsání veškerého volného místa na pevném disku.
  • `sswap`: používá se pro přepsání a vyčištění odkládacího prostoru.
  • `sdmem`: nástroj pro vyčištění paměti RAM.

Příkaz `srm`

Příkaz `srm` se používá stejně jako příkaz `rm`. Pro odstranění jednoho souboru použijte následující příkaz. Parametr `-z` (nuly) zajistí, že `srm` použije pro konečné přepsání nuly místo náhodných dat. Parametr `-v` (verbose) způsobí, že nás `srm` bude informovat o svém průběhu.

srm -vz Chapter_One_01.txt

První věc, které si všimnete, je, že `srm` je pomalý. Zobrazuje průběh, ale je úlevné, když se znovu objeví příkazový řádek.

Počet průchodů můžeme snížit na dva pomocí parametru `-l` (snížit zabezpečení), což výrazně zrychlí proces.

srm -lvz Chapter_One_02.txt

`srm` nás upozorní, že to je z hlediska bezpečnosti horší, ale soubor i tak bezpečně smaže.

Parametr `-l` můžeme použít dvakrát pro snížení počtu průchodů na jeden:

srm -llvz Chapter_One_03.txt

Použití `srm` s více soubory

S příkazem `srm` můžeme použít i zástupné znaky. Následující příkaz vymaže všechny zbývající soubory z první kapitoly:

srm -vc Chapter_One_0?.txt

`srm` postupně zpracovává jednotlivé soubory.

Mazání adresářů a jejich obsahu pomocí `srm`

Parametr `-r` (rekurzivní) způsobí, že `srm` odstraní všechny podadresáře a jejich obsah. Můžeme zadat cestu k prvnímu adresáři.

V tomto příkladu smažeme vše v adresáři `~/research`. Tedy všechny soubory a podadresáře v `~/research` budou bezpečně odstraněny.

srm -vz *

`srm` začne postupně zpracovávat adresáře a soubory.

Nakonec nás vrátí do příkazového řádku. Na testovacím počítači, na kterém vznikl tento článek, trvalo odstranění zhruba 200 souborů rozložených v několika adresářích asi jednu hodinu.

Všechny soubory a podadresáře byly odstraněny, jak jsme očekávali.

Příkaz `sfill`

Co když se obáváte o soubory, které jste smazali pomocí příkazu `rm`? Jak zajistíte, že jsou přepsány? Příkaz `sfill` přepíše veškeré volné místo na vašem pevném disku.

Když to provedete, všimnete si, že na pevném disku máte stále méně volného místa, až do bodu, kdy žádné volné místo není. Po dokončení se veškerý volný prostor uvolní. Pokud spravujete víceuživatelský systém, bude to velmi rušivé, takže se jedná o úkol údržby, který by měl být prováděn mimo pracovní dobu.

I na počítači jednoho uživatele ztráta místa na pevném disku znamená, že se stane nepoužitelným, jakmile `sfill` využije většinu místa. Je to něco, co byste měli spustit a nechat běžet.

Pro urychlení procesu můžeme použít parametr `-l` (snížit zabezpečení). Dalšími parametry jsou `-v` (verbose) a `-z` (nuly), které jsme viděli dříve. Zde žádáme `sfill`, aby bezpečně přepsal veškerý volný prostor v adresáři `/home`.

sudo sfill -lvz /home

Připravte se na to, že to bude trvat dlouho. Na testovacím počítači – který má pouze 10GB pevný disk – to začalo odpoledne a skončilo někdy v noci.

Bude to trvat hodiny. A to i s parametrem `-l` (snížit zabezpečení). Nakonec se ale vrátíte do příkazového řádku.

Příkaz `sswap`

Příkaz `sswap` přepíše obsah vašeho odkládacího oddílu. Nejprve je nutné zjistit, který oddíl se používá jako odkládací prostor. Můžeme to udělat pomocí příkazu `blkid`, který vypíše bloková zařízení.

sudo blkid

Najděte slovo „swap“ a poznamenejte si blokové zařízení, ke kterému je přiřazen.

Vidíme, že odkládací oddíl je přiřazen k `/dev/sda5`.

Před přepisováním musíme vypnout používání odkládacího oddílu. Použijeme příkaz `swapoff`:

sudo swapoff /dev/sda5

Nyní můžeme použít příkaz `sswap`.

Jako parametr pro příkaz `sswap` použijeme `/dev/sda5`. Použijeme také volby `-v` (verbose) a `-ll` (snížení zabezpečení), které jsme použili dříve.

sudo sswap -llv /dev/sda5

`sswap` začne procházet odkládací oddíl a přepíše jeho obsah. Není to tak pomalé jako `sfill` , ale stejně to chvíli trvá.

Po dokončení musíme obnovit odkládací oddíl jako aktivní swapovací prostor. Provedeme to pomocí příkazu `swapon`:

sudo swapon /dev/sda5

Příkaz `sdmem`

Balíček `secure-delete` obsahuje i nástroj pro vymazání paměti RAM (Random Access Memory) vašeho počítače.

Útok studeným startem vyžaduje fyzický přístup k vašemu počítači krátce po jeho vypnutí. Tento typ útoku může teoreticky umožnit získání dat z čipů RAM.

Pokud se chcete před tímto typem útoku chránit (což u většiny uživatelů pravděpodobně není nutné), můžete vymazat paměť RAM před vypnutím počítače. Opět použijeme volby `-v` (verbose) a `-ll` (snížení zabezpečení).

sudo sdmem -vll

Terminálové okno se zaplní hvězdičkami jako indikace toho, že `sdmem` prochází vaší RAM.

Jednodušší alternativa: Zašifrujte svůj disk

Proč se namáhat s bezpečným mazáním souborů, když můžete svůj pevný disk nebo domovskou složku zašifrovat?

Pokud tak učiníte, nikdo nebude mít přístup k vašim datům, ať už se jedná o živé nebo smazané soubory. Nebudete se muset obávat, zda nezapomenete bezpečně smazat citlivé soubory, protože všechny soubory budou automaticky chráněny.

Většina linuxových distribucí se během instalace ptá, zda chcete použít šifrování. Pokud odpovíte „ano“, ušetříte si spoustu budoucích starostí. Nemusíte pracovat s tajnými nebo citlivými informacemi. Ale pokud si myslíte, že byste mohli dát nebo prodat svůj počítač někomu jinému, bude šifrování také dobrou volbou, jak zabránit přístupu k vašim datům.