Rootfs titkosítása
A gyökérfájlrendszer (root-fájlrendszer) letitkosítása javítja a magánélet-védelmünket és ezáltal megakadályozza az illetéktelen személyek hozzáférését a fájljainkhoz.
Telepítés
Emerge
A cryptsetup benne van a LiveCD-ben.
root #
emerge --ask sys-fs/cryptsetup
Operációs rendszer előkészítése
Ezt az útmutatót egy új Gentoo telepítés részeként kell követni, a telepítési eljárás a következő lépésig követhető: AMD64 Handbook: Designing a partition scheme.
Adathordozó előkészítése
A partíciók kialakítása általában nem jár a partíciókban lévő adatok módosításával. Ha egy adathordozót újra particionálnak, majd titkosítanak, akkor a régi adatok titkosítatlan formában maradhatnak, amíg felül nem íródnak.
A modern adathordozók nem feltétlenül törölhetők biztonságosan olyan módszerekkel, mint például dd if=/dev/urandom of=/dev/sdX. További információért tekintse meg a Secure wipe leírást.
Ez a példa a GPT partíciós táblázatot használja az adathordozó particionálási sémájaként. A particionáló segédprogram az fdisk lesz, bár bármelyik másik particionáló segédprogram használható.
További információért a GPT partíciós táblázatról és az EFI-ről tekintse meg a Adathordozók (AMD64 kézikönyv) leírást.
Partíciók létrehozása az adathordozón
Az egyetlen adathordozóval rendelkező alap operációs rendszerek közös beállításai tartalmazhatnak egy partíciót a boot fájlok számára és egy partíciót az operációs rendszer gyökérkönyvtárának a számára.
/dev/nvme0n1
├── /dev/nvme0n1p1 [EFI] /boot 1 GB fat32 Bootloader, bootloader support files, kernel and initramfs
└── /dev/nvme0n1p2 [LUKS] (crypt) ->END luks encrypted partition
└── rootfs / ->END btrfs root partition
Partíciók létrehozása
Kezdje azzal, hogy az fdisk segítségével friss partíciós táblázatot hoz létre a gyökér adathordozón.
root #
fdisk /dev/nvme0n1
Welcome to fdisk (util-linux 2.38.1). Changes will remain in memory only, until you decide to write them. Be careful before using the write command. Device does not contain a recognized partition table. Created a new DOS disklabel with disk identifier 0x81391dbc.
Command (m for help):
g
Miután az adathordozón létrejött egy GPT partíciós táblázat, a boot partíció az n billentyűgomb segítségével létrehozható.
Command (m for help):
n
Partition number (1-128, default 1): First sector (2048-1953525134, default 2048): Last sector, +/-sectors or +/-size{K,M,G,T,P} (2048-1953525134, default 1953523711): +1G Created a new partition 1 of type 'Linux filesystem' and of size 1 GiB.
The ESP properties can be set using t:
Command (m for help):
t
Selected partition 1 Partition type or alias (type L to list all): 1 Changed type of partition 'Linux filesystem' to 'EFI System'.
A gyökérpartíció létrehozható a következő módon:
Command (m for help):
n
Partition number (1-128, default 2): First sector (1050624-1953525134, default 2048): Last sector, +/-sectors or +/-size{K,M,G,T,P} (1050624-1953525134, default 1953523711): Created a new partition 2 of type 'Linux filesystem' and of size 931 GiB.
Végül a módosításokat a w billentyűgomb lenyomásával lehet menteni.
Command (m for help):
w
The partition table has been altered. Calling ioctl() to re-read partition table. Syncing disks.
LUKS titkosított partíció létrehozása
Az titkosított fájlrendszer előkészítéséhez használható a dm-crypt szoftver.
A dm-crypt kernelmodul betöltésének biztosítására a következő parancs használható:
root #
modprobe dm-crypt
A következő módon ellenőrizhető a kernelmodul állapota:
user $
lsmod | grep dm-crypt
A gyökérpartíció formázása LUKS használatával, jelszóval biztosítva:
root #
cryptsetup luksFormat --key-size 512 /dev/nvme0n1p2
WARNING! ======== This will overwrite data on /dev/nvme0n1p2 irrevocably. Are you sure? (Type 'yes' in capital letters): YES Enter passphrase for /dev/nvme0n1p2:
LUKS fejléc biztonsági mentése
Ne feledje ezt a lépést, mivel a kulcsok/jelszavak a LUKS fejléc visszafejtésére szolgálnak. Ha az adathordozón a fejléc valamilyen okból megsemmisül, akkor a fennmaradó adatok az adathordozón csak a biztonsági mentésből származó fejlécfájl segítségével lesznek helyreállíthatóak.
A fejlécek biztonsági mentése a következő módon történhet:
root #
cryptsetup luksHeaderBackup /dev/nvme0n1p2 --header-backup-file crypt_headers.img
Nyissa ki a LUKS kötetet
A titkosított adathordozót meg kell nyitni és le kell képezni, mielőtt használhatóvá válik. Ez a következő módon érhető el:
root #
cryptsetup luksOpen /dev/nvme0n1p2 crypt
Ebben a példában a kötet megnyílik és leképezésre kerül a /dev/mapper/crypt útvonalra.
Fájlrendszerek formázása
Hozzon létre fájlrendszert a /dev/nvme0n1p1 számára, amely a boot partícióként szolgál, és tartalmazza a bootloadert és a kernelfájlokat. Ezt a partíciót az UEFI olvassa. A legtöbb alaplap csak FAT32 fájlrendszert tud kezelni.
root #
mkfs.vfat -F32 /dev/nvme0n1p1
Ezután hozza létre a gyökérfájlrendszert (ebben a példában a btrfs kerül használatra):
root #
mkfs.btrfs -L rootfs /dev/mapper/crypt
Gentoo operációs rendszer telepítése
Ha ezt az eljárást egy Gentoo telepítés során követik (a Handbook:AMD64/Full/Installation és a Handbook:AMD64/Full/Installation helyett), akkor a következő lépések használhatóak a létrehozott partíció felcsatolására a fájlrendszerbe a telepítés folytatásához.
Gyökérpartíció felcsatolása a fájlrendszerbe
A gyökérfájlrendszert a létrehozott helyen a következő módon lehet felcsatolni a fájlrendszerbe:
root #
mount LABEL=rootfs /mnt/gentoo
Gentoo operációs rendszer telepítésének a véglegesítése
Az általános telepítési útmutató alkalmazható. Néhány szempontot figyelembe kell venni: Az elsődleges RAM fájlrendszert úgy kell létrehozni, hogy támogassa a gyökérpartíció visszafejtését, valamint a bootloader telepítését és beállítását.
Ezen a ponton a Gentoo telepítés normál módon folytatható: Installing a stage tarball, néhány alábbi megfontolással.
Az fstab beállítása
A megfelelő /etc/fstab fájlt szerkeszteni kell. Ha ez a chroot előtt kerül elvégzésre, akkor győződjön meg arról, hogy a helyes útvonalat használja. További információ található a telepítési útmutató fájlrendszer szakaszában.
Az egységes kötetcsatlakoztatás érdekében címkéket és UUID azonosítókat kell használni.
A blokkeszközök és a hozzájuk tartozó partícióazonosítók a következő módon tekinthetők meg:
root #
lsblk -o name,uuid
NAME UUID sdb ├─nvme0n1p1 BDF2-0139 └─nvme0n1p2 4bb45bd6-9ed9-44b3-b547-b411079f043b └─crypt cb070f9e-da0e-4bc5-825c-b01bb2707704
Miután a partíció UUID azonosítók és partíció címkék meg lettek találva, a /etc/fstab fájl szerkeszthető a megfelelő csatolások hozzáadásának érdekében:
/mnt/gentoo/etc/fstab
# <fs> <mountpoint> <type> <opts> <dump/pass>
UUID=BDF2-0139 /boot vfat noauto,noatime 1 2
LABEL=rootfs / btrfs defaults 0 1
Initramfs beállítás
Az initramfs segítségével vissza kell fejteni (dekódolni kell) és csatlakoztatni kell a gyökérpartíciót. Ez a művelet a Dracut segítségével valósítható meg, a kernel parancssorban átadott paraméterek használatával.
Ezt a beállítást chroot környezetben vagy egy élő operációs rendszeren kell elvégezni.
A következő modulokat kell hozzáadni az add_dracutmodules direktívához a /etc/dracut.conf fájlban:
/etc/dracut.conf
Minimálisan szükséges összetevők a LUKS kötetek dracut segítségével történő visszafejtéséhezadd_dracutmodules+=" crypt dm rootfs-block "
A Dracut beállítási direktívák szóköze rendkívül fontos. Ügyeljen arra, hogy ne legyenek szóközök az add_dracutmodules és +=" között, továbbá az add_dracutmodules paramétereket szóközökkel kell elválasztani.
A Dracut beállítható úgy, hogy a LUKS beállításokat közvetlenül beleprogramozott módon tartalmazza. Először az adathordozó adatait kell lekérni:
root #
lsblk -o name,uuid
NAME UUID sda └─sda1 BDF2-0139 nvme0n1 └─nvme0n1p1 4bb45bd6-9ed9-44b3-b547-b411079f043b └─crypt cb070f9e-da0e-4bc5-825c-b01bb2707704
/etc/dracut.conf
Embed cmdline parameters for rootfs decryptionkernel_cmdline+=" root=UUID=cb070f9e-da0e-4bc5-825c-b01bb2707704 rd.luks.uuid=4bb45bd6-9ed9-44b3-b547-b411079f043b "
A
root=
opció beágyazása a kernel parancssorába szükséges, amennyiben a sys-boot/systemd-boot szoftvercsomagot használjuk, de felesleges a GRUB grub-mkconfig esetében, mivel az automatikusan hozzáadja ezt a paramétert.Ha az systemd init-rendszerként van használva, akkor azt az a cryptsetup USE jelölőzászlóval kell lefordítani a forráskódból.
/etc/portage/package.use/systemd
sys-apps/systemd cryptsetup
Majd építse újra a systemd init rendszert a forráskódból:
root #
emerge --ask sys-apps/systemd
Miután a Dracut be lett állítva, egy új initramfs létrehozható a következő parancs futtatásával:
root #
dracut
A Dracut alapértelmezés szerint a fájlt a /boot könyvtárba írja, ezért ezt csatlakoztatni kell.
Ha a bináris futtatható initramfs képfájl egy másik, nem az aktuálisan aktív bináris futtatható kernelképfájl számára van létrehozva, akkor az --kver opciót kell használni:
root #
dracut --kver 6.1.28-gentoo
Ez akkor fordulhat elő, ha a Gentoo Live CD kernel verziója eltér a kernel forráskódfordítási folyamat során beállított sys-kernel/gentoo-sources verziótól.
A lehetséges kernel verziók megtalálhatók a ls /lib/modules parancs futtatásával.
További olvasnivaló a témában
- Dm-crypt — egy adathordozótitkosítási-rendszer, amely a Linux kernel crypto API keretrendszerét és az eszköz feltérképező alrendszert (device mapper subsystem-et) használja.
- Dm-crypt full disk encryption — több szempontot tárgyal a 'dm-crypt (teljes) lemez titkosítás használatával kapcsolatban.