Dropbear-initramfs на человечности 18.04

Я пытаюсь установить выделенный сервер с зашифрованным диском, я нашел, что некоторая справка онлайн будит это и выполнение, но я работаю в некотором получении проблем dropbear-initramfs запускаться правильно. (учебное руководство вдоль тех строк https://hamy.io/post/0005/remote-unlocking-of-luks-encrypted-root-in-ubuntu-debian/)

Таким образом, я устанавливаю dropbear-initramfs пакет и получаю ошибку, которую пропускают ключи, и он не будет работать. Я добавляю authorized_keys, я настраиваю dropbear для работы другого порта, и я обновляю initramfs, но при начальной загрузке не запускается dropbear, и мне просто предлагают нормальное имя пользователя/пароль. Я попробовал несколько вещей разбудить это и выполнение, я попробовал к dpkg, реконфигурировали пакет, после того как ключи являются установкой правильно, и я больше не получаю сообщение об ошибке, но dropbear все еще не запускается.

Если бы у кого-либо есть какой-либо указатель, который очень ценился бы :)

С уважением

P.S.: Я взглянул для уже открытых вопросов, но большинство их теперь довольно старо, и dropbear + initramfs, предполагают для EA начиная с человечности 16.04 (с dropbear-initramfs пакетом).

2
задан 18 September 2018 в 15:49

2 ответа

Вы почти сделали что, что должно быть сделано...

Короткая версия:

TL; DR

Из-за проблемы безопасности, authorized_keys, содержа открытый ключ Вашего клиента был удален...

  1. Dropbear и openssh являются оба серверами SSH, но не совместно используют тот же формат ключей, хотя они совместно используют тот же принцип частных открытых ключей:

    • Формат DER для dropbear
    • Формат PEM для openssh для закрытых ключей
    • authorized_keys файл на стороне сервера,
    • A known_hosts файл на стороне клиента.

    Вот почему соединяться с dropbear сервером, обоими ssh и dbclient может использоваться, но /usr/lib/dropbear/dropbearconvert должен использоваться для преобразования открытых ключей, удостоверяются ssh совместимо с dropbear, или сделать dbclient совместимый с sshd.

  2. dropbear намного меньше, чем sshd и даже при том, что это является более основным, хорошо иметь общедоступный сервер только для ключа SSH в наличии на ранней стадии процесса начальной загрузки Linux, конкретно при использовании загрузчика, такого как PXE и/или iPXE.
    Чтобы сделать это, dropbear должно быть интегрировано к init файловой системе ( initrd изображение).
    Пакет Ubuntu dropbear-initramfs должен быть установлен (я использую версию, 2017.75-3build1 на Ubuntu 18.04).
    Настройки всего dreopbear находятся в /etc/dropbear-initramfs/ папка, включая конфигурационный файл (config), закрытые ключи сервера, rsa, dss, ecdsa (dropbear_*_host_key), и открытые ключи клиента к принятому (authorized_keys) должен быть помещен сюда в корректном dropbear формате.
    Затем обновить Ваш ток initrd файл изображения в /boot/ каталог, необходимо запуститься:

    sudo update-initramfs -u
    

    Этот пакет идет со сценариями для создания initrd изображения в /usr/share/initramfs-tools/hooks/dropbear, и сценарии для выполнения на ранних стадиях процесса начальной загрузки в /usr/share/initramfs-tools/scripts/init-premount/dropbear, и только затем те последние сценарии, встроенные в initrd изображения.

  3. Некоторые дистрибутивы удаляют authorized_keys при определенных условиях предотвратить ssh соединения на ранних стадиях. Для хитрости этого необходимо проверить это и работу вокруг такого как указано ниже:

    $ cd /usr/share/initramfs-tools/scripts/
    $ grep -R authorized_keys *
    init-bottom/dropbear:# delete authorized_keys(5) file to forbid new SSH sessions
    init-bottom/dropbear:#rm -f ~root/.ssh/authorized_keys
    init-bottom/dropbear:    # just kill this script), so deleting root's authorized_keys(5) file
    

    ... где мы смягчаем удаление authorized_keys смочь соединиться в машину, когда что-то идет не так, как надо в initramfs этап.

1
ответ дан 2 December 2019 в 04:41

Работает для Debian, также должно работать и для Ubuntu: https://github.com/ceremcem/unlock-luks-partition

Разблокировать раздел LUKS с помощью SSH

Ниже приведены инструкции по загрузке вашего СЕРВЕРА с помощью подключение и разблокирование зашифрованного раздела через КЛИЕНТА по SSH:

ПРЕДУПРЕЖДЕНИЕ : ввод криптографического ключа по сети может быть безопасным (из-за безопасного характера соединения SSH) , пока вы полностью уверены, что initramfs не был порабощен, так что не происходит атаки MITM, пока вы набираете кодовую фразу для вашего диска.

1. Установите обязательные пакеты (на СЕРВЕР)

apt-get install dropbear initramfs-tools busybox

Убедитесь, что Dropbear отключил себя в / etc / default / dropbear

NO_START=1

2. Добавьте желаемые открытые ключи в файл authorized_keys СЕРВЕРА

Просто скопируйте и вставьте свои открытые ключи в / etc / dropbear-initramfs / authorized_keys на СЕРВЕРЕ

3. Создайте сценарий разблокировки

Создайте следующий сценарий как /etc/initramfs-tools/hooks/crypt_unlock.sh

#!/bin/sh

PREREQ="dropbear"

prereqs() {
  echo "$PREREQ"
}

case "$1" in
  prereqs)
    prereqs
    exit 0
  ;;
esac

. "${CONFDIR}/initramfs.conf"
. /usr/share/initramfs-tools/hook-functions

if [ "${DROPBEAR}" != "n" ] && [ -r "/etc/crypttab" ] ; then
cat > "${DESTDIR}/bin/unlock" << EOF
#!/bin/sh
if PATH=/lib/unlock:/bin:/sbin /scripts/local-top/cryptroot; then
kill \`ps | grep cryptroot | grep -v "grep" | awk '{print \$1}'\`
# following lines will be executed after the passphrase has been correctly entered
# kill the remote shell
kill -9 \`ps | grep "\-sh" | grep -v "grep" | awk '{print \$1}'\`
exit 0
fi
exit 1
EOF

  chmod 755 "${DESTDIR}/bin/unlock"

  mkdir -p "${DESTDIR}/lib/unlock"
cat > "${DESTDIR}/lib/unlock/plymouth" << EOF
#!/bin/sh
[ "\$1" == "--ping" ] && exit 1
/bin/plymouth "\$@"
EOF

  chmod 755 "${DESTDIR}/lib/unlock/plymouth"

  echo To unlock root-partition run "unlock" >> ${DESTDIR}/etc/motd

fi

Сделайте его исполняемым:

chmod +x /etc/initramfs-tools/hooks/crypt_unlock.sh

Создайте сценарий очистки как / etc / initramfs- tools / scripts / init-bottom / cleanup.sh :

#!/bin/sh
echo "Killing dropbear"
killall dropbear
exit 0

... и сделать его исполняемым:

chmod +x /etc/initramfs-tools/scripts/init-bottom/cleanup.sh

4. Создайте статический IP-адрес (или пропустите этот шаг, чтобы использовать DHCP)

Отредактируйте /etc/initramfs-tools/initramfs.conf , чтобы добавить (или изменить) строку:

IP=192.168.1.254::192.168.1.1:255.255.255.0::eth0:off
format: 

    IP=${ip}::${gateway_ip}:${netmask}:[${hostname}]:${eth_device}:${autoconf}

([hostname] can be omitted)

В новых ядрах eth0 переименован в enp0s3 (или что-то в этом роде). Проверьте это с помощью ls / sys / class / net

5.Обновите initramfs

ВНИМАНИЕ : будьте осторожны, если вы напрямую редактировали /boot/grub/grub.cfg , так как он будет перезаписан ниже команда. Вы можете получить нарушенную последовательность загрузки. См. важное примечание .

update-initramfs -u

6. Тест

  1. Перезагрузите сервер
  2. Подключитесь к серверу через ssh (скрытый) [-i ~ / .ssh / id_rsa]

Расширенная конфигурация

Создайте обратный туннель

Возможно, вы захотите ваш СЕРВЕР для подключения вашего Link Up Server к SSH, создайте обратный туннель к его SSH-серверу, чтобы вы могли подключить ваш СЕРВЕР через ваш Link Up Server, что устраняет необходимость в перенаправлении брандмауэра для вышеуказанного процесса.

(см. Reverse-tunnel-setup.md)

Запустить Dropbear на дополнительных портах

(на основе https://askubuntu.com/a/840067/371730 )

  1. Определите дополнительные порты:

     --- / usr / share / initramfs-tools / scripts / init-premount / dropbear 2018-09-22 01: 55: 50.963967412 +0300
    +++ / usr / share / initramfs-tools / scripts / init-premount / dropbear 2018-09-22 01:56: 04.091945164 +0300
    @@ -26,7 +26,7 @@
    - exec / sbin / dropbear $ DROPBEAR_OPTIONS -Fs
    + exec / sbin / dropbear $ DROPBEAR_OPTIONS -Fs -p 22 -p 80
    
  2. Обновите initramfs:

     update-initramfs -u
    
1
ответ дан 28 December 2019 в 17:39

Другие вопросы по тегам:

Похожие вопросы: