Мне нужно настроить зашифрованный диск на RHEL6, но ключ должен храниться на сетевом сервере / базе данных, зашифрованный диск должен расшифровываться во время загрузки или после загрузки с использованием этого ключа и без запроса какой-либо парольной фразы.
3 ответа
Вы можете настроить это с помощью скрипта ключа crypttab, например, запись crypttab:
# target,sourcedev,keyfile,options
cdisk3 /dev/sda3 none cipher=twofish,hash=ripemd160,size=256,keyscript=/path/to/script
Сценарий будет выполнен с ключевым файлом (в данном случае "none") в качестве единственного аргумента, а выходные данные из сценария будут использованы в качестве ключа.
Он получает остальную часть входных данных как переменные окружения:
CRYPTTAB_NAME
The target name
CRYPTTAB_SOURCE
The source device
CRYPTTAB_KEY
The key file
CRYPTTAB_OPTIONS
A list of exported crypttab options
CRYPTTAB_OPTION_<option>
The value of the appropriate crypttab option, with value set to 'yes'
in case the option is merely a flag.
Я получил большую часть этого из справочной страницы crypttab(5), она лучше написана, чем я могу предоставить.
Конечно, такую установку будет сложно сделать безопасной, и она во многом зависит от того, что вы вставите в свой скрипт.
ИМХО, вы можете сделать это только для не загрузочных и некорневых дисков. Чтобы получить доступ к сетевой службе и получить учетные данные, Linux должен был бы:
- Загрузите систему
- Настройте удаленное монтирование
- Получить кредиты
- Смонтировать диск
Вы можете написать для него скрипт оболочки и убедиться, что он запускается во время загрузки. Имейте в виду, что вам придется хранить учетные данные общего сетевого ресурса / базы данных в клиентской системе, что побеждает цель :)
Уже существует инструмент, позволяющий делать практически все, что вы хотите, по крайней мере, предполагая, что вы не загружаетесь с такого зашифрованного тома (автоматическая загрузка с зашифрованного тома сопряжена с собственным набором проблем, и хотя есть явные признаки того, что что это выполнимо, я не думаю, что я хотел бы попробовать это по крайней мере с первой попытки). Это называется Мандос.
По сути, он хранит ключ в отдельной системе (на сервере Mandos) и позволяет клиенту запрашивать его безопасным способом. Когда у клиента есть ключ, этот ключ можно использовать для разблокировки контейнера LUKS.
Конечно, вы должны были бы надлежащим образом защитить сервер Mandos, но это проблема с любым хранилищем ключей, и, конечно, она не уникальна для Mandos.
Существует схема того, как это работает на веб-сайте.