Rootfs titkosítása

From Gentoo Wiki
Jump to:navigation Jump to:search
This page is a translated version of the page Rootfs encryption and the translation is 100% complete.
Other languages:

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

Note
A cryptsetup benne van a LiveCD-ben.
root #emerge --ask sys-fs/cryptsetup

Operációs rendszer előkészítése

Important
A kernel beállítását a következők szerint kell elvégezni: Dm-crypt: Kernelbeállítás.

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

Important
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.
Note
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ó.

See also
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.

CODE
/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
Created a new GPT disklabel (GUID: 8D91A3C1-8661-2940-9076-65B815B36906).

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.

Note
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

Important
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
Note
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

Important
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

Important
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:

FILE /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.

Important
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:

FILE /etc/dracut.confMinimálisan szükséges összetevők a LUKS kötetek dracut segítségével történő visszafejtéséhez
add_dracutmodules+=" crypt dm rootfs-block "
Important
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
FILE /etc/dracut.confEmbed cmdline parameters for rootfs decryption
kernel_cmdline+=" root=UUID=cb070f9e-da0e-4bc5-825c-b01bb2707704 rd.luks.uuid=4bb45bd6-9ed9-44b3-b547-b411079f043b "
Note
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.

FILE /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
Important
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.

Tip
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.