thumb

Коли ви видаляєте файли за допомогою 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).