Недавно я установил FreeBSD для работы и geli для шифрования. (Полное шифрование диска без загрузочного раздела.) Когда я закончил его настройку, я обнаружил, что при каждой загрузке мне нужно вводить пароль синтаксического анализа для монтирования корневого диска.
Это не для моих нужд. Я просто хочу, чтобы моя система загружалась автоматически, чтобы я мог использовать ssh. Но когда другие выключают мою машину и пытаются использовать другую систему freeBSD для монтирования моего диска, они не могут. Если они монтируют раздел с другой системой FreeBSD, они могут видеть только / boot dir. Все файлы в безопасности!
Возможна ли моя концепция? (Для автоматической загрузки зашифрованной системы, если она смонтирована другой системой?) И если да, то как мне это сделать с помощью freeBSD?
tl: dr: Нет
Если вы хотите, чтобы ключ использовался автоматически при загрузке, тогда ключ должен быть доступен при загрузке. Что означает на незашифрованная часть диска.
Если он находится на незашифрованной части диска, то другой может извлечь диск из вашей системы, прочитать ключ и расшифровать остальную часть диска.
Нет возможности правильно защитить диск и не хранить ключ.
Нет. Если вы хотите расшифровать его автоматически, вам нужно, чтобы ваш пароль был сохранен на диске в открытом виде или скрыт каким-либо (плохим) способом. Тот, у кого достаточно силы воли, легко сможет получить этот пароль. Если только «/ boot» не зашифрован, пароль должен быть там, и злоумышленник просто должен его найти.
Если вы просто не хотите присутствовать физически, чтобы разблокировать сервер, это можно решить, установив незашифрованную систему, которая загрузится, запустит такие службы, как ssh, которые позволят вам разблокировать раздел данных из удаленного места.
У меня была аналогичная проблема, которую я решаю, только зашифровав / home. Проблема в том, что /etc/rc.d/geli хочет смонтировать его, прежде чем продолжить загрузку. Кладж будет выполнять монтирование вручную после загрузки, но мне нравится способ, которым он предлагает сделать это во время загрузки - я просто хочу, чтобы сеть запускалась первой, поскольку /, / var и / usr не зашифрованы .
Я так выразился:
/dev/ada0p7.eli /home ufs rw,noauto 0 0
в / etc / fstab
Созданы соответствующие параметры "l" в rc.conf:
lgeli_devices="ada0p7"
lgeli_ada0p7_flags="-k /etc/geli/server.key"
lgeli_ada0p7_autodetach="NO"
а затем lgeli в /etc/rc.d, вот так:
#!/bin/sh
# PROVIDE: lgeli
# REQUIRE: sshd
# KEYWORD: nojail
. /etc/rc.subr
lgeli_make_list()
{
local devices devices2
local provider
devices="${lgeli_devices}"
for provider in ${devices}; do
provider=${provider%.eli}
provider=${provider#/dev/}
devices2="${devices2} ${provider}"
done
echo ${devices2}
}
name="lgeli"
start_precmd='[ -n "$(lgeli_make_list)" ]'
start_cmd="lgeli_start"
stop_cmd="lgeli_stop"
required_modules="geom_eli:g_eli"
lgeli_start()
{
devices=`lgeli_make_list`
if [ -z "${lgeli_tries}" ]; then
if [ -n "${lgeli_attach_attempts}" ]; then
# Compatibility with rc.d/gbde.
lgeli_tries=${lgeli_attach_attempts}
else
lgeli_tries=`${SYSCTL_N} kern.geom.eli.tries`
fi
fi
for provider in ${devices}; do
provider_=`ltr ${provider} '/-' '_'`
eval "flags=\${lgeli_${provider_}_flags}"
if [ -z "${flags}" ]; then
flags=${lgeli_default_flags}
fi
if [ -e "/dev/${provider}" -a ! -e "/dev/${provider}.eli" ]; then
echo "Configuring Disk Encryption for ${provider}."
count=1
while [ ${count} -le ${lgeli_tries} ]; do
geli attach ${flags} ${provider}
if [ -e "/dev/${provider}.eli" ]; then
# LOUIS line below, so long as
# /etc/fstab... noauto line
# present, this works
mount "/dev/${provider}.eli"
break
fi
echo "Attach failed; attempt ${count} of ${lgeli_tries}."
count=$((count+1))
done
fi
done
}
lgeli_stop()
{
devices=`lgeli_make_list`
for provider in ${devices}; do
if [ -e "/dev/${provider}.eli" ]; then
umount "/dev/${provider}.eli" 2>/dev/null
geli detach "${provider}"
fi
done
}
load_rc_config $name
run_rc_command "$1"
Таким образом, он довольно чистый и не слишком беспорядочный. Команда mount в lgeli гарантирует, что материал noauto смонтирован, если geli'd. Немного некрасиво, но для меня главное - я могу удаленно войти в систему и спасти свой рабочий стол от недоступности после сбоя питания, что в противном случае было режимом по умолчанию!