Centos 7. Установка ОС на зашифрованный раздел
Описание
Установка Centos 7 на зашифрованный раздел. Подключение зашированного системного раздела перед загрузкой ОС по сети через SSH
Ссылки
https://github.com/dracut-crypt-ssh/dracut-crypt-ssh
Настройка
На клиенте Linux (отсюда будем подключать зашифрованный раздел по сети через SSH)
Для начала создадим пару ключей (id_rsa / id_rsa.pub), которые будем использовать для подключения на сервер с целью дешифрования разделов
Вносим настройки в ssh клиент, чтобы при изменении ключа ssh удаленного сервера, ssh клиент не ругался
nano ~/.ssh/config
... UserKnownHostsFile=/dev/null StrictHostKeyChecking=no ...
ИЛИ
при подключении клиентом по ssh используем опции:
ssh -o StrictHostKeyChecking=no -o UserKnownHostsFile=/dev/null user$host
Создаем пару ключей (публичный и приватный)
ssh-keygen -t rsa
Получаем публичный ключ: ~/.ssh/id_rsa.pub
cat ~/.ssh/id_rsa.pub
На сервере Centos 7 (системный раздел которого мы шифруем)
- Устанавливаем Centos 7 штатно с шифрованными разделами: ROOT, SWAP (И HOME)
- Загружаемся после установки, вводим пароль дешифрования
Устанавливаем необходимые утилиты
yum install -y epel-release nano git mc wget ca-certificates
wget -O /etc/yum.repos.d/rbu-dracut-crypt-ssh-epel-7.repo https://copr.fedorainfracloud.org/coprs/rbu/dracut-crypt-ssh/repo/epel-7/rbu-dracut-crypt-ssh-epel-7.repo
yum install -y dracut-crypt-ssh
dracut --force
# STRUCTURE: ip=<client-ip>:<server-ip>:<gw-ip>:<netmask>:<hostname>:<device>:<autoconf>:<dns0-ip>:<dns1-ip>:<ntp0-ip>
/etc/default/grub:
... GRUB_CMDLINE_LINUX="<...> rd.neednet=1 ip=dhcp" ...
- ИЛИ -
... GRUB_CMDLINE_LINUX="<...> rd.neednet=1 ip=172.22.17.241::172.22.17.8:255.255.255.0:::off:172.22.17.8:8.8.8.8" ...
Генерируем конфиг grub
grub2-mkconfig --output /etc/grub2.cfg
cd ~
umask 0077
mkdir /root/.ssh
mkdir /root/dracut-crypt-ssh-keys
ssh-keygen -t rsa -m PEM -f /root/dracut-crypt-ssh-keys/ssh_dracut_rsa_key
ssh-keygen -t ecdsa -m PEM -f /root/dracut-crypt-ssh-keys/ssh_dracut_ecdsa_key
ssh-keygen -t ed25519 -m PEM -f /root/dracut-crypt-ssh-keys/ssh_dracut_ed25519_key
'command="console_auth"' - это запускается на сервере после успешного подключения по ssh и расшифровки раздела ssh-rsa AAAAB3NzaC... - это содержимое публичного ключа ~/.ssh/id_rsa.pub клиента
echo 'command="console_auth" ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDnrN8TE9SKEA9VmteL8VcTSvXPaky8aV0PuP9PhZr9Af1xR2NUBY08IzAtYaXRpgFjuRGRe4p4K4h7C8IqcUOAQ39QMswUMfN9l2yiLXCWUOqvueH7oD2nDqq0LQydQaz1N3F7OTCV6+iy1Tcd4eqDhGTLG7MQ28MqKCYsuUlamYZTbu7oLyCLWscb8MCknhSnUDO+ede4szGbzMdII8jeltYo1N9kYdTEO32rzeShP4+wUe9r0ibxY9q98nNJfDZKLWGBhPqFAWN/zE3mHhIO1XOWnZiEcp768agZKHMx8O5wRZS75k6tdUkhv1r8EOO8v5BIqEnZUZ0pCCUdlNqd root@centos7-system01' > /root/dracut-crypt-ssh-keys/authorized_keys
mv /etc/dracut.conf.d/crypt-ssh.conf /etc/dracut.conf.d/crypt-ssh.conf.ORIG
nano /etc/dracut.conf.d/crypt-ssh.conf
dropbear_port="22" dropbear_rsa_key="/root/dracut-crypt-ssh-keys/ssh_dracut_rsa_key" dropbear_ecdsa_key="/root/dracut-crypt-ssh-keys/ssh_dracut_ecdsa_key" dropbear_ed25519_key="/root/dracut-crypt-ssh-keys/ssh_dracut_ed25519_key" dropbear_acl="/root/dracut-crypt-ssh-keys/authorized_keys"
dracut --force
reboot
Подключение для дешифрования раздела
Linux
Подключаемся с клиента, publickey которого внесли в authorized_keys.
Когда будет запрос пароля на подключение шифрованных разделов пароль root SSH сервера не будет запрашиваться, так как мы добавили publickey клиента на сервер.
Публичный ключ id_rsa.pub, после его внесения в /root/.ssh/authorized_keys на сервере, необязательно использовать только с клиента, на котором мы его создали.
Можно перенести ключ на любую Linux машину и использовать эту машину для подключения к серверу.
По-умолчанию при использовании ssh-клиента, система ищет ключи в ~/.ssh
Указать путь к паре ключей (id_rsa / id_rsa.pub) вручную также можно опцией -i
ssh -i /root/rsa/id_rsa root@192.168.199.222
... Passphrase: ...
Вводим пароль на шифрованный раздел
Готово - система загружается
Windows
Для дешифрования раздела будем использовать PUTTY и ту же пару ключей, которую создали в Linux.
Копируем пару ключей (id_rsa / id_rsa.pub) из системы Linux в систему Windows, в директорию "rsa" в папке с plink.exe.
Скачиваем puttygen.exe и plink.exe.
https://www.chiark.greenend.org.uk/~sgtatham/putty/latest.html
Необходимо сконвертировать приватный ключ id_rsa в формат, который поймет putty.
https://www.simplified.guide/putty/convert-ssh-key-to-ppk
Запускаем puttygen.
Load - выбираем приватный ключ id_rsa.
Будет сообщение об успехе импорта ключа, далее:
Save private key - сохраняем файл как id_rsa.ppk (формат ключа putty) в директорию "rsa" в папке с plink.exe .
Запускаем plink, указав путь к ключу id_rsa.ppk.
plink.exe -batch -i .\rsa\centos7-test01-199-191\id_rsa.ppk root@192.168.199.186
... Passphrase: ...
Вводим пароль шифрования
Готово - система загружается
Mikrotik
Сгенерированная в AlmaLinux 8 пара ключей в Mikrotik не импортируется.
Можно сгенерировать пару ключей в Centos 7
Можно сгенерировать пару ключей в Windows:
puttygen.exe - RSA/2048 - Generate
Public Key: файл id_rsa.pub из соответствующего поля.
Private key: Conversions - Export OpenSSH key - сохраняем как id_rsa.
Копируем на микротик пару ключей (id_rsa / id_rsa.pub), которые создали на Linux и импортируем их:
/user ssh-keys private import user=admin private-key-file=id_rsa public-key-file=id_rsa.pub passphrase=""
Подключаемся
/system ssh address=192.168.199.222 user=root
... Passphrase: ...
Вводим пароль шифрования
Готово - система загружается