- Шифрование дисков в Linux
- Методы шифрования данных в Linux
- Как работает LUKS?
- Утилита Cryptsetup
- Шифрование диска Linux
- 1. Создание раздела
- 2. Форматирование раздела
- 3. Монтирование раздела
- 4. Отключение раздела
- 5. Повторное монтирование
- 6. Проверить файловую систему luks
- 7. Изменить парольную фразу luks
- Выводы
- шифрование корневого раздела
Шифрование дисков в Linux
Безопасность и конфиденциальность очень важны, для тех, кто хранит важные данные на компьютере. Ваш домашний компьютер находится в безопасности, но с ноутбуком или другими переносными устройствами ситуация очень сильно меняется. Если вы носите свой ноутбук с собой почти везде и к нему могут иметь доступ посторонние лица, возникает вопрос — как защитить свои данные от чужого вмешательства. Именно от физических атак, где каждый желающий может попытаться получить данные из USB накопителя или жесткого диска ноутбука просто забрав устройство или в случае ноутбука, вытянув жесткий диск и подключив его к другой операционной системе.
Многие предприятия и даже простые пользователи используют шифрование дисков в linux чтобы защитить конфиденциальную информацию, такую как: сведения о клиенте, файлы, контактную информацию и многое другое. В операционной системе Linux поддерживается несколько криптографических методов для защиты разделов, отдельных каталогов или полностью всего жесткого диска. Все данные, в любом из этих способов автоматически зашифровываются и расшифровываются на лету.
Методы шифрования данных в Linux
Шифрование на уровне файловой системы:
- 1. eCryptfs — это криптографическая файловая система Linux. Она хранит криптографические метаданные для каждого файла в отдельном файле, таким образом, что файлы можно копировать между компьютерами. Файл будет успешно расшифрован, если у вас есть ключ. Это решение широко используется для реализации зашифрованной домашней директории, например, в Ubuntu. Также ChromeOS прозрачно встраивает эти алгоритмы при использовании сетевых устройств для хранения данных (NAS).
- 2. EncFS — обеспечивает шифрованную файловую систему в пространстве пользователя. Она работает без каких-либо дополнительных привилегий и использует библиотеку fuse и модуль ядра для обеспечения интерфейса файловой системы. EncFS — это свободное программное обеспечение и она распространяется под лицензией GPL. В наши дни эта файловая система уже устарела потому что в ней было найдено несколько уязвимостей. Вместо неё популярность набирают другие утилиты.
Блочное шифрование на уровне устройства:
- Loop-AES — быстрая и прозрачная файловая система, а также пакет для шифрования раздела подкачки в Linux. Исходный код программы давно не изменялся. Она работает с ядрами 4.x, 3.x, 2.2, 2.0.
- TrueCrypt — это бесплатное решение с открытым исходным кодом для шифрования диска в операционных системах Windows 7 / Vista /XP / Mac OS X, а также в Linux.
- dm-crypt+LUKS — dm-crypt — это прозрачная подсистема для шифрования диска в ядре 2.6 и более поздних версиях. Поддерживается шифрование целых дисков, съемных носителей, разделов, томов RAID, программного обеспечения, логических томов и файлов.
В этой инструкции мы рассмотрим шифрование жесткого диска на Linux с помощью алгоритма Linux Unified Key Setup-on-disk-format (LUKS).
Как работает LUKS?
LUKS (Linux Unified Key Setup — протокол шифрования блочного устройства. Но мы забежали далеко наперед, чтобы понять как это работает, нужно скачала разобраться с другими технологиями, используемыми в этом способе.
Чтобы выполнить шифрование диска linux используется модуль ядра dm-crypt. Этот модуль позволяет создавать в каталоге /dev/mapper виртуальное блочное устройство с прозрачным для файловой системы и пользователя шифрованием. Фактически все данные лежат на зашифрованном физическом разделе. Если пользователь пытается записать данные на виртуальное устройство, они на лету шифруются и записываются на диск, при чтении с виртуального устройства, выполняется обратная операция — данные расшифровываются с физического диска и передаются в открытом виде через виртуальный диск пользователю. Обычно для шифрования используется метод AES, потому что под него оптимизированы большинство современных процессоров. Важно заметить, что вы можете шифровать не только разделы и диски, но и обычные файлы, создав в них файловую систему и подключив как loop устройство.
Алгоритм LUKS определяют какие действия и в каком порядке будут выполняться во время работы с шифрованными носителями. Для работы с LUKS и модулем dm-crypt используется утилита Cryptsetup. Ее мы и рассмотрим далее.
Утилита Cryptsetup
Утилита Cryptsetup позволят облегчить шифрование раздела Linux с помощью модуля dm-crypt. Давайте сначала ее установим.
В Debian или Ubuntu, для этого используйте такую команду:
suduo apt install cryptsetup
В дистрибутивах, основанных на Red Hat это будет выглядеть так:
sudo yum install cryptsetup-luks
Синтаксис запуска команды такой:
$ cryptsetup опции операция параметры_операции
Рассмотрим основные операции, которые можно сделать с помощью этой утилиты:
- luksFormat — создать зашифрованный раздел luks linux;
- luksOpen — подключить виртуальное устройство (нужен ключ);
- luksClose — закрыть виртуальное устройство luks linux;
- luksAddKey — добавить ключ шифрования;
- luksRemoveKey — удалить ключ шифрования;
- luksUUID — показать UUID раздела;
- luksDump — создать резервную копию заголовков LUKS.
Параметры операции зависят от самой операции, обычно это либо физическое устройство, с которым нужно произвести действие, либо виртуальное или и то и другое. Еще не все понятно, но на практике, я думаю, вы со всем разберетесь.
Шифрование диска Linux
Теория пройдена, все инструменты готовы. Теперь рассмотрим шифрование раздела Linux. Перейдем к настройке жесткого диска. Обратите внимание, что это удалит все данные из диска или раздела, который вы собираетесь зашифровать. Так что если там есть важные данные, лучше скопируйте их в более надежное место.
1. Создание раздела
В этом примере мы будем шифровать раздел /dev/sda6, но вместо него вы можете использовать целый жесткий диск или просто один файл, заполненный нулями. Создаем шифрованный раздел:
sudo cryptsetup -y -v luksFormat /dev/sdb1
Эта команда выполнит инициализацию раздела, установит ключ инициализации и пароль. Сначала надо подтвердить создание виртуального шифрованного диска набрав YES, затем нужно указать пароль. Указывайте такой пароль, чтобы его потом не забыть.
Выполните такую команду чтобы открыть только что созданный раздел с помощью модуля dm-crypt в /dev/mapper, для этого понадобится ввести пароль, с которым выполнялось шифрование luks linux:
sudo cryptsetup luksOpen /dev/sdb1 backup2
Теперь вы можете увидеть новое виртуальное устройство /dev/mapper/backup2 созданное с помощью команды luksFormat:
Чтобы посмотреть состояние устройства выполните:
sudo cryptsetup -v status backup2
А с помощью следующей команды вы можете сделать резервную копию заголовков LUKS на всякий случай:
cryptsetup luksDump /dev/sdb1
Ну, можно сказать, раздел готов. И что самое интересное, теперь вы можете им пользоваться так же, как и любым другим обычным разделом в каталоге /dev. Его можно форматировать с помощью стандартных утилит, записывать на него данные, изменять или проверять файловую систему и т д. Нельзя только изменить размер. То есть все полностью прозрачно, как и сказано в начале статьи.
2. Форматирование раздела
Давайте для начала отформатируем диск. Для надежности, чтобы стереть все данные, которые были в этом месте раньше, перезапишем наш шифрованный раздел linux нулями. Это уменьшит вероятность взлома шифрования, через увеличение количества случайной информации. Для этого выполните:
dd if=/dev/zero of=/dev/mapper/backup2
Работа утилиты может занять несколько часов, чтобы иметь возможность наблюдать за процессом, используйте pv:
pv -tpreb /dev/zero | dd of=/dev/mapper/backup2 bs=128M
Когда процесс завершится мы можем отформатировать устройство в любую файловую систему. Например, отформатируем в ext4:
sudo mkfs.ext4 /dev/mapper/backup2
Как видите, все команды cryptsetup применяются к физическому разделу, в то время как остальные команды для работы с дисками — к нашему виртуальному.
3. Монтирование раздела
Теперь можно примонтировать только, что созданную файловую систему:
sudo mount /dev/mapper/backup2 /backup2
4. Отключение раздела
Все работает, но как отключить устройство и защитить данные. Для этого выполните:
sudo cryptsetup luksClose backup2
5. Повторное монтирование
Чтобы снова получить возможность работать с зашифрованным разделом с помощью LUKS linux необходимо опять его открыть:
sudo cryptsetup luksOpen /dev/sdb1 backup2
sudo mount /dev/mapper/backup2 /backup2
6. Проверить файловую систему luks
Поскольку после открытия раздела с помощью luks linux, этот раздел воспринимается системой, как и все другие, вы можете просто использовать утилиту fsck:
sudo fsck -vy /dev/mapper/backup2
sudo mount /dev/mapper/backup2 /backu2
7. Изменить парольную фразу luks
Шифрование дисков Linux выполняется с определенной парольной фразой, но вы можете ее изменить. Даже больше, вы можете создать до восьми разных парольных фраз. Для изменения выполнив следующие команды. Сначала сделаем резервную копию заголовков LUKS:
sudo cryptsetup luksDump /dev/sdb1
Затем создадим новый ключ:
sudo cryptsetup luksAddKey /dev/sdb1
sudo cryptsetup luksRemoveKey /dev/sdb1
Сейчас вам придется ввести еще старый пароль.
Выводы
Вот и все теперь вы знаете как зашифровать раздел в Linux, а также понимаете как все это работает. Кроме того, шифрование дисков в Linux по алгоритму LUKS открывает широкие возможности для полного шифрования устанавливаемой системы.
- LUKS шифрует все блочное устройство, и поэтому очень хорошо подходит для защиты содержимого переносных устройств, таких как мобильные телефоны, съемные носители или жесткие диски ноутбуков.
- Вы можете использовать на серверах NAS для защиты резервных копий
- Процессоры Intel и AMD с AES-NI (Advanced Encryption Standard) имеют набор команд, которые могут ускорить процесс шифрования на основе dm-crypt в ядре Linux начиная с 2.6.32.
- Работает в том числе и с разделом подкачки, так что ваш ноутбук может использовать функцию спящего режима, или гибернации полностью безопасно.
- LUKS поддерживает шифрование только до восьми паролей. Это значит что только восемь пользователей с разными паролями могут иметь доступ к устройству.
- LUKS не рекомендуется для приложений, требующих шифрование на уровне файлов.
Обнаружили ошибку в тексте? Сообщите мне об этом. Выделите текст с ошибкой и нажмите Ctrl+Enter.
шифрование корневого раздела
Здравствуйте, обитатели linux.org.ru. Недавно озаботился вопросом шифрования разделов ОС Linux, и потому возник вопрос. Подскажите, возможно ли шифрование корневого раздела системы с условием, что факт наличия зашифрованного раздела будет невозможно зафиксировать. Безусловно, первым делом мнои был опробован luks, но создавать нужные мне разделы на основе только смешения, номера сектора и т.п. он (насколько я знаю) не умеет, ему целый раздел подавай. Возможно ли реализовать эту идею? Заранее спасибо за советы.
факт наличия зашифрованного раздела будет невозможно зафиксировать
как это? Ты же при загрузке системы пароль вводить будешь? Вот уже и факт на лицо.
Если очень нужно, то можно при помощи losetup создать /dev/loopX, который есть /dev/sdXY, но по определённому смещению.
Можно очень сильно извратиться и собрать самопальный initramfs с консольной версией truecrypt и её зависимостями, но /boot и загрузчик, понятное дело, останутся расшифрованными.
Можно очень сильно извратиться и собрать самопальный initramfs с консольной версией truecrypt и её зависимостями, но /boot и загрузчик, понятное дело, останутся расшифрованными.
Ну во первых boot можно сделать и на флешке… Так же как сама проблема ввода пароля — ведь можно же юзать ту же флешку и под ключь
Прошу прощения, что сразу не уточнил. Деиствительно, чтобы система грузилась, /boot предполагается вынести на memory stick или что-то подобное (как отметил init_6). А поверхность жесткого диска внешне выглядела бы, как неразмеченное пространство заполненное мусором.
А поверхность жесткого диска внешне выглядела бы, как неразмеченное пространство заполненное мусором.
См. по ссылке выше. Оно так и выглядит в результате.