GNU/Linux >> Znalost Linux >  >> Linux

Konfigurace LUKS:Linux Unified Key Setup

Podle Wikipedie je Linux Unified Key Setup (LUKS) specifikace pro šifrování disku vytvořená Clemens Fruhwirth v roce 2004 a byla původně určena pro Linux. LUKS používá šifrování mapovače zařízení (dm-crypt ) jako modul jádra pro zpracování šifrování na úrovni blokového zařízení.

Existují různé front-endové nástroje vyvinuté pro šifrování linuxových oddílů, ať už jde o obyčejné oddíly nebo logické svazky (LV). V tomto tutoriálu prozkoumáme tyto nástroje a předvedeme, jak nakonfigurovat šifrování disku. Vytvořil jsem 10GB disk (/dev/vdb ), který použijete během tohoto kurzu.

Instalace nástrojů

Začněme instalací příslušných nástrojů pro konfiguraci šifrování:

dnf install -y cryptsetup parted

cryptsetup balíček poskytuje cryptsetup příkaz, který použijeme ke konfiguraci šifrování, zatímco parted balíček poskytuje parted příkaz pro konfiguraci oddílu.

Vytvoření oddílu

Spuštění lsblk zobrazí vaše aktuální nastavení:

[root@rhel8 ~]# lsblk
NAME          MAJ:MIN RM  SIZE RO TYPE MOUNTPOINT
sr0            11:0    1 1024M  0 rom  
vda           252:0    0   30G  0 disk 
├─vda1        252:1    0    1G  0 part /boot
└─vda2        252:2    0   29G  0 part 
  ├─rhel-root 253:0    0 26.9G  0 lvm  /
  └─rhel-swap 253:1    0  2.1G  0 lvm  [SWAP]
vdb           252:16   0   10G  0 disk 

Můžeme zašifrovat celé blokové zařízení jako /dev/vdb , ale vytvoření oddílu nabízí větší flexibilitu, protože další oddíly můžeme přidat později.

Nyní spustíme následující příkazy k vytvoření oddílu k šifrování:

[root@rhel8 ~]# parted /dev/vdb mklabel msdos
Information: You may need to update /etc/fstab.

[root@rhel8 ~]# parted /dev/vdb -s "mkpart primary 2048s -1"
[root@rhel8 ~]# parted /dev/vdb align-check optimal 1
1 aligned

Při spuštění lsblk znovu vidíme, že dev/vdb1 oddíl byl přidán:

[root@rhel8 ~]# lsblk
NAME          MAJ:MIN RM  SIZE RO TYPE MOUNTPOINT
sr0            11:0    1 1024M  0 rom  
vda           252:0    0   30G  0 disk 
├─vda1        252:1    0    1G  0 part /boot
└─vda2        252:2    0   29G  0 part 
  ├─rhel-root 253:0    0 26.9G  0 lvm  /
  └─rhel-swap 253:1    0  2.1G  0 lvm  [SWAP]
vdb           252:16   0   10G  0 disk 
└─vdb1        252:17   0   10G  0 part 

Formátování svazku pomocí LUKS

Následující proces zašifruje dev/vdb1 . Abyste mohli pokračovat, musíte zadat YES velkými písmeny a dvakrát zadejte heslo:

[root@rhel8 ~]# cryptsetup -y -v luksFormat /dev/vdb1 

WARNING!
========
This will overwrite data on /dev/vdb1 irrevocably.

Are you sure? (Type uppercase yes): YES
Enter passphrase for /dev/vdb1: 
Verify passphrase: 
Key slot 0 created.
Command successful.

Potom potřebujeme cíl pro otevření šifrovaného svazku. Použil jsem mybackup jako můj cíl, ale tento cíl lze pojmenovat jakkoli:

[root@rhel8 ~]# cryptsetup -v luksOpen /dev/vdb1 mybackup
Enter passphrase for /dev/vdb1: 
Key slot 0 unlocked.
Command successful.

Spuštění lsblk znovu vidíme:

[root@rhel8 ~]# lsblk
NAME          MAJ:MIN RM  SIZE RO TYPE  MOUNTPOINT
sr0            11:0    1 1024M  0 rom   
vda           252:0    0   30G  0 disk  
├─vda1        252:1    0    1G  0 part  /boot
└─vda2        252:2    0   29G  0 part  
  ├─rhel-root 253:0    0 26.9G  0 lvm   /
  └─rhel-swap 253:1    0  2.1G  0 lvm   [SWAP]
vdb           252:16   0   10G  0 disk  
└─vdb1        252:17   0   10G  0 part  

└─mybackup 253:2 0 10G 0 crypt

Můžeme také vidět mybackup mapování šifrovaného svazku:

[root@rhel8 ~]# ls -l /dev/mapper/mybackup 
lrwxrwxrwx. 1 root root 7 Sep 16 16:10 /dev/mapper/mybackup -> ../dm-2

Vytvoření souborového systému

Protože nyní máme přístup k zašifrovanému svazku, musíme jej naformátovat, než na něj budeme moci ukládat data. Můžete si vybrat mezi různými typy souborových systémů, jako je xfs (výchozí na Red Hat Enterprise Linux 8), ext3, ext4 atd. Pro jednoduchost použijeme jako typ souborového systému xfs:

[root@rhel8 ~]# mkfs.xfs /dev/mapper/mybackup

meta-data=/dev/mapper/mybackup   isize=512    agcount=4, agsize=654720 blks
         =                       sectsz=512   attr=2, projid32bit=1
         =                       crc=1        finobt=1, sparse=1, rmapbt=0
         =                       reflink=1
data     =                       bsize=4096   blocks=2618880, imaxpct=25
         =                       sunit=0      swidth=0 blks
naming   =version 2              bsize=4096   ascii-ci=0, ftype=1
log      =internal log           bsize=4096   blocks=2560, version=2
         =                       sectsz=512   sunit=0 blks, lazy-count=1
realtime =none                   extsz=4096   blocks=0, rtextents=0

Vytvoření bodu připojení a adresáře

Abychom mohli zapisovat data do šifrovaného souborového systému, musíme jej nejprve připojit. Vybral jsem /mnt/my_encrypted_backup být přípojným bodem pro moje data:

[root@rhel8 ~]# mkdir -p /mnt/my_encrypted_backup

Poté spustíme mount příkaz:

[root@rhel8 ~]# mount -v /dev/mapper/mybackup /mnt/my_encrypted_backup/

mount: /mnt/my_encrypted_backup does not contain SELinux labels.
       You just mounted an file system that supports labels which does not
       contain labels, onto an SELinux box. It is likely that confined
       applications will generate AVC messages and not be allowed access to
       this file system.  For more details see restorecon(8) and mount(8).
mount: /dev/mapper/mybackup mounted on /mnt/my_encrypted_backup.

Zde se zobrazí varování Security-Enhanced Linux (SELinux). Musíme změnit označení bezpečnostního kontextu SELinux přípojného bodu:

[root@rhel8 ~]# restorecon -vvRF /mnt/my_encrypted_backup/

Relabeled /mnt/my_encrypted_backup from system_u:object_r:unlabeled_t:s0 to system_u:object_r:mnt_t:s0

Spuštění mount příkaz znovu ukazuje, že varování zmizelo:

[root@rhel8 ~]# mount -v -o remount /mnt/my_encrypted_backup/
mount: /dev/mapper/mybackup mounted on /mnt/my_encrypted_backup.

Spuštění lsblk opět vytvoří následující výstup:

[root@rhel8 ~]# lsblk
NAME          MAJ:MIN RM  SIZE RO TYPE  MOUNTPOINT
sr0            11:0    1 1024M  0 rom   
vda           252:0    0   30G  0 disk  
├─vda1        252:1    0    1G  0 part  /boot
└─vda2        252:2    0   29G  0 part  
  ├─rhel-root 253:0    0 26.9G  0 lvm   /
  └─rhel-swap 253:1    0  2.1G  0 lvm   [SWAP]
vdb           252:16   0   10G  0 disk  
└─vdb1        252:17   0   10G  0 part  
  └─mybackup  253:2    0   10G  0 crypt /mnt/my_encrypted_backup

Načítání podrobností LUKS

Nyní můžeme vypsat informace záhlaví LUKS, sekci datových segmentů, použité klíčové sloty atd.:

[root@rhel8 ~]# cryptsetup luksDump /dev/vdb1 
LUKS header information
Version:       	2
Epoch:         	3
Metadata area: 	12288 bytes
[……]
	Digest:     49 5a 68 e9 b6 66 50 2d c8 22 8e b9 d5 fd 2c af 
	            23 b7 47 f3 2f 62 ee 6a b8 7c 93 8f 19 fe d8 3c 

Přidání souboru klíče a automatické připojení

Připojení šifrovaného souborového systému LUKS automaticky má bezpečnostní důsledky. Pro uživatele notebooků to není moudrá volba. Pokud bude vaše zařízení odcizeno, budou odcizena i vaše data, která byla uložena v šifrovaném oddílu.

Bez ohledu na výše uvedené bezpečnostní důsledky zde je návod, jak nastavit automatickou montáž. Nejprve vytvořte příslušný adresář pro uložení souboru klíče:

[root@rhel8 ~]# mkdir /etc/luks-keys/; dd if=/dev/random of=/etc/luks-keys/mybackup_key bs=32 count=1
[root@rhel8 ~]#

Poté přidejte klíč pomocí cryptsetup nástroj:

[root@rhel8 ~]# cryptsetup luksAddKey /dev/vdb1 /etc/luks-keys/mybackup_key
Enter any existing passphrase: 
[root@rhel8 ~]# 

Dále musíme obnovit kontext SELinux:

[root@rhel8 ~]# restorecon -vvRF /etc/luks-keys

Relabeled /etc/luks-keys from unconfined_u:object_r:etc_t:s0 to system_u:object_r:etc_t:s0
Relabeled /etc/luks-keys/mybackup_key from unconfined_u:object_r:etc_t:s0 to system_u:object_r:etc_t:s0

Dříve jsme otevřeli šifrovaný souborový systém a připojili jej ručně. Nyní musíme zjistit, zda můžeme udělat totéž s automatizací. Protože je náš souborový systém již připojen, musíme nejprve umount (odpojit) to:

[root@rhel8 ~]# umount /mnt/my_encrypted_backup 
[root@rhel8 ~]# cryptsetup -v luksClose mybackup
Command successful.

Zkusme otevřít šifrovaný oddíl pomocí příkazového řádku pomocí souboru jako klíče:

[root@rhel8 ~]# cryptsetup -v luksOpen /dev/vdb1 mybackup --key-file=/etc/luks-keys/mybackup_key

Key slot 1 unlocked.
Command successful.

Dále musíme nakonfigurovat /etc/crypttab a /etc/fstab pro připojení disku při spouštění. Nejprve potřebujeme UUID pro /dev/vdb1 (nikoli /dev/mapper/mybackup ), který lze získat následovně:

[root@rhel8 ~]# blkid /dev/vdb1

/dev/vdb1: UUID="46f89586-f802-44f1-aded-f80b16821189" TYPE="crypto_LUKS" PARTUUID="f92dbe33-01"  

Nyní zadejte následující řádek do /etc/crypttab takže můžeme automaticky otevřít náš šifrovaný souborový systém:

mybackup   UUID=46f89586-f802-44f1-aded-f80b16821189 /etc/luks-keys/mybackup_key luks

Po této práci můžeme nyní nakonfigurovat /etc/fstab . Připojte k tomuto souboru následující řádek (tučně):

[root@rhel8 ~]# vi /_etc_/fstab

#

# /etc/fstab
# Created by anaconda on Thu Aug  8 06:21:57 2019
#
# Accessible filesystems, by reference, are maintained under '/dev/disk/'.
# See man pages fstab(5), findfs(8), mount(8) and/or blkid(8) for more info.
#
# After editing this file, run 'systemctl daemon-reload' to update systemd
# units generated from this file.
#
/dev/mapper/rhel-root   /                       xfs     defaults        0 0
[...]
**/dev/mapper/mybackup /mnt/my_encrypted_backup xfs defaults 0 0**

A nakonec můžeme pomocí mount -a vyzkoušet, zda automatické připojení funguje bez restartu počítače :

[root@rhel8 ~]# mount -av

/                        : ignored
/boot                    : already mounted
swap                     : ignored
/mnt/my_encrypted_backup : successfully mounted

V tomto případě /mnt/my_encrypted_backup byla úspěšně namontována. Nyní restartujte systém a ujistěte se, že automatické připojení funguje i při restartu.

Poslední myšlenky

Existují další možnosti, které lze poskytnout cryptsetup a každý má kompromisy, pokud jde o rychlost a bezpečnější souborový systém. Prozkoumejte možnosti a vyberte si, co je pro vaši situaci nejlepší.


Linux
  1. Konfigurace místního úložiště v Linuxu pomocí Stratis

  2. Jak nastavit SSH bez hesla v systému Linux

  3. Konfigurace Kensington Slimblade v Linuxu

  1. Vytvořte šifrovanou úschovnu v systému Linux

  2. Monitorování zabezpečení v Linuxu pomocí Tripwire

  3. Linux – využití prostoru před 1. oddílem USB flash disku jako Luks Key?

  1. Nastavte OpenVPN Server na Rocky Linux 8

  2. Začínáme s SSH v Linuxu

  3. Konfigurace blokového úložiště na serverech Linux