Как да изтриете сигурно файлове в Linux

Раздробявайте старите файлове с данни по същата причина, поради която раздробявате старите хартиени документи. Ние ви казваме какво трябва да знаете за сигурното изтриване на Linux файлове. Този урок обхваща командата shred и пакета от помощни програми за сигурно изтриване.

Изтритите файлове обикновено могат да бъдат възстановени

Изтриването на файл всъщност не го премахва от вашия твърд диск. Всичко се свежда до начина, по който вашата файлова система използва inodes. Това са структурите от данни във файловата система, които съдържат метаданните относно файловете. Името на файла, неговата позиция на твърдия диск, какви атрибути и разрешения има, и т.н., се съхраняват в един inode. Директорията не е нищо повече от самия файл. Такъв, който съдържа имената и номерата на inode на файловете, съдържащи се в директорията.

Когато изтриете файл с rm, файловата система освобождава подходящия inode и коригира файла на директорията. Това маркира пространството на твърдия диск, което файлът е заемал, като неизползвано. Представете си, че влизате в библиотека и преминавате през картотеката, намирате каталожна карта на книга и я разкъсвате. Книгата все още е на рафта. Просто е по-трудно да се намери.

С други думи, пространството, използвано от файла, вече е свободно за използване от други файлове. Но съдържанието на стария файл все още се намира в това пространство. Докато това пространство не бъде презаписано, има голям шанс файлът да бъде извлечен.

Но пълното премахване на файл не е толкова лесно, колкото простото презаписване. Както ще видим.

Не правете това със SSD дискове

Тези техники са за традиционните електромеханични твърди дискове (HDD) и не трябва да се използват със твърдотелни устройства (SSD). Няма да работи и ще доведе до допълнителни записи и ненужно износване на вашия SSD. За да изтриете сигурно данни от SSD, трябва да използвате помощната програма, предоставена от производителя на вашия SSD.

Командата за раздробяване

shred е предназначен да извършете презаписването вместо вас така че изтрит файл не може да бъде възстановен. Той е включен във всички дистрибуции на Linux, които бяха тествани по време на изследването за тази статия, включително Ubuntu, Fedora и Manjaro.

В този пример ще работим в директория, наречена ~/research, която съдържа много текстови файлове. Той също така съдържа някои други директории, които от своя страна съдържат други файлове. Ще приемем, че тези файлове са чувствителни и трябва да бъдат изтрити изцяло от твърдия диск.

Можем да видим структурата на дървото на директориите, като използваме командата дърво, както следва. Опцията -d (директория) кара дървото да изброява само директории, а не да изброява всички файлове. Структурата на дървото на директориите изглежда така:

tree -d

Раздробяване на един файл

За да раздробим един файл, можем да използваме следната команда. Опциите, които използваме са:

  Как да конфигурирате периферни устройства на Razer Gaming на Linux с Polychromatic

u: Освободете и премахнете файла след презаписване.
v: Подробна опция, така че този шред ни казва какво прави.
z: Извършва окончателно презаписване с нули.

shred -uvz Preliminary_Notes.txt_01.txt

shred презаписва файла четири пъти по подразбиране. Първите три преминавания използват произволни данни, а последният използва нули, както поискахме. След това премахва файла и презаписва някои от метаданните в inode

Задаване на броя проходи за презаписване

Можем да поискаме от shred да използва повече или по-малко проходи за презаписване, като използваме опцията -n (число). shred винаги ще използва поне един проход. Номерът, който предоставяме тук, е броят на допълнителните пасове, които се нуждаем от раздробяване, за да извършим. Така че shred винаги ще направи един пропуск повече от номера, който поискаме. За да получите общо три пропуска, ние изискваме допълнителни два пропуска:

shred -uvz -n 2 Preliminary_Notes.txt_02.txt

Както се очакваше, shred прави три прохода.

По-малко пасове — по-малко раздробяване, ако желаете — очевидно е по-бързо. Но дали е по-малко сигурно? Интересното е, че три паса вероятно са повече от достатъчни.

Раздробяване на множество файлове

Заместващите символи могат да се използват с shred за избор на групи файлове, които да бъдат изтрити. * представлява множество символи, а ? представлява единичен знак. Тази команда ще изтрие всички останали файлове „Preliminary_Notes“ в текущата работна директория.

shred -uvz -n 2 Preliminary_Notes_*.*

Останалите файлове се обработват на свой ред чрез раздробяване.

shred няма рекурсивна опция, така че не може да се използва за изтриване на дървета на директории от вложени директории.

Проблемът със сигурното изтриване на файлове

Колкото и добър да е shred, има проблем. Съвременните файлови системи за журналиране като ext3 и ext4 полагат огромни усилия, за да гарантират, че няма да се счупят, да се повредят или да загубят данни. А при файловите системи за журналиране няма гаранция, че презаписването действително се извършва върху пространството на твърдия диск, използвано от изтрития файл.

Ако всичко, което искате да сте спокойни, че файловете са били изтрити малко по-задълбочено, отколкото rm би го направил, тогава shred вероятно е добре. Но не правете грешката да си мислите, че данните определено са изчезнали и са напълно невъзстановими. Много вероятно е да не е така.

Пакетът за сигурно изтриване

Командите за сигурно изтриване се опитват да преодолеят най-добрите усилия за записване на файлови системи и да успеят да презапишат файла сигурно. Но важат абсолютно същите предупреждения. Все още няма гаранция, че презаписването действително се извършва в областта на твърдия диск, която ви е необходима, за да заличите файла, който ви интересува. Има повече шанс, но няма гаранция.

Командите за сигурно изтриване използват следната последователност от презаписване и действия:

1 презаписване с байтове стойност 0xFF.
5 презаписа със произволни данни.
27 презаписва със специални стойности, определени от Петер Гутман.
Още 5 презаписвания със произволни данни.
Преименувайте файла на произволна стойност.
Съкратете файла.

Ако всичко това ви се струва прекомерно, значи сте в добра компания. Също така изглежда прекомерно на Питър Гутман, професор в университета в Окланд. Той публикува статия през 1996 г обсъждане на тези техники, от който произлиза градският мит, че трябва да използвате всички техники, обсъждани в този документ наведнъж.

  Как да архивирате и възстановите профил на Firefox на Linux

Оттогава Питър Гутман се опита да върне джина обратно в бутилката, казвайки: „Доброто почистване с произволни данни ще свърши толкова добре, колкото може да се очаква“.

Но ние сме там, където сме, и това е наборът от техники, използвани от командите за сигурно изтриване. Но първо трябва да ги инсталираме.

Инсталиране на защитено изтриване

Използвайте apt-get, за да инсталирате този пакет във вашата система, ако използвате Ubuntu или друга базирана на Debian дистрибуция. В други дистрибуции на Linux използвайте вместо това инструмента за управление на пакети на вашата Linux дистрибуция.

sudo apt-get install secure-delete

Има четири команди, включени в пакета за сигурно изтриване.

srm е защитен rm, използван за изтриване на файлове, като ги изтрива и презаписва пространството на твърдия им диск.
sfill е инструмент за презаписване на цялото свободно пространство на вашия твърд диск.
sswap се използва за презаписване и почистване на вашето суап пространство.
sdmem се използва за почистване на вашата RAM памет.

Командата srm

Вие използвате командата srm точно както бихте използвали командата rm. За да премахнете един файл, използвайте следната команда. Опцията -z (нули) кара smr да използва нули за окончателното изтриване вместо произволни данни. Опцията -v (подробно) кара srm да ни информира за своя напредък.

srm -vz Chapter_One_01.txt

Първото нещо, което ще забележите, е, че srm е бавен. Той предоставя известна визуална обратна връзка, докато работи, но е облекчение, когато отново видите командния ред.

Можете да използвате опцията -l (намаляване на сигурността), за да намалите броя на преминаванията до две, което ускорява драстично нещата.

srm -lvz Chapter_One_02.txt

srm ни информира, че това — според него — е по-малко сигурно, но все пак изтрива и презаписва файла вместо нас.

Можете да използвате опцията -l (намаляване на сигурността) два пъти, за да намалите броя на преминаванията до едно.

srm -llvz Chapter_One_03.txt

Използване на srm с множество файлове

Можем също да използваме заместващи знаци със srm. Тази команда ще изтрие и изтрие останалите части от първа глава:

srm -vc Chapter_One_0?.txt

Файловете се обработват от srm на свой ред.

Изтриване на директории и тяхното съдържание със srm

Опцията -r (рекурсивна) ще накара srm да изтрие всички поддиректории и тяхното съдържание. Можете да предадете пътя до първата директория на srm.

В този пример изтриваме всичко от текущата директория, ~/research. Това означава, че всички файлове в ~/research и всички поддиректории са надеждно премахнати.

srm -vz *

srm започва да обработва директориите и файловете.

В крайна сметка ви връща към командния ред. На тестовата машина, на която беше изследвана тази статия, това отне около един час, за да се премахнат около 200 файла, разпределени между текущата директория и три вложени директории.

Всички файлове и поддиректории бяха премахнати според очакванията.

Командата sfill

Ами ако сте загрижени за файл, който сте изтрили с помощта на rm, как можете да преминете през тази стара основа и да се уверите, че е презаписан? Командата sfill ще презапише цялото свободно пространство на вашия твърд диск.

Докато прави това, ще забележите, че имате все по-малко свободно място на вашия твърд диск, чак до точката, в която изобщо няма свободно място. Когато sfill завърши, той освобождава цялото свободно пространство обратно към вас. Ако администрирате система с множество потребители, това би било много разрушително, така че това е задача за поддръжка, която трябва да се извършва извън работно време.

  Как да играете Valheim на Linux

Дори на компютър с един потребител, загубата на пространство на твърдия диск означава, че той е неизползваем, след като sfill е използвал по-голямата част от пространството. Това е нещо, от което бихте започнали и след това ще се отдалечите.

За да се опитате да ускорите малко нещата, можете да използвате опцията -l (намаляване на сигурността). Другите опции са опциите -v (подробно) и -z (нули), които видяхме по-рано. Тук молим sfill да презапише сигурно цялото свободно пространство в /home директорията.

sudo sfill -lvz /home

Настани се удобно. На тестовия компютър — който има само 10 GB твърд диск — това беше започнато в средата на следобеда и завърши някъде през нощта.

Ще се изпари с часове. И това е с опцията -l (намаляване на сигурността). Но в крайна сметка ще бъдете върнати в командния ред.

Командата swap

Командата sswap презаписва паметта във вашия swap дял. Първото нещо, което трябва да направим, е да идентифицираме вашия суап дял. Можем да направим това с командата blkid, която изброява блокови устройства.

sudo blkid

Трябва да намерите думата „размяна“ и да си отбележите блоковото устройство, към което е свързан.

Можем да видим, че суап дялът е свързан към /dev/sda5.

Трябва да изключим записите на диска в swap дяла за времето на презаписването. Ще използваме командата swapoff:

sudo swapoff /dev/sda5

Вече можем да използваме командата sswap.

Ще използваме /dev/sda5 като част от командния ред за командата sswap. Ще използваме и опциите -v (подробно) и -ll (намаляване на сигурността), които използвахме по-рано.

sudo sswap -llv /dev/sda5

sswap започва да си проправя път през вашия swap дял, като презаписва всичко, което е в него. Не отнема толкова време, колкото запълването. Просто така се усеща.

След като приключи, трябва да възстановим суап дяла като активно пространство за размяна. Правим това с командата swapon:

sudo swapon /dev/sda5

Командата sdmem

Пакетът за сигурно изтриване дори съдържа инструмент за изтриване на чиповете на паметта с произволен достъп (RAM) във вашия компютър.

А атака при студено зареждане изисква физически достъп до компютъра ви много малко след като е изключен. Този тип атака може потенциално да позволи извличането на данни от вашите RAM чипове.

Ако смятате, че трябва да се предпазите от този тип атаки — и за повечето хора би било трудно да си мислят, че трябва — можете да изтриете RAM паметта си, преди да изключите компютъра си. Ще използваме опциите -v (подробно) и -ll (намаляване на сигурността) още веднъж.

sudo sdmem -vll

Прозорецът на терминала ще се изпълни със звездички като индикация, че sdmem си проправя път през вашата RAM памет.

Лесната опция: Просто криптирайте вашето устройство

Вместо сигурно изтриване на файлове, защо да не защитите твърдия си диск или домашната си папка с помощта на криптиране?

Ако направите това, никой няма да има достъп до нищо, независимо дали е жив или изтрит файл. И не е нужно да сте нащрек и да не забравяте да изтриете сигурно чувствителни файлове, защото всичките ви файлове вече са защитени.

Повечето дистрибуции на Linux питат дали искате да използвате криптиране по време на инсталиране. Казването на „да“ ще спести много бъдещи влошавания. Не можете да работите с тайна или чувствителна информация. Но ако смятате, че можете да дадете или продадете компютъра на някой друг, когато приключите с него, криптирането ще опрости и това.