Centos 7. Установка ОС на зашифрованный раздел

Материал из Wiki
Перейти к навигации Перейти к поиску

Описание

Установка 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:
...

Вводим пароль шифрования

Готово - система загружается