Slik sletter du filer sikkert på Linux

Makuler gamle datafiler av samme grunn som du makulerer gamle papirdokumenter. Vi forteller deg hva du trenger å vite om sikker sletting av Linux-filer. Denne opplæringen dekker shred-kommandoen og sikker-slettingspakken med verktøy.

Slettede filer kan normalt gjenopprettes

Sletting av en fil fjerner den faktisk ikke fra harddisken. Alt avhenger av måten filsystemet bruker inoder på. Dette er datastrukturene i filsystemet som inneholder metadataene angående filene. Navnet på filen, dens plassering på harddisken, hvilke attributter og tillatelser den har, og så videre, er alle lagret i en inode. En katalog er ikke mer enn en fil i seg selv. En som inneholder navnene og inodenumrene til filene som katalogen inneholder.

Når du sletter en fil med rm, frigjør filsystemet den aktuelle inoden og justerer katalogfilen. Dette markerer plassen på harddisken som filen pleide å okkupere som ubrukt. Tenk deg at du går inn i et bibliotek og går gjennom kartoteket, finner en boks katalogkort og river det opp. Boken ligger fortsatt i hylla. Det er bare vanskeligere å finne.

Med andre ord, plassen som ble brukt av filen er nå fri til å brukes av andre filer. Men innholdet i den gamle filen ligger fortsatt i det rommet. Inntil den plassen er overskrevet, er det en god sjanse for at filen kan hentes.

Men å fullstendig kvitte seg med en fil er ikke så enkelt som å bare overskrive dem. Som vi skal se.

Ikke gjør dette med SSD-er

Disse teknikkene er for tradisjonelle elektromekaniske harddisker (HDD), og bør ikke brukes med solid state-stasjoner (SSD). Det vil ikke fungere og vil føre til ekstra skriving og unødvendig slitasje på SSD-en din. For å slette data på en sikker måte fra en SSD, bør du bruke verktøyet fra produsenten av SSD-en.

The shred Command

shred er designet for å utføre overskrivingen for deg så en slettet fil kan ikke gjenopprettes. Den er inkludert i alle Linux-distribusjonene som ble testet under forskningen for denne artikkelen, inkludert Ubuntu, Fedora og Manjaro.

I dette eksemplet skal vi jobbe i en katalog kalt ~/research, som inneholder mange tekstfiler. Den inneholder også noen andre kataloger som igjen inneholder andre filer. Vi kommer til å anta at disse filene er sensitive og må slettes helt fra harddisken.

Vi kan se katalogtrestrukturen ved å bruke trekommandoen som følger. Alternativet -d (katalog) fører til at treet kun viser kataloger, og ikke alle filene. Katalogtrestrukturen ser slik ut:

tree -d

Makulering av en enkelt fil

For å makulere en enkelt fil kan vi bruke følgende kommando. Alternativene vi bruker er:

u: Fjern allokering og fjern filen etter overskriving.
v: Utførlig alternativ, slik at shred forteller oss hva den gjør.
z: Utfører en siste overskriving med nuller.

shred -uvz Preliminary_Notes.txt_01.txt

shred overskriver filen fire ganger som standard. De tre første passeringene bruker tilfeldige data, og den siste passeringen bruker nuller, slik vi ba om. Den fjerner deretter filen og overskriver noen av metadataene i inoden

  Hvordan drepe prosesser fra Linux-terminalen

Stille inn antall overskrivingspasseringer

Vi kan be shred om å bruke flere eller færre overskrivingspasninger ved å bruke -n (tall)-alternativet. shred vil alltid bruke minst ett pass. Tallet vi oppgir her er antallet ekstra pass vi trenger shred for å utføre. Så shred vil alltid gjøre ett pass mer enn antallet vi ber om. For å få tre pass totalt ber vi om to ekstra pass:

shred -uvz -n 2 Preliminary_Notes.txt_02.txt

Som forventet gjør shred tre pasninger.

Færre passeringer – færre makuleringer hvis du vil – er åpenbart raskere. Men er det mindre sikkert? Tre pasninger, interessant nok, er nok mer enn nok.

Makulering av flere filer

Jokertegn kan brukes med shred for å velge grupper av filer som skal slettes. * representerer flere tegn, og ? representerer et enkelt tegn. Denne kommandoen ville slette alle de gjenværende «Preliminary_Notes»-filene i gjeldende arbeidskatalog.

shred -uvz -n 2 Preliminary_Notes_*.*

De resterende filene blir behandlet av makulering etter tur.

shred har ikke noe rekursivt alternativ, så det kan ikke brukes til å slette katalogtrær for nestede kataloger.

Problemet med sikker sletting av filer

Så godt som shred er, det er et problem. Moderne journalføringsfilsystemer som ext3 og ext4 gjør en enorm innsats for å sikre at de ikke går i stykker, blir korrupte eller mister data. Og med journalføringsfilsystemer er det ingen garanti for at overskrivingen faktisk finner sted over harddiskplassen som brukes av den slettede filen.

Hvis alt du leter etter litt trygghet om at filene har blitt slettet litt grundigere enn rm ville ha gjort det, så er shred sannsynligvis greit. Men ikke gjør feilen å tro at dataene definitivt er borte og er totalt uopprettelige. Det er nok ikke tilfelle.

Suiten for sikker sletting

Sikker-slett-kommandoene prøver å overvinne den beste innsatsen for journalføring av filsystemer og å lykkes med å overskrive filen sikkert. Men akkurat de samme forbeholdene gjelder. Det er fortsatt ingen garanti for at overskrivingen faktisk finner sted over området på harddisken der du trenger den for å slette filen av interesse. Det er større sjanse, men ingen garanti.

Secure-delete-kommandoene bruker følgende sekvens med overskrivinger og handlinger:

1 overskriv med 0xFF-verdibyte.
5 overskriver med tilfeldige data.
27 overskriver med spesielle verdier definert av Peter Gutmann.
5 flere overskrivinger med tilfeldige data.
Gi filen nytt navn til en tilfeldig verdi.
Kutt av filen.

Hvis alt dette virker overdrevent for deg, er du i godt selskap. Det virker også overdrevent for Peter Gutmann, professor ved Universitetet i Aukland. Han publiserte en artikkel i 1996 diskutere disse teknikkene, som oppsto den urbane myten om at du må bruke alle teknikkene som er diskutert i den artikkelen samtidig.

Peter Gutmann har siden forsøkt å få ånden tilbake i flasken og sa «En god skrubbing med tilfeldige data vil gjøre omtrent så bra som man kan forvente.»

  Hvordan bruke Buttercup passordbehandling på Linux

Men vi er der vi er, og dette er utvalget av teknikker som brukes av sikker-slett-kommandoene. Men først må vi installere dem.

Installerer sikker-slett

Bruk apt-get for å installere denne pakken på systemet ditt hvis du bruker Ubuntu eller en annen Debian-basert distribusjon. På andre Linux-distribusjoner, bruk Linux-distribusjonens pakkehåndteringsverktøy i stedet.

sudo apt-get install secure-delete

Det er fire kommandoer inkludert i pakken for sikker sletting.

srm er en sikker rm som brukes til å slette filer ved å slette dem og overskrive harddiskplassen.
sfill er et verktøy for å overskrive all ledig plass på harddisken.
sswap brukes til å overskrive og rense bytteplassen din.
sdmem brukes til å rense RAM-en din.

srm-kommandoen

Du bruker srm-kommandoen på samme måte som du ville brukt rm-kommandoen. For å fjerne en enkelt fil, bruk følgende kommando. Alternativet -z (nuller) får smr til å bruke nuller for den siste slettingen i stedet for tilfeldige data. Alternativet -v (verbose) får srm til å informere oss om fremdriften.

srm -vz Chapter_One_01.txt

Det første du vil legge merke til er at srm er treg. Det gir litt visuell tilbakemelding mens det fungerer, men det er en lettelse når du ser ledeteksten igjen.

Du kan bruke alternativet -l (redusere sikkerheten) for å redusere antall pasninger til to, noe som øker hastigheten dramatisk.

srm -lvz Chapter_One_02.txt

srm informerer oss om at dette – etter deres mening – er mindre sikkert, men det sletter og overskriver fortsatt filen for oss.

Du kan bruke alternativet -l (redusere sikkerheten) to ganger, for å redusere antall passeringer ned til én.

srm -llvz Chapter_One_03.txt

Bruke srm med flere filer

Vi kan også bruke jokertegn med srm. Denne kommandoen vil slette og slette de resterende delene av kapittel én:

srm -vc Chapter_One_0?.txt

Filene behandles av srm etter tur.

Slette kataloger og deres innhold med srm

Alternativet -r (rekursivt) vil få srm til å slette alle underkataloger og deres innhold. Du kan sende stien til den første katalogen til srm.

I dette eksemplet sletter vi alt den gjeldende katalogen, ~/research. Dette betyr at alle filene i ~/research og alle underkatalogene er sikkert fjernet.

srm -vz *

srm begynner å behandle katalogene og filene.

Den returnerer deg til slutt til ledeteksten. På testmaskinen som denne artikkelen ble undersøkt på, tok dette rundt en time å fjerne omtrent 200 filer fordelt mellom gjeldende katalog og tre nestede kataloger.

Alle filene og underkatalogene ble fjernet som forventet.

sfill-kommandoen

Hva om du er bekymret for en fil du har slettet ved hjelp av rm, hvordan kan du gå over den gamle bakken og sørge for at den blir overskrevet? Sfill-kommandoen vil overskrive all ledig plass på harddisken.

Når den gjør dette, vil du legge merke til at du har mindre og mindre ledig plass på harddisken, helt til det punktet hvor det ikke er ledig plass i det hele tatt. Når fyllingen er fullført, frigjør den all ledig plass tilbake til deg. Hvis du administrerer et flerbrukersystem, vil dette være svært forstyrrende, så dette er en vedlikeholdsoppgave som bør utføres utenom åpningstidene.

  Slik installerer du OnlyOffice 6.3 på din Linux-PC

Selv på en enkeltbrukerdatamaskin betyr tap av harddiskplass at den er ubrukelig når sfill har brukt mesteparten av plassen. Dette er noe du kan starte og deretter gå bort fra.

For å prøve å få fart på ting, kan du bruke alternativet -l (redusere sikkerheten). De andre alternativene er -v (verbose) og -z (null) alternativene vi har sett tidligere. Her ber vi sfill om å sikkert overskrive all ledig plass i /home-katalogen.

sudo sfill -lvz /home

Føl deg som hjemme. På testdatamaskinen – som bare har en 10 GB harddisk – ble dette startet midt på ettermiddagen, og det ble fullført en gang over natten.

Det vil tulle i timevis. Og dette er med alternativet -l (reduser sikkerheten). Men til slutt vil du bli returnert til ledeteksten.

sswap-kommandoen

sswap-kommandoen overskriver lagringen i swap-partisjonen din. Det første vi må gjøre er å identifisere swap-partisjonen din. Vi kan gjøre dette med kommandoen blkid, som viser blokkeringsenheter.

sudo blkid

Du må finne ordet «bytte», og notere blokkenheten den er koblet til.

Vi kan se at swap-partisjonen er koblet til /dev/sda5.

Vi må slå av diskskriving til swap-partisjonen så lenge overskrivingen varer. Vi vil bruke swapoff-kommandoen:

sudo swapoff /dev/sda5

Vi kan nå bruke sswap-kommandoen.

Vi vil bruke /dev/sda5 som en del av kommandolinjen for sswap-kommandoen. Vi vil også bruke alternativene -v (verbose) og -ll (redusere sikkerheten), som vi brukte tidligere.

sudo sswap -llv /dev/sda5

sswap begynner å jobbe seg gjennom swap-partisjonen din, og overskriver alt den er i den. Det tar ikke så lang tid som sfill. Det føles bare sånn.

Når den er fullført, må vi gjeninnføre swap-partisjonen som en aktiv swap-plass. Vi gjør dette med swapon-kommandoen:

sudo swapon /dev/sda5

sdmem-kommandoen

Secure-delete-pakken inneholder til og med et verktøy for å tørke RAM-brikkene (Random Access Memory) på datamaskinen.

EN kaldstøvelangrep krever fysisk tilgang til datamaskinen din kort tid etter at den er slått av. Denne typen angrep kan potensielt tillate henting av data fra RAM-brikkene dine.

Hvis du tror du trenger å beskytte deg mot denne typen angrep – og det ville være en strekk for de fleste å tro at de trengte det – kan du tørke av RAM-en din før du slår av datamaskinen. Vi bruker alternativene -v (verbose) og -ll (reduser sikkerheten) en gang til.

sudo sdmem -vll

Terminalvinduet vil fylles opp med stjerner som en indikasjon på at sdmem jobber seg gjennom RAM-en din.

Det enkle alternativet: Bare krypter stasjonen din

I stedet for å slette filer på en sikker måte, hvorfor ikke sikre harddisken eller hjemmemappen med kryptering?

Hvis du gjør det, kan ingen få tilgang til noe, enten det er en levende fil eller en slettet fil. Og du trenger ikke å være på vakt og huske å slette sensitive filer på en sikker måte fordi alle filene dine allerede er beskyttet.

De fleste Linux-distribusjoner spør om du vil bruke kryptering ved installasjonstidspunktet. Å si «ja» vil spare mye fremtidig forverring. Du kan ikke håndtere hemmelig eller sensitiv informasjon. Men hvis du tror du kan gi eller selge datamaskinen til noen andre når du er ferdig med den, vil kryptering også forenkle det.