Криптокоммуна использует передовые технологии для защиты передаваемых мемчиков от пассивных и активных атак. Серия постов под тегом *криптосервер будет рассказывать о настройке оборудования, служащего этой цели.
В этом выпуске мы настроим удаленную разблокировку dm-crypt root раздела. Поскольку криптосервер в будущем будет запотолочен куда-то за потолок без монитора и клавиатуры, данная функциональность просто необходима. Оказывается, сделать это довольно просто, если бы не тысячи противоречащих друг другу гайдов в интернете. Криптокоммуна проверила их все и написала свой. Использовался Debian Stable, openssh уже был настроен, так что ключи берутся из него.
1. Ставим нужную хуйню
sudo apt-get install busybox dropbear initramfs-tools
Скорее всего все, кроме dropbear, уже стоит
2. Конвертим ключи из формата openssh в формат dropbear
sudo /usr/lib/dropbear/dropbearconvert openssh dropbear /etc/ssh/ssh_host_rsa_key /etc/initramfs-tools/etc/dropbear/dropbear_rsa_host_key
sudo /usr/lib/dropbear/dropbearconvert openssh dropbear /etc/ssh/ssh_host_dsa_key /etc/initramfs-tools/etc/dropbear/dropbear_dss_host_key
Dropbear говно и не может в ECDSA ключи (дефолтные в актуальном openssh), так что можно немного соснуть с этим. TinySSH очень крутой и может, но еще нестабильный и его нету в репах.
3. Пихаем открытый ключ в dropbear
sudo cp ~/.ssh/authorized_keys /etc/initramfs-tools/etc/dropbear
4. Настраиваем dropbear чтобы он не пускал по паролю (все равно не сможет на самом деле) и чтобы смотрел только в локалку. Записать это в /etc/initramfs-tools/initramfs.conf
PKGOPTION_dropbear_OPTION="-s -p 172.16.1.1:22"
Хост сменить на свой. После двоеточия указывается порт.
5. Берем этот скрипт https://projectgus.com/files/headless_cryptroot/mount_cryptroot и пихаем его в /etc/initramfs-tools/hooks
sudo wget https://projectgus.com/files/headless_cryptroot/mount_cryptroot -O /etc/initramfs-tools/hooks/mount_cryptroot
sudo chmod +x /etc/initramfs-tools/hooks/mount_cryptroot
Проверьте, чтобы в нем не оказалось какого-нибудь говна.
6. Ребилдим
sudo update-initramfs -u
7. Ребутаемся, пробуем коннектиться. Именно с юзером root, это нормально, других юзеров в initramfs нету. Тип ключа указывается по причине отсоса с ECDSA, можно потом прописать в ~/.ssh/config
ssh -o HostKeyAlgorithms=ssh-rsa root@172.16.1.1
После ввода пароля dropbear убьется и система загрузится.
Ура?