GNU/Linux >> LINUX-Kenntnisse >  >> Linux

LUKS konfigurieren:Linux Unified Key Setup

Laut Wikipedia ist das Linux Unified Key Setup (LUKS) eine Festplattenverschlüsselungsspezifikation, die 2004 von Clemens Fruhwirth erstellt wurde und ursprünglich für Linux gedacht war. LUKS verwendet Geräte-Mapper-Krypta (dm-crypt ) als Kernelmodul, um die Verschlüsselung auf Blockgeräteebene zu handhaben.

Es gibt verschiedene Front-End-Tools, die zum Verschlüsseln von Linux-Partitionen entwickelt wurden, unabhängig davon, ob es sich um einfache Partitionen oder logische Volumes (LVs) handelt. In diesem Tutorial werden wir diese Tools untersuchen und demonstrieren, wie die Festplattenverschlüsselung konfiguriert wird. Ich habe eine 10-GB-Festplatte erstellt (/dev/vdb ) zur Verwendung in diesem Tutorial.

Installieren der Tools

Beginnen wir mit der Installation der entsprechenden Tools zur Konfiguration der Verschlüsselung:

dnf install -y cryptsetup parted

Das cryptsetup Paket stellt das cryptsetup bereit Befehl, mit dem wir die Verschlüsselung konfigurieren, während der parted Paket stellt den parted bereit Befehl zum Konfigurieren der Partition.

Partition erstellen

Ausführen von lsblk Befehl zeigt Ihr aktuelles Setup:

[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 

Wir können ein ganzes Blockgerät wie /dev/vdb verschlüsseln , aber das Erstellen einer Partition bietet mehr Flexibilität, da wir später weitere Partitionen hinzufügen können.

Jetzt führen wir die folgenden Befehle aus, um eine zu verschlüsselnde Partition zu erstellen:

[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

Beim Ausführen von lsblk wieder sehen wir, dass dev/vdb1 Partition wurde hinzugefügt:

[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 

Formatierung des Volumes mit LUKS

Der folgende Prozess verschlüsselt dev/vdb1 . Um fortzufahren, müssen Sie YES eingeben in Großbuchstaben und geben Sie das Passwort zweimal ein:

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

Dann brauchen wir ein Ziel, um das verschlüsselte Volume zu öffnen. Ich habe mybackup verwendet als mein Ziel, aber dieses Ziel kann einen beliebigen Namen haben:

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

Ausführen von lsblk Wieder einmal sehen wir:

[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

Wir können auch mybackup sehen Zuordnung des verschlüsselten Volumes:

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

Erstellen eines Dateisystems

Da wir jetzt auf das verschlüsselte Volume zugreifen können, müssen wir es formatieren, bevor wir Daten darauf speichern können. Sie können zwischen verschiedenen Dateisystemtypen wählen, wie xfs (der Standard bei Red Hat Enterprise Linux 8), ext3, ext4 usw. Der Einfachheit halber verwenden wir xfs als Dateisystemtyp:

[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

Mount-Punkt und Verzeichnis erstellen

Um Daten in das verschlüsselte Dateisystem zu schreiben, müssen wir es zuerst einhängen. Ich habe /mnt/my_encrypted_backup gewählt um der Einhängepunkt für meine Daten zu sein:

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

Dann führen wir den mount aus Befehl:

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

Hier erhalten wir eine Security-Enhanced Linux (SELinux)-Warnung. Wir müssen den SELinux-Sicherheitskontext des Einhängepunkts umbenennen:

[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

mount ausführen Der Befehl zeigt erneut, dass die Warnung weg ist:

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

Ausführen von lsblk erzeugt wieder die folgende Ausgabe:

[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

LUKS-Details abrufen

Wir können jetzt die LUKS-Header-Informationen, den Datensegmentabschnitt, die verwendeten Schlüsselsteckplätze usw. ausgeben:

[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 

Hinzufügen einer Schlüsseldatei und automatisches Mounten

Das automatische Mounten des LUKS-verschlüsselten Dateisystems hat Auswirkungen auf die Sicherheit. Für Laptop-Benutzer ist dies keine kluge Wahl. Wenn Ihr Gerät gestohlen wird, werden auch Ihre Daten gestohlen, die in der verschlüsselten Partition gespeichert waren.

Ungeachtet der oben erwähnten Sicherheitsaspekte erfahren Sie hier, wie Sie das automatische Mounten einrichten. Erstellen Sie zunächst das entsprechende Verzeichnis zum Speichern der Schlüsseldatei:

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

Fügen Sie dann den Schlüssel mit cryptsetup hinzu Dienstprogramm:

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

Als nächstes müssen wir den SELinux-Kontext wiederherstellen:

[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

Zuvor haben wir das verschlüsselte Dateisystem geöffnet und manuell gemountet. Jetzt müssen wir sehen, ob wir dasselbe mit der Automatisierung tun können. Da unser Dateisystem bereits gemountet ist, müssen wir zuerst umount (unmounten) es:

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

Versuchen wir, die verschlüsselte Partition über die Befehlszeile zu öffnen, indem wir die Datei als Schlüssel verwenden:

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

Key slot 1 unlocked.
Command successful.

Als nächstes müssen wir /etc/crypttab konfigurieren und /etc/fstab um die Festplatte beim Booten zu mounten. Wir brauchen zuerst die UUID für /dev/vdb1 (nicht /dev/mapper/mybackup ), die wie folgt abgerufen werden kann:

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

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

Tragen Sie nun folgende Zeile in /etc/crypttab ein damit wir unser verschlüsseltes Dateisystem automatisch öffnen können:

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

Nachdem wir so viel erledigt haben, können wir jetzt /etc/fstab konfigurieren . Hängen Sie die folgende Zeile (in Fettdruck) an diese Datei an:

[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**

Und schließlich können wir testen, ob Automount funktioniert, ohne den Rechner neu zu starten, indem wir mount -a verwenden :

[root@rhel8 ~]# mount -av

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

In diesem Fall /mnt/my_encrypted_backup wurde erfolgreich montiert. Starten Sie nun das System neu und vergewissern Sie sich, dass die automatische Einbindung auch beim Neustart funktioniert.

Abschließende Gedanken

Es gibt andere Optionen, die für cryptsetup bereitgestellt werden können , und jeder hat Kompromisse, wenn es um Geschwindigkeit und ein sichereres Dateisystem geht. Erkunden Sie die Optionen und wählen Sie, was für Ihre Situation am besten geeignet ist.


Linux
  1. Lokalen Speicher in Linux mit Stratis konfigurieren

  2. Linux – Speicherplatz vor der 1. Partition des USB-Sticks als Luks Key verwenden?

  3. OpenVPN-Server auf Rocky Linux 8 einrichten

  4. Erste Schritte mit SSH unter Linux

  5. So richten Sie passwortloses SSH unter Linux ein

So richten Sie das neueste Oracle OpenJDK unter Linux ein

Richten Sie die lokale WordPress-Entwicklungsumgebung unter Linux ein

So richten Sie Chrooted SFTP unter Linux ein

Installieren und Konfigurieren von Jenkins unter Linux

So erstellen Sie eine SSH-Schlüssel-Passphrase unter Linux

So richten Sie WireGuard VPN unter Linux ein