Как открыть порт в начале процесса загрузки, чтобы разблокировать LUKS через SSH

11

У меня есть полностью зашифрованный сервер под управлением Debian 7, и я настроил dropbear и busybox, чтобы разблокировать контейнер LUKS через SSH (как описано в этом руководстве и в этом ответе U & L ).

К сожалению, всякий раз, когда я пытаюсь и SSH к серверу (через локальную сеть) при перезагрузке, я получаю ошибку «Отказано в соединении». Я попытался telnetи nmapпорт по умолчанию (22), и оба говорят, что порт закрыт.

На сервере есть ufwправило для приема всего трафика из локальной сети:

Anywhere         ALLOW       192.168.1.0/24

Я попытался изменить порт , который прослушивает Dropbear на в , /etc/defaults/dropbearно sshи telnetпо - прежнему отказывались соединения 1 .

Как я могу убедиться, что на этом этапе процесса загрузки порт открыт, чтобы я мог подключиться, чтобы разблокировать контейнер LUKS?

Отключение брандмауэра не имеет значения: nmapпоказывает, что все порты все еще закрыты.

Обновление 2/14

Я добавил break=premountв строку ядра и покопался в initramfs. dropbearзапущен, но в данный момент сеть не работает. После выхода из сети запускается и загрузка продолжается до тех пор, пока не появится приглашение разблокировать устройство LUKS.

В этот момент сеть работает , и хосту назначен правильный IP-адрес, но порт 22 по-прежнему закрыт.

Линия IP, /etc/initramfs-tools/intiramfs.confкоторую я использую:

export IP=192.168.1.200::192.168.1.1:255.255.255.0::eth0:off

В соответствии с указаниями, /usr/share/doc/cryptsetup/README.remote.gzя попытался просто добавить опцию устройства, но этого недостаточно для подключения к сети и получения аренды DHCP.

Обновление 10/10/14

Ответ Карла был то, что требовалось: настройка /etc/initramfs-tools/conf.d/cryptrootбыла ключом:

target=md1_crypt,source=UUID=8570d12k-ccha-4985-s09f-e43dhed9fa2a

Это руководство также оказалось более современным и актуальным (и успешным).

jasonwryan
источник
1
ВОТ ЭТО ДА! Я совершенно не знал, что вы можете удаленно разблокировать полностью заблокированные УДАЧИ. Очевидно, я не могу ответить на ваш вопрос с уверенностью, но я бы предположил, что sshd еще не начался. На моей машине sshd запускается позже в процессе.
Эмори
1
Есть ли у вас консольный доступ к машине, когда она находится в среде busybox? Можете ли вы убедиться, что dropbear действительно работает (через ps) и прослушивает ожидаемый порт (через netstat)?
Жаворонки
larsks - нет, потому что в консоли приглашение ожидает ввода ключевой фразы, а переключение на другой TTY означает просто пустой экран (если я вас правильно понял).
jasonwryan
Можете ли вы (временно) удалить шифрование LUKS и убедиться, что Drop Bear действительно работает?
Эмори
1
Вы пытались использовать один из break=Xпараметров загрузки, чтобы получить раннюю initramfsоболочку? Всякий раз, когда я отлаживаю проблемы шифрования файловой системы, я использую break=premount. Вы можете проверить ситуацию, решить ее и продолжить загрузку.
Алексиос

Ответы:

3

Я получил эту же проблему несколько недель назад (Debian Wheezy 7.6), и после нескольких дней устранения неполадок я обнаружил, что отсутствовал файл конфигурации, который мешал скрипту cryptroot на init-top работать правильно, поэтому он не останавливался спросить пароль через ssh, убив dropbear в конце последовательности (init-bottom).

Файл конфигурации вызывается cryptrootи должен быть в разделе /etc/initramfs-tools/conf.d/ Если я не ошибаюсь, что файл конфигурации должен был быть создан автоматически во время установки (я прочитал только одно руководство, говорящее об этом файле конфигурации), но почему-то этого не произошло (проверено на физическом сервере и в ВМ, та же ОС и версии)

Мне потребовалось несколько попыток, чтобы правильно настроить его, так как я не мог найти правильный синтаксис в то время. Мой файл конфигурации cryptroot выглядит следующим образом:

target=crypt-root,source=/dev/vg0/root,lvm=root

После создания файла конфигурации просто обновите initramfs и попробуйте снова:

update-initramfs -u
Карл
источник
Вы ЛЕГЕНДА! Спасибо: я боролся с этим целую вечность и почти отказался от надежды решить это. Мой cryptrootсинтаксис отличается от вашего, но вашего ответа было достаточно, чтобы указать мне правильное направление. Я в долгу перед вами.
Джейсонвриан
Я рад, что наконец-то все заработало. Я видел твой вопрос, пока изучал свою проблему, и подумал, что мне следует опубликовать, как я решил ее, как только я ее запустил.
Карл
3

Тема не в порядке. Проблема не в закрытом порту, а в том, что он не был связан. SSHd еще не запущен; вот почему вы не можете подключиться к нему.

poige
источник
@camh, есть ли какие-то правила относительно этого?
Пой
Я больше сосредоточился на первом предложении, которое носит редакционный характер. Остальное довольно кратко, чтобы быть хорошим ответом, но я думаю, что это все еще ответ. Я удалю свой комментарий.
Camh
@camh, я вижу ...
poige
Я не использую sshd: как говорится в вопросе, я пытаюсь подключиться к экземпляру dropbear, который по умолчанию работает на порту 22.
Джейсонвриан
@jasonwryan, это не играет никакой роли, какую именно службу TCP вы пытаетесь использовать, что действительно важно, так это то, что она не запущена.
poige
3

Предполагается, что dropbear (ssh-сервер) запускается очень рано во время фазы загрузки - раньше, чем последовательность init(rcN.d) и сценарии инициализации брандмауэра; даже раньше, чем / смонтировано (тоже зашифровано, верно?). Итак initramfs, предварительная / пользовательская область загружается для ядра загрузчиком. Изображение (ре) генерируется update-initramfs -uиз содержимого /etc/initramfs-tools/, включая конфигурацию dropbear в /etc/initramfs-tools/etc/dropbear/. Чтобы поиграть с конфигом dropbear, поиграйте с ним.

Таким образом, несколько пунктов, чтобы проверить:

  • dropbear не запускается: он плохо подключен к последовательности initramfs;
  • брандмауэр по умолчанию запрещает все.
yrk
источник
Спасибо, Ярек: Я думаю, что вы правы - я обновил свой вопрос ошибкой в ​​Debian (и исправлением, которое не работает). Я также попытался отключить брандмауэр.
Джейсонвриан