LUKS (Linux Unified Key Setup) — стандарт для шифрования жесткого диска в Linux. Обеспечивая стандартный формат данных на диске, он не только способствует совместимости между дистрибутивами, но и обеспечивает безопасное управление несколькими паролями пользователей. В отличие от существующего решения, LUKS сохраняет всю необходимую информацию о настройке в заголовке раздела, позволяет пользователю беспрепятственно переносить или мигрировать свои данные. (Источник: http://code.google.com/p/cryptsetup/)
Для настройки LUKS на CentOS вам нужен пакет cryptsetup
, который установлен по умолчанию в CentOS 7 с минимальной установкой. Вы можете использовать cryptsetup
для шифрования конкретного диска или раздела и ограждения всех сохранившихся на нем данных. Ваши данные защищены одним или несколькими защищенными паролями — шифрованием диска. Вы можете расшифровать свой раздел вручную при загрузке (automount — нуждается в дополнительной конфигурации и файла ключей), или вы можете вручную ввести пароль во время загрузки системы. В таком случае, невозможно прочитать / получить данные с диска, не зная защищенной парольной фразы. Далее я объясню, как зашифровать и настроить автоматическое монтирование зашифрованного диска / раздела.
Если вы не хотите автоматически монтировать зашифрованный диск / раздел при запуске операционной системе, не выполняйте шаги 4, 5, 9 и монтируйте свой диск / раздел вручную.
1. Добавьте новый диск
Добавьте новый диск или раздел, который вы хотите зашифровать.
2. Отформатируйте диск с использованием LUKS
Форматирование свой диск / раздел с помощью cryptsetup
и введите защищенную парольную фразу (именно эту парольную фразу вам придется ввести, чтобы разблокировать диск / раздел, благодаря чему он станет доступным для монтирования!)
1 2 3 4 5 6 7 |
[root@foo ~]# cryptsetup luksFormat /dev/sdb WARNING! ======== This will overwrite data on /dev/sdb irrevocably. Are you sure? (Type uppercase yes): YES Enter LUKS passphrase: Verify passphrase: |
3. Откройте диск с использованием LUKS
Откройте диск / раздел с помощью cryptsetup
и введите название физического устройства и название виртуального устройства монтирования (это / dev / mapper / имя, под которым вы хотите иметь свой диск / раздел) и введите пароль, который вы использовали на шаге 1.
1 2 |
[root@foo ~]# cryptsetup luksOpen /dev/sdb CryptedPart1 Enter passphrase for /dev/sdb: |
4. Автомонтирование при загрузке системы: создание ключа
Создайте файл ключей для automount. Файл ключей должен находиться в /root директории и иметь разрешения 0400 — этот файл может читать только пользователь root. Вы можете добавить к этому файлу любое содержимое, даже сам пароль, но я решил заполнить его случайными данными с помощью утилиты dd.
1 2 3 4 5 6 7 |
[root@foo ~]# dd if=/dev/urandom of=/root/keyfile1 bs=1024 count=4 4+0 records in 4+0 records out 4096 bytes (4.1 kB) copied, 0.00143526 s, 2.9 MB/s [root@foo ~]# chmod 0400 /root/keyfile1 [root@foo ~]# ll /root/keyfile1 -r--------. 1 root root 4096 Jun 11 21:24 /root/keyfile1 |
5. Автомонтирование при загрузке системы: добавление ключа в cryptsetup
Добавьте ваш ключ и пароль в cryptsetup
, подставив путь к устройству и путь к ключу в качестве аргументов. Вам будет предложено ввести пароль, который вы использовали на шаге 1.
1 2 |
[root@foo ~]# cryptsetup luksAddKey /dev/sdb /root/keyfile1 Enter any passphrase: |
6. Создание файловой системы
Создайте файловую систему на виртуальном разделе.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 |
[root@foo ~]# mkfs.xfs /dev/mapper/CryptedPart1 mke2fs 1.41.12 (17-May-2010) Filesystem label= OS type: Linux Block size=4096 (log=2) Fragment size=4096 (log=2) Stride=0 blocks, Stripe width=0 blocks 65408 inodes, 261632 blocks 13081 blocks (5.00%) reserved for the super user First data block=0 Maximum filesystem blocks=268435456 8 block groups 32768 blocks per group, 32768 fragments per group 8176 inodes per group Superblock backups stored on blocks: 32768, 98304, 163840, 229376 Writing inode tables: done Creating journal (4096 blocks): done Writing superblocks and filesystem accounting information: done This filesystem will be automatically checked every 22 mounts or 180 days, whichever comes first. Use tune2fs -c or -i to override. |
7. Создайте папку монтирования
Создайте папку, куда будет монтироваться зашифрованный раздел.
1 |
[root@foo ~]# mkdir /encryptedfs |
8. Добавьте запись в /etc/fstab
Для автоматического монтирования раздела при старте системы добавьте соответствующую запись в /etc/fstab.
1 |
[root@foo ~]# echo "/dev/mapper/CryptedPart1 /encryptedfs ext4 defaults 1 2" >> /etc/fstab |
9. Добавьте запись в /etc/crypttab
Добавьте запись в /etc/crypttab для расшифровки вашего раздела. Укажите имя физического устройства, а также путь к файлу ключа.
1 |
[root@foo ~]# echo "CryptedPart1 /dev/sdb /root/keyfile1 luks" >> /etc/crypttab |
10. Смонтируйте диск
Теперь вы можете смонтировать ваш зашифрованный раздел.
1 |
[root@foo ~]# mount -a |
Перезагрузите систему и проверьте, что зашифрованный диск / раздел будет успешно смонтирован при старте операционной системы.
Успехов!