Att förstöra gamla digitala filer bör ske med samma omsorg som när man makulerar fysiska dokument. Denna artikel ger en översikt över hur du på ett säkert sätt kan radera filer i Linux. Vi kommer att undersöka kommandot `shred` och verktygspaketet `secure-delete`.
Raderade filer kan oftast återskapas
När du tar bort en fil, tas den inte fysiskt bort från hårddisken. Det beror på hur filsystemet använder inoder. Inoder är datastrukturer i filsystemet som innehåller metadata om filerna, såsom filnamn, plats på disken, attribut och behörigheter. En katalog är i grunden också en fil som innehåller namn och inodnummer för filer i katalogen.
När du raderar en fil med kommandot `rm`, frigör filsystemet den aktuella inoden och uppdaterar katalogfilen. Detta markerar det utrymme på hårddisken som filen använde som ledigt. Tänk dig att du letar i ett bibliotekskatalog, hittar ett kort för en bok och sliter sönder det. Boken finns fortfarande kvar på hyllan, men den är svårare att hitta.
Utrymmet som filen använde är nu ledigt och kan användas av andra filer. Men det gamla filinnehållet finns fortfarande kvar. Tills detta utrymme skrivs över, finns det en chans att filen kan återskapas. Det är dock inte så enkelt som att bara skriva över filen.
Använd inte dessa metoder med SSD-enheter
Dessa metoder är avsedda för traditionella mekaniska hårddiskar (HDD) och bör inte användas med solid state-enheter (SSD). Det kommer inte att fungera bra och kan orsaka onödiga skrivningar och slitage på din SSD. För att säkert radera data från en SSD, bör du använda verktyg som tillhandahålls av SSD-tillverkaren.
Kommandot `shred`
`shred` är ett verktyg som skriver över filer så att de inte kan återskapas. Det finns i de flesta Linux-distributioner, som Ubuntu, Fedora och Manjaro.
Vi kommer att arbeta i en mapp som heter `~/research`, som innehåller textfiler och mappar med fler filer. Vi utgår från att dessa filer innehåller känslig information och måste raderas permanent.
Vi kan visa mappstrukturen med kommandot `tree` och flaggan `-d` för att bara visa katalogerna:
tree -d
Radera en enstaka fil med `shred`
För att radera en enskild fil, kan vi använda följande kommando. Vi använder följande flaggor:
u: Avallokera och ta bort filen efter överskrivningen.
v: Visar detaljerad information om vad som görs.
z: Utför en sista överskrivning med nollor.
shred -uvz Preliminary_Notes.txt_01.txt
Som standard skriver `shred` över filen fyra gånger. De tre första gångerna med slumpmässiga data, och sista gången med nollor, som vi har valt. Sedan tar den bort filen och överskriver en del metadata i inoden.
Ställ in antal överskrivningar
Vi kan använda flaggan `-n` för att specificera antalet överskrivningar som `shred` ska utföra. Minst en överskrivning görs alltid. Siffran vi anger är antalet extra pass, alltså `shred` kommer alltid att göra ett pass mer än vad vi ber om. För att få tre pass totalt, ber vi om två extra pass:
shred -uvz -n 2 Preliminary_Notes.txt_02.txt
Som förväntat gör `shred` tre överskrivningar.
Färre överskrivningar är snabbare men är de lika säkra? Tre överskrivningar anses ofta vara tillräckligt.
Radera flera filer
Jokertecken kan användas med `shred` för att välja flera filer. `*` representerar flera tecken och `?` representerar ett enstaka tecken. Detta kommando raderar alla filer som börjar med ”Preliminary_Notes” i den aktuella mappen.
shred -uvz -n 2 Preliminary_Notes_*.*
Varje fil bearbetas sedan i tur och ordning.
`shred` har inte ett rekursivt alternativ så den kan inte användas för att radera hela mappträd.
Problemet med att radera filer säkert
Trots att `shred` är användbart så finns det problem. Moderna journalförande filsystem som ext3 och ext4 gör mycket för att undvika att gå sönder eller förlora data. Med journalföring finns det ingen garanti för att överskrivningen faktiskt sker på det utrymme där den raderade filen fanns.
Om du vill försäkra dig lite mer om att filerna har raderats noggrant, så kan `shred` vara bra nog. Men tro inte att datan är helt oåterkallelig, det är den förmodligen inte.
Verktygspaketet `secure-delete`
`secure-delete`-kommandona försöker kringgå journalförande filsystem och säkert skriva över filen. Men samma varningar gäller: Det finns fortfarande ingen garanti för att överskrivningen sker exakt där filen en gång fanns. Det finns en större chans, men inte en garanti.
`secure-delete`-kommandona använder följande steg:
1 överskrivning med värdet 0xFF.
5 överskrivningar med slumpmässig data.
27 överskrivningar med värden definierade av Peter Gutmann.
5 ytterligare överskrivningar med slumpmässig data.
Byt namn på filen till ett slumpmässigt värde.
Trunkera filen.
Detta kan verka överdrivet, vilket Peter Gutmann, professor på Auckland Universitet, håller med om. Han publicerade en artikel 1996 om dessa tekniker, vilket skapade myten att man måste använda alla teknikerna samtidigt.
Peter Gutmann har senare försökt att minska på myten genom att säga att en ”en bra skrubbning med slumpmässig data gör ungefär lika bra som man kan förvänta sig”.
Trots detta använder `secure-delete`-kommandona dessa tekniker. Men först måste vi installera dem.
Installera `secure-delete`
Använd `apt-get` för att installera paketet på Ubuntu och andra Debian-baserade system. På andra Linux-distributioner används det vanliga pakethanteringsverktyget.
sudo apt-get install secure-delete
Det finns fyra kommandon i paketet `secure-delete`.
`srm` är ett säkert `rm` som tar bort filer genom att radera dem och skriva över utrymmet på hårddisken.
`sfill` är ett verktyg för att skriva över allt ledigt utrymme på hårddisken.
`sswap` används för att skriva över och rensa swap-utrymmet.
`sdmem` används för att rensa RAM-minnet.
Kommandot `srm`
Kommandot `srm` används på samma sätt som `rm`. För att ta bort en fil, används följande kommando. Flaggan `-z` gör att `srm` använder nollor för den sista överskrivningen. Flaggan `-v` gör att `srm` ger oss information om vad den gör.
srm -vz Chapter_One_01.txt
Första du märker är att `srm` är långsamt. Det ger feedback när det arbetar, men det är skönt när kommandotolken dyker upp igen.
Flaggan `-l` (minska säkerheten) kan användas för att minska antalet överskrivningar till två, vilket ökar hastigheten betydligt.
srm -lvz Chapter_One_02.txt
`srm` informerar oss om att detta, enligt dess åsikt, är mindre säkert, men det raderar och överskriver filen.
Du kan använda flaggan `-l` två gånger för att minska antalet överskrivningar till ett.
srm -llvz Chapter_One_03.txt
Använda `srm` med flera filer
Vi kan använda jokertecken med `srm`. Detta kommando raderar alla filer som innehåller ”Chapter_One” med ett siffror som sista delen av namnet:
srm -vc Chapter_One_0?.txt
Filerna bearbetas i tur och ordning.
Ta bort mappar och deras innehåll med `srm`
Flaggan `-r` (rekursivt) gör att `srm` tar bort alla undermappar och deras innehåll. Du kan skicka sökvägen till den första mappen till `srm`.
I detta exempel tar vi bort allt i mappen `~/research`. Det betyder att alla filer i `~/research` och alla dess undermappar tas bort på ett säkert sätt.
srm -vz *
`srm` börjar bearbeta mappar och filer.
Till slut återgår du till kommandotolken. På en testdator tog det ungefär en timme att radera 200 filer i den aktuella mappen och tre undermappar.
Alla filer och undermappar togs bort som förväntat.
Kommandot `sfill`
Om du är orolig över en fil som du raderat med `rm`, hur kan du då skriva över det gamla utrymmet och se till att det är överskrivet? Kommandot `sfill` skriver över allt ledigt utrymme på din hårddisk.
När den gör det, märker du att du har allt mindre ledigt utrymme på din hårddisk tills det inte finns något ledigt utrymme kvar. När `sfill` är klar, frigörs utrymmet igen. Om du administrerar ett system med flera användare, så är detta störande och bör göras utanför arbetstider.
Även på en dator med en användare, så betyder det minskade utrymmet att den blir oanvändbar när `sfill` har tagit det mesta. Detta är något du startar och sedan lämnar.
För att öka hastigheten kan du använda flaggan `-l` (minska säkerheten). De andra flaggorna är `-v` (utförlig) och `-z` (nollor), som vi har sett tidigare. Här ber vi `sfill` att skriva över allt ledigt utrymme i `/home`-mappen.
sudo sfill -lvz /home
Sätt dig bekvämt. På en testdator med 10GB hårddisk tog detta hela eftermiddagen och avslutades först på natten.
Det kan ta många timmar. Och detta är med flaggan `-l`. Men till slut kommer du tillbaka till kommandotolken.
Kommandot `sswap`
Kommandot `sswap` skriver över din swap-partition. Först behöver vi identifiera vår swap-partition. Detta kan vi göra med kommandot `blkid` som listar alla blockenheter.
sudo blkid
Leta efter ordet ”swap” och notera vilken blockenhet den är kopplad till.
Vi ser att swap-partitionen är kopplad till `/dev/sda5`.
Vi behöver stänga av diskåtkomst till swap-partitionen så länge överskrivningen pågår. Vi använder kommandot `swapoff`:
sudo swapoff /dev/sda5
Nu kan vi använda kommandot `sswap`.
Vi använder `/dev/sda5` i kommandoraden för `sswap`. Vi använder även flaggorna `-v` (utförlig) och `-ll` (minska säkerheten) som vi har sett tidigare.
sudo sswap -llv /dev/sda5
`sswap` skriver nu över din swap-partition. Det tar inte lika lång tid som `sfill`. Men det känns så.
När det är klart, måste vi återaktivera swap-partitionen. Detta görs med kommandot `swapon`:
sudo swapon /dev/sda5
Kommandot `sdmem`
`secure-delete`-paketet innehåller även ett verktyg för att radera RAM-minnet i din dator.
En kallstartsattack kräver fysisk åtkomst till din dator kort efter att den stängts av. Denna typ av attack kan potentiellt tillåta att data hämtas från RAM-minnet.
Om du tror att du behöver skydda dig mot den här typen av attacker, så kan du radera ditt RAM-minne innan du stänger av datorn. Vi använder flaggorna `-v` (utförlig) och `-ll` (minska säkerheten) en gång till.
sudo sdmem -vll
Terminalfönstret kommer fyllas med asterisker medan `sdmem` arbetar med RAM-minnet.
Det enkla alternativet: Kryptera din enhet
Istället för att radera filer på ett säkert sätt, kan du skydda hårddisken eller din hemmapp med kryptering.
Om du gör det kan ingen komma åt något, vare sig det är en livefil eller en raderad fil. Då behöver du inte heller komma ihåg att radera känsliga filer eftersom alla dina filer redan är skyddade.
De flesta Linux-distributioner frågar om du vill använda kryptering under installationen. Om du svarar ”ja” sparar du dig mycket besvär. Du behöver inte hantera hemlig eller känslig information. Och om du vill sälja eller ge bort datorn, så gör kryptering det enklare.