В статье Создание зашифрованного диска на VDS Linux мы описывали как создать зашифрованный файл и монтировать его как диск. В том примере для подключения мы каждый раз вводим пароль и после работы с файлами мы его отключаем. Такой метод работы дает высокий уровень безопасности работы с данными.
Из минусов - вводимый нами каждый раз пароль может быть перехвачен если на ПК, с которого вводится пароль записываются все действия. (установлен key logger)
В этом примере мы расскажем как автоматически монтировать зашифрованный файл и подключать диск при каждой загрузке сервера, используя файл ключа.
1. Создадим файл ключа
dd if=/dev/urandom of=/root/random_data_keyfile1 bs=1024 count=4
1.1 Назначим права только для root
chmod 0400 /root/random_data_keyfile1
1.2 Добавим файл ключа к нашему зашифрованному файлу
cryptsetup luksAddKey /root/crypt-drive /root/random_data_keyfile1
2. Добавим конфигурацию для автоматического подключения
2.1 Файл /etc/crypttab
# <target name> <source device> <key file> <options>
crypto-my /root/crypt-drive /root/random_data_keyfile1 luks,discard
Если Вы удалите файл ключа и перезагрузите сервер, на этапе загрузки будет выдан запрос на ввод пароля от зашифрованного файла, при этом доступа к серверу по сети на данном этапе нет. После правильно ввода пароля - сервер продолжит загрузку включая сетевые службы.
2.1.1 Чтобы сервер продолжил грузиться в случае отсутствия файла ключа, добавим опцию timeout
# <target name> <source device> <key file> <options>
crypto-my /root/crypt-drive /root/random_data_keyfile1 luks,discard,timeout=30
Теперь ввод пароля при отсутствие файла ключа будет ожидаться 30 секунд, после чего сервер продолжит загрузку и будет доступен по сети.
2.2 Файл /etc/fstab
...
/dev/mapper/crypto-my /mnt/crypt-volume ext4 defaults 0 0
Готово, можно перезагрузить сервер и проверить.
df -h
Данный способ имеет свой минус, так как при получении физического доступа к серверу, появится возможность сбросить root пароль, а так как файл ключа хранится на сервере то и получить доступ к данным в зашифрованном разделе.