Безопасное удаление данных
Когда вы удаляете файлы с помощью 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.