Задача: Настроить установку по сети где система (Lubuntu 18.04 Desktop amd64
) устанавливается на зашифрованный диск и все это через подготовленный seed
файл применяя FOG Project
Что понадобиться для реализации задуманного:
1) Развернутый в сети сервис FOG Project
/ «Как установить FOG на Ubuntu 18.04»
2) Ознакомиться с заметкой «Меню загрузки Ubuntu 18.04 Server в FOG Management» из нее будут взяты часть настроек.
3) В роли тестовой машины выступит VM
созданная на тестовом полигоне базирующемся связки Debian 10 + Proxmox 6:
«Как установить proxmox on Debian 10»
4) А еще по желанию, дабы каждый раз не качать deb
пакеты из сети интернет я использую развернутый сервис apt-cacher-ng
(«Кэширования пакетов apt-cacher-ng на Ubuntu Bionic»), по сути это аналог WSUS
, но для Linux
систем. У меня он обслуживается: CentOS, Debian, Ubuntu
системы.
Шаг №1:
Я со своего рабочего места под управлением Ubuntu 18.04 Desktop amd64
ноутбука Lenovo E555
подключаюсь к VM
на которой в моей домашней сети работает сервис FOG Project
. У меня по короткому имени настроен алиас на подключение:
ekzorchik@navy:~$ nano ~/.bashrc alias srv-fog='sshpass -p 712mbddr@ ssh -o "StrictHostKeyChecking no" ekzorchik@172.35.35.7 -p 22' ekzorchik@navy:~$ source ~/.bashrc ekzorchik@navy:~$ srv-fog ekzorchik@srv-fog:~$
Шаг №2:
Создаю файл ответов установки системы Ubuntu 18.04 Lubuntu Desktop
где система устанавливается на зашифрованный диск:
ekzorchik@srv-fog:~$ sudo cp /var/www/fog/ubuntu/bionic/desktop/lubuntu.seed /var/www/fog/ubuntu/bionic/desktop/lubuntuluks.seed ekzorchik@srv-fog:~$ sudo nano /var/www/fog/ubuntu/bionic/desktop/lubuntuluks.seed #Install LUbuntu 18.04 Desktop + LUKS + LVM + Script Configure d-i auto-install/enable boolean true d-i debconf/priority string critical d-i pkgsel/update-policy select none d-i debian-installer/locale string en_US d-i debian-installer/language string en d-i debian-installer/country string US d-i console-setup/ask_detect boolean false d-i keyboard-configuration/xkb-keymap select us d-i keyboard-configuration/layoutcode string us d-i netcfg/choose_interface select auto d-i netcfg/get_hostname string srv-dbionic d-i mirror/country string manual d-i mirror/http/hostname string us.archive.ubuntu.com d-i mirror/http/directory string /ubuntu d-i mirror/http/proxy string http://172.35.35.8:3142 d-i passwd/user-fullname string ekzorchik d-i passwd/username string ekzorchik d-i passwd/user-password password 712mbddr@ d-i passwd/user-password-again password 712mbddr@ d-i user-setup/allow-password-weak boolean true d-i user-setup/encrypt-home boolean false d-i clock-setup/utc boolean true d-i time/zone string Europe/Moscow d-i clock-setup/ntp boolean true d-i clock-setup/ntp-server string ru.pool.ntp.org d-i partman-auto/init_automatically_partition select biggest_free d-i partman-auto/disk string /dev/sda /dev/vda d-i partman-auto/method string crypto d-i partman-crypto/passphrase password 712mbddr@ d-i partman-crypto/passphrase-again password 712mbddr@ d-i partman-lvm/device_remove_lvm boolean true d-i partman-lvm/confirm boolean true d-i partman-lvm/confirm_nooverwrite boolean true d-i partman-auto-lvm/guided_size string 90% d-i partman-auto-lvm/new_vg_name string crypt d-i partman-auto/choose_recipe select root-encrypted d-i partman-auto/expert_recipe string \ root-encrypted :: \ 500 500 500 ext3 \ $primary{ } $bootable{ } \ method{ format } format{ } \ use_filesystem{ } filesystem{ ext4 } \ mountpoint{ /boot } \ . \ 2000 2000 2000 linux-swap \ $lvmok{ } lv_name{ swap } \ in_vg { crypt } \ $primary{ } \ method{ swap } format{ } \ . \ 51200 51200 51200 ext4 \ $lvmok{ } lv_name{ root } \ in_vg { crypt } \ $primary{ } \ method{ format } format{ } \ use_filesystem{ } filesystem{ ext4 } \ mountpoint{ / } \ . \ 2000 2000 2000 ext4 \ $primary{ } \ method{ keep } \ use_filesystem{ } filesystem{ ext4 } \ label{ rescuedisk } \ . d-i partman/choose_partition select finish d-i partman/confirm boolean true d-i partman/confirm_nooverwrite boolean true tasksel tasksel/first multiselect lubuntu-desktop openssh-server d-i pkgsel/include string ca-certificates openssh-server d-i pkgsel/upgrade select full-upgrade d-i pkgsel/update-policy select unattended-upgrades d-i grub-installer/only_debian boolean true d-i grub-installer/with_other_os boolean true d-i debian-installer/add-kernel-opts string net.ifnames=0 d-i finish-install/reboot_in_progress note d-i preseed/late_command string in-target apt-install -y wget tmux mercurial vim lvm2 net-tools openssh-server gcc mail perl sshpass d-i preseed/late_command string in-target wget --no-proxy http://172.35.35.7/fog/ubuntu/bionic/desktop/dproject -O /tmp/dproject.sh; in-target chmod +x /tmp/dproject.sh; in-target /bin/bash /tmp/dproject.sh;
Шаг №3:
Создаю iPXE
меню в FOG Project:
http://IP&DNS/fog — FOG Configuration — iPXE New Menu Entry
Menu Item: Lubuntu 18.04 Desktop Luks
Description: Lubuntu 18.04 Desktop Luks
Parameters:
kernel tftp://${fog-ip}/os/ubuntu/desktop/18.04/linux initrd tftp://${fog-ip}/os/ubuntu/desktop/18.04/initrd.gz imgargs linux initrd=initrd.gz root=/dev/nfs netboot=nfs nfsroot=${fog-ip}:/images/os/ubuntu/desktop/18.04/ locale=en_US.UTF-8 keyboard-configuration/layoutcode=us hostname=srv-dbionic localechooser/supported-locales=en_US.UTF-8 url=http://172.35.35.7/fog/ubuntu/bionic/desktop/lubuntuluks.seed quiet splash ip=dhcp rw boot || goto MENU
Menu Show with: All Hosts
и нажимаю Save Changes
моя структура вида /os/ubuntu/desktop
и т.д указанная в Parameters
берет свое начало в заметке «Меню загрузки Ubuntu 18.04 Server в FOG Management»
Шаг №4:
Создаю контейнер VM
на тестовом полигоне с использованием гипервизора Debian 10 + Proxmox 6: CPU = 1, HDD = 50Gb, RAM = 2Gb
и выставляю что первым грузиться по сети:
https://IP&DNS:8006 — user&pass — (Folder View) Datacenter — Virtual Machine — ID: 119 (srv-lubuntu-luks) — Options — Boot Order — Edit
Boot device 1: Network
Boot device 2: Disk "virtio0"
Boot device 3: CD-ROM
и нажимаю OK
. Запускаю VM
Шаг №5:
Когда передо мной предстает FOG Menu
выбираю "Lubuntu 18.04 Desktop Luks"
и установка начинается.
Шаг №6:
Проверяю, как выглядит система установленная с помощью предопределенного файла lubuntuluks.seed
https://IP&DNS:8006 — user&pass — (Folder View) Datacenter — Virtual Machine — ID: 113 (USLuks) - ">_Console"
Сперва черный экран
Нажимаю клавишу Esc
Вижу запрос
Please unlock disk sda5_crypt
ввожу пароль который я предопределил в lubuntuluks.seed
— в рамках этой заметки это 712mbddr@
и нажимаю клавишу Enter
и вот приветствие на авторизацию в самой системе
После того, как авторизовался в системе, проверяю что есть в файле /etc/fstab:
ekzorchik@srv-dbionic:~$ cat /etc/fstab | grep -v "^#" /dev/mapper/crypt-root / ext4 errors=remount-ro 0 1 UUID=8f917c8c-8c05-4c2c-a33f-6d0ece3c10c7 /boot ext4 defaults 0 2 /dev/mapper/crypt-swap_1 none swap sw 0 0 ekzorchik@srv-dbionic:~$ ekzorchik@srv-dbionic:~$ sudo pvs PV VG Fmt Attr PSize PFree /dev/mapper/vda5_crypt crypt lvm2 a-- <49.28g <4.93g ekzorchik@srv-dbionic:~$ sudo lvs LV VG Attr LSize Pool Origin Data% Meta% Move Log Cpy%Sync Convert root crypt -wi-ao---- 43.39g swap_1 crypt -wi-ao---- 976.00m ekzorchik@srv-dbionic:~$
На этом у меня всё, Я разобрал в шагах от и до, как сделать чтобы система была защищена от простого переноса жесткого диска в другой системный блок путем шифрования. Если при включении системы не указать пароль доступа к ней не получить. С уважением автор Олло Александр aka ekzorchik.