Безпечне видалення даних
Коли ви видаляєте файли за допомогою rm або в вашому улюбленому файловому менеджері, вони не видаляються в прямому сенсі цього слова, а тільки виключаються з індексу файлової системи і зайняте ними місце додається в список вільного місця ОS, а сам файл знаходиться все там же де і був, поки зайняте ним місце, не буде потрібно для іншого файлу або директорії. Тобто відновити даний файл або директорію, не важко буде якщо на це місце нічого не записувалося. Linux пропонує багато інструментів для надійного видалення даних.
Secure Delete Tools
Самим універсальним інструментом є пакет “Secure Delete Tools”.
За замовчуванням утиліти пакета secure-delete
використовують алгоритм стирання, запропонований в доповіді криптографа Пітера Гутмана (Secure Deletion of Data from Magnetic and Solid-State Memory by Peter Gutmann, 1996).
Спочатку всі дані затираються значенням 0xff
. П’ять разів дані повторно записані значеннями з /dev/urandom
(випадкові дані). 27 разів відбувається перезапис спеціальним шаблоном розробленим Гутманом. Знову п’ять разів перезаписується значенням з /dev/urandom
і нарешті видаляється звичайної командою rm
.
До складу secure-delete
входять:
srm
— використовується для видалення файлів або каталогів на жорсткий диск.sdmem
— знищує сліди з оперативної пам’яті (RAM).sswap
— знищує сліди даних з розділу підкачки (SWAP).sfill
— знищує сліди даних з вільного простору на жорсткому диску.
Приклади використання
Встановлюємо пакет:
sudo apt-get install secure-delete
srm
Використання srm
аналогічно rm
. Відповідно, щоб надійно стерти директорію просто використовуйте srm
замість rm
:
srm -r /home/user/private-photos
Для одного проходу треба додати ключ s
(--simple
):
srm -sr /home/user/private-photos
Крім режиму -s
є ще один спрощений режим -m
, робить 7 проходів.
sdmem
Запуск в однопрохідному режимі:
sudo sdmem -l -l
sswap
Дізнаємося де розділ з swap
:
cat /proc/swaps
Відключаємо swap
(за умови, що він на /dev/sda2
):
sudo swapoff /dev/sda2
Очищаємо swap
в однопрохідному режимі:
sudo sswap -l -l /dev/sda2
Включаємо swap
:
sudo swapon /dev/sda2
sfill
Очистимо все вільне місце в директорії/точці монтування:
sudo sfill -l -l /
Примітка:
sfill
створить файл, який займе усе вільний місце.
Shred
Можна скористатися стандартною утилітою shred
. За замовчуванням shred
25 раз заповнює місце випадковими значеннями, але не видаляє файл. Для видалення потрібно використовувати параметр --remove
або -u
.
Видалити файл (25 проходів):
shred -u file
Видалити файл будь-якою кількістю проходів (наприклад 35):
shred -u -n 35 file
Щоб видалити відразу кілька файлів можна вказати їх поспіль, або видалити за маскою:
shred -u -n 35 file1 file2 file3
shred -u -n 35 *.txt
Щоб сховати сліди зачистки, можна використовувати параметр -z
, який додасть в кінці файлу нулі. Це так само зробить файл несхожим на зашифрований. Ще іноді буває корисний ключ -v
(verbose), для докладного виведення прогресу.
Для видалення всього вмісту жорсткого диска:
shred /dev/sda
Примітка: Ця операція займе багато часу.
На жаль, shred
не вміє видаляти каталоги.
wipe
Встановимо wipe
:
sudo apt-get install wipe
Для видалення каталогу:
wipe -rf catalog
-r
- рекурсивно.-f
- не питаючи підтвердження (force).
dd
Програма dd
відмінно підходить для безпечного очищення накопичувачів.
Примітка: Операції з очищення накопичувачів великого обьема займуть багато часу.
Дізнаємось розділ який необхідно очистити:
sudo fdisk -l
Для заповнення розділу накопичувача нулями:
sudo dd if=/dev/zero of=/dev/<disk identifier> bs=4k
Або довільними значеннями (/dev/urandom
):
sudo dd if=/dev/urandom of=/dev/<disk identifier> bs=4k
Але краще використовувати dd
спільно з програмою pv
(pipe viewer), щоб можна було бачити прогрес виконання.
Встановимо pv
:
sudo apt-get install pv
Заповнимо розділ накопичувача нулями:
pv /dev/zero -s <disk size> | dd of=/dev/<disk identifier> bs=4k
- об’єм розділу для обчислення часу яке залишилося. Можна вказати в байтах (наприклад
80026361856
) або в гигабайтах (наприклад80G
). Дізнатися обсяг можна також за допомогоюfdisk
:
sudo fdisk -l
Тепер ми можемо бачити прогрес виконання та знаємо скільки залишилося чекати до кінця процесу.
Ще, за допомогою dd
, можна безпечно очистити вільне місце на накопичувачі.
Очистити вільне місце на розділі з коренем файлової системи заповнивши його нулями:
dd if=/dev/zero of=/zerofile bs=4K
Або довільними числами:
dd if=/dev/urandom of=/zerofile bs=4K
Примітка: Виконувати від звичайного користувача.
При цьому буде створено файл в корені файлової системи, який буде заповнюватися нулями до нескінченності.
А коли місце на розділі закінчиться потрібно видалити цей файл:
rm /zerofile
Примітка: В
dd
використовується 512-байтнийbs
за замовчуванням, який можна і потрібно змінювати на оптимальний (у кожного свій) за допомогою параметраbs=xx
. З оптимально підібранимbs
швидкість роботиdd
може багаторазово збільшиться.
Висновок
Використання даних інструментів дає певну гарантію безпечного видалення даних, але для 100% гарантії, все-таки, рекомендується повне фізичне знищення накопичувача.
Примітка: Ці методи не підходять для твердотільних накопичувачів (SSD).
Якщо ця стаття допомогла вам, будь ласка, залиште коментар
Дякую за прочитання!
Arthur is a designer and full stack software engineer. He is the founder of Space X-Chimp and the blog My Cyber Universe. His personal website can be found at arthurgareginyan.com.