Когда мы удаляем файл из файловой системы, данные физически не удаляются: операционная система просто отмечает область, ранее занятую файлом, как свободную и делает ее доступной для хранения новой информации. Единственный способ убедиться, что данные действительно удалены с устройства, – перезаписать их другими данными. Если диск с конфиденциальной информацией меняет владельца и вы боитесь, что она может попасть не в те руки необходимо предпринять определенные действия.
Многие криминалистические инструменты с открытым исходным кодом находятся в свободном доступе в Интернете, и их можно использовать для извлечения потерянных или удаленных данных с жесткого диска. Многие из них настолько просты в использовании, что обычные пользователи настольных компьютеров также могут загрузить их и достать данные.
Рассмотрим некоторые инструменты, которые мы можем использовать, чтобы полностью стереть данные на устройстве.
Стирание данных с использованием dd
Утилита dd – мощная программа, включенная по умолчанию во все основные дистрибутивы Linux. С ее помощью мы можем заполнить содержимое диска нулями или случайными данными. В обоих случаях мы можем использовать данные, сгенерированные специальными файлами: /dev/zero и dev/urandom (или /dev/random) соответственно. Первый возвращает нули каждый раз, когда над ним выполняется операция чтения; второй возвращает случайные байты, используя генератор случайных чисел ядра Linux.
Чтобы заполнить диск нулями, мы можем запустить:
sudo dd if=/dev/zero of=/dev/sdx
Чтобы использовать случайные данные, вместо этого:
sudo dd if=/dev/urandom of=/dev/sdx
Стирание данных с помощью shred
Основное назначение данной утилиты состоит в том, чтобы перезаписать файлы и при необходимости удалить их. Утилита основана на предположении , что файловая система перезаписывает данные на месте. Однако приложение может не позволить нам достичь ожидаемого результата. Например, в журналируемой файловой системе, таких как ext4 (пожалуй наиболее часто используемая файловая система Linux), если она смонтирована с опцией data=journal.
При монтировании файловой системы ext4 с опциями data=ordered или data=writeback (первая используется по умолчанию) данные записываются в основную файловую систему после фиксации метаданных в журнале. В обоих случаях shred работает нормально, что дает ожидаемые результаты. При использовании опции data=journal помимо метаданных в журнал файловой системы записываются также и сами данные и лишь затем данные записываются в основную файловую систему. Легко понять, почему это может вызвать проблемы.
Рассмотрим несколько примеров использования приложения. Предположим, мы хотим безопасно содержимое файла с именем «test».
Все, что нам нужно сделать, это запустить следующую команду (здесь мы используем опцию -v, чтобы сделать программу более подробной):
shred -v test
Вот что мы можем видеть после выполнения команды:
По умолчанию приложение переписывает указанный файл случайными данными в три прохода. Количество проходов можно изменить с помощью опции -n. Чтобы переопределить файл 6 раз, мы запустим:
shred -v -n 6 test
В некоторых случаях мы можем скрыть тот факт, что операция удаления была выполнена для файла или устройства. В этих ситуациях мы можем использовать опцию программы -z (сокращение от –zero), чтобы заставить программу выполнить дополнительный проход нулями:
shred -v -n 6 -z test
Из подробного вывода команды мы действительно можем заметить, как выполняется последний проход, записав нули ( 000000).
Помимо работы с файлами shred позволяет производить такие же операции с разделами. Например, нам необходимо навсегда затереть информацию на диске sda:
shred -n 5 -vz /dev/sda