GNU/Linux >> Belajar Linux >  >> Cent OS

Enkripsi Disk Menggunakan Layanan Kunci Berbasis Jaringan (NBDE) di CentOS/RHEL 8

Pertanyaan :Bagaimana cara membuat sistem file XFS terenkripsi yang secara otomatis dibuka kuncinya saat boot menggunakan clevis (klien) dan tang (server)?

Red Hat telah menyertakan enkripsi disk selama bertahun-tahun dengan Linux Unified Key Setup-on-disk-format (LUKS). Solusi ini mudah diterapkan dan dikonfigurasi untuk kebutuhan enkripsi Anda, tetapi manajemen dan kepraktisan manajemen kuncinya sangat buruk untuk server. Ini membutuhkan frasa sandi saat boot atau waktu pemasangan yang harus dimasukkan secara manual. Ini membuat solusi tersebut memusingkan bagi administrator sistem.

Dimulai pada RHEL 7.4, dengan dukungan penuh pada RHEL 7.5, Red Hat telah mengimplementasikan komponen tambahan yang dapat dimanfaatkan untuk mengaktifkan disk LUKS dari jarak jauh. Ini disebut Enkripsi Disk Terikat Jaringan (NBDE).

Enkripsi Disk Terikat Jaringan (NBDE) adalah:

  • Linux Unified Key Setup (LUKS) adalah standar enkripsi disk.
  • Cryptsetup mengonfigurasi enkripsi berbasis disk dan menyertakan dukungan untuk LUKS
  • Tang adalah layanan jaringan yang menyediakan layanan kriptografi melalui HTTP
  • Clevis adalah kerangka kerja enkripsi. Clevis dapat menggunakan kunci yang disediakan oleh Tang sebagai frasa sandi untuk membuka kunci volume LUKS
  • Klien, clevis, harus CentOS/RHEL 8, karena clevis di CentOS/RHEL 7 memiliki fungsionalitas terbatas dan memerlukan serangkaian perintah berbeda yang tidak tercakup dalam postingan ini.
  • Server, tang, dapat dijalankan di CentOS/RHEL 7 atau 8

Siapkan Server Tang

1. Instal RPM:

# dnf install -y tang

2. Izinkan port yang diperlukan melalui firewall:

# firewall-cmd --add-service=http --permanent
# firewall-cmd --reload

3. Aktifkan layanan:

# systemctl enable --now tangd.socket

Siapkan Klien Clevis

Buat sistem file terenkripsi

1. Instal paket yang diperlukan pada klien:

# dnf install -y cryptsetup clevis-systemd clevis-luks

2. Membuat disk terenkripsi di /dev/xvdc:

Catatan :Pastikan xvdc adalah drive kosong karena semua data di dalamnya akan dihapus.
# cryptsetup luksFormat --type luks2 --cipher aes-xts-plain64 --key-size 512 --hash sha256 --use-random /dev/xvdc
WARNING!
========
This will overwrite data on /dev/xvdc irrevocably.
Are you sure? (Type uppercase yes): YES
Enter passphrase for /dev/xvdc:
Verify passphrase:

3. Buka kunci perangkat blok:

# cryptsetup --verbose luksOpen /dev/xvdc demodisk
Enter passphrase for /dev/xvdc:
Key slot 0 unlocked.
Command successful.

4. Buat sistem file pada disk terenkripsi:

# mkfs.xfs /dev/mapper/demodisk
meta-data=/dev/mapper/demodisk isize=512 agcount=4, agsize=326656 blks
= sectsz=512 attr=2, projid32bit=1
= crc=1 finobt=1, sparse=1, rmapbt=0
= reflink=1
data = bsize=4096 blocks=1306624, 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

5. Identifikasi UUID dari sistem file baru:

# blkid -s UUID /dev/mapper/demodisk
/dev/mapper/demodisk: UUID="24f9bfe9-1f6d-491d-8fa2-eab946464166"

6. Buat entri fstab untuk sistem file:

# echo "UUID=24f9bfe9-1f6d-491d-8fa2-eab946464166 /encrypted xfs defaults 0 0" | sudo tee -a /etc/fstab
UUID=24f9bfe9-1f6d-491d-8fa2-eab946464166 /encrypted xfs defaults 0 0

7. Pasang sistem file:

# mkdir /encrypted
# mount /encrypted

Tambahkan kunci jarak jauh ke perangkat terenkripsi

1. Lihat kunci:

# cryptsetup luksDump /dev/xvdc
LUKS header information
Version: 2
Epoch: 3
Metadata area: 16384 [bytes]
Keyslots area: 16744448 [bytes]
UUID: 47e0d1c3-d74b-41f0-9bc7-5ea367e9cb26
Label: (no label)
Subsystem: (no subsystem)
Flags: (no flags)
Data segments:
0: crypt
offset: 16777216 [bytes]
length: (whole device)
cipher: aes-xts-plain64
sector: 512 [bytes]

Keyslots:
0: luks2
Key: 512 bits
Priority: normal
Cipher: aes-xts-plain64
Cipher key: 512 bits
PBKDF: argon2i
Time cost: 4
Memory: 399588
Threads: 4
Salt: 0d 75 99 50 22 e2 2a 93 82 51 fc 49 6f 54 61 fe
10 b6 24 62 21 2e 07 2b 04 0a 56 c8 03 23 6f 8f
AF stripes: 4000
AF hash: sha256
Area offset:32768 [bytes]
Area length:258048 [bytes]
Digest ID: 0
Tokens:
Digests:
0: pbkdf2
Hash: sha256
Iterations: 30284
Salt: de a0 3f 92 e1 c7 1d 5e 0e 52 65 37 19 84 2b 3c
46 2a ba 56 77 25 78 c3 27 fa 5b 07 e1 9a 25 24
Digest: 5b 95 93 af 0e a9 8d 24 cb 35 1e 77 e5 9f 15 85
eb d1 53 85 5b e4 10 2a 68 d0 11 6b 9b 71 f4 05

2. Tambahkan kunci jarak jauh:

# clevis luks bind -d /dev/xvdc tang '{"url":"http://"}'
The advertisement contains the following signing keys:

KlbbdbNpdMrVwrk6hZ1wCCeabOY

Do you wish to trust these keys? [ynYN] Y
Enter existing LUKS password:

3. Tunjukkan ada slot kunci baru yang digunakan oleh Clevis di slot 1:

# cryptsetup luksDump /dev/xvdc
LUKS header information
Version: 2
Epoch: 5
Metadata area: 16384 [bytes]
Keyslots area: 16744448 [bytes]
UUID: 47e0d1c3-d74b-41f0-9bc7-5ea367e9cb26
Label: (no label)
Subsystem: (no subsystem)
Flags: (no flags)

Data segments:
0: crypt
offset: 16777216 [bytes]
length: (whole device)
cipher: aes-xts-plain64
sector: 512 [bytes]

Keyslots:
0: luks2
Key: 512 bits
Priority: normal
Cipher: aes-xts-plain64
Cipher key: 512 bits
PBKDF: argon2i
Time cost: 4
Memory: 399588
Threads: 4
Salt: 0d 75 99 50 22 e2 2a 93 82 51 fc 49 6f 54 61 fe
10 b6 24 62 21 2e 07 2b 04 0a 56 c8 03 23 6f 8f
AF stripes: 4000
AF hash: sha256
Area offset:32768 [bytes]
Area length:258048 [bytes]
Digest ID: 0
1: luks2
Key: 512 bits
Priority: normal
Cipher: aes-xts-plain64
Cipher key: 512 bits
PBKDF: argon2i
Time cost: 4
Memory: 508554
Threads: 4
Salt: 21 c8 91 58 22 9f 50 83 77 6f fe 12 0b 3a 66 3c
d2 47 70 88 45 70 5e f1 c1 1e d0 e1 8f 96 97 ce
AF stripes: 4000
AF hash: sha256
Area offset:290816 [bytes]
Area length:258048 [bytes]
Digest ID: 0
Tokens:
0: clevis
Keyslot: 1
Digests:
0: pbkdf2
Hash: sha256
Iterations: 30284
Salt: de a0 3f 92 e1 c7 1d 5e 0e 52 65 37 19 84 2b 3c
46 2a ba 56 77 25 78 c3 27 fa 5b 07 e1 9a 25 24
Digest: 5b 95 93 af 0e a9 8d 24 cb 35 1e 77 e5 9f 15 85
eb d1 53 85 5b e4 10 2a 68 d0 11 6b 9b 71 f4 05

Pasang sistem file terenkripsi saat boot

1. Identifikasi UUID perangkat blok untuk digunakan nanti:

# blkid -s UUID /dev/xvdc
/dev/xvdc: UUID="47e0d1c3-d74b-41f0-9bc7-5ea367e9cb26"

2. Aktifkan layanan menggunakan UUID yang ditemukan untuk ‘/dev/xvdc’:

# systemctl enable [email protected]
Created symlink /etc/systemd/system/basic.target.wants/[email protected] → /usr/lib/systemd/system/[email protected].

3. Buka kunci perangkat blok saat boot:

# echo "encrypteddisk UUID=47e0d1c3-d74b-41f0-9bc7-5ea367e9cb26 - _netdev" | sudo tee -a /etc/crypttab
encrypteddisk UUID=47e0d1c3-d74b-41f0-9bc7-5ea367e9cb26 - _netdev

4. Pasang sistem file nanti di boot:

# vi /etc/fstab

ubah entri:

UUID=24f9bfe9-1f6d-491d-8fa2-eab946464166 /encrypted xfs defaults 0 0

ke:

/dev/mapper/encrypteddisk /encrypted xfs _netdev 0 0

5. Mulai ulang server dan verifikasi fungsionalitas:

# reboot
# df -h
Filesystem Size Used Avail Use% Mounted on
devtmpfs 1.8G 0 1.8G 0% /dev
tmpfs 1.8G 0 1.8G 0% /dev/shm
tmpfs 1.8G 8.5M 1.8G 1% /run
tmpfs 1.8G 0 1.8G 0% /sys/fs/cgroup
/dev/mapper/ol_dhcp-root 22G 1.6G 20G 8% /
/dev/xvda1 1014M 221M 794M 22% /boot
tmpfs 365M 0 365M 0% /run/user/0
/dev/mapper/encrypteddisk 5.0G 68M 5.0G 2% /encrypted

Opsional:Hapus frasa sandi yang diketahui

Anda dapat menghapus frasa sandi yang diketahui dari slot 0 dan mengamanatkan penggunaan server tang. Jika server tang tidak dapat dijangkau, disk tidak dapat dibuka dan sistem file tidak dapat diakses.

1. Hapus frasa sandi:

# cryptsetup --verbose luksRemoveKey /dev/xvdc
Enter passphrase to be deleted:
Key slot 0 unlocked.
Keyslot 0 is selected for deletion.
Key slot 0 removed.
Command successful.

2. Tunjukkan bahwa sekarang hanya ada slot kunci Clevis:

# cryptsetup --verbose luksRemoveKey /dev/xvdc
Enter passphrase to be deleted:
Key slot 0 unlocked.
Keyslot 0 is selected for deletion.
Key slot 0 removed.
Command successful.
# cryptsetup luksDump /dev/xvdc
LUKS header information
Version: 2
Epoch: 6
Metadata area: 16384 [bytes]
Keyslots area: 16744448 [bytes]
UUID: 47e0d1c3-d74b-41f0-9bc7-5ea367e9cb26
Label: (no label)
Subsystem: (no subsystem)
Flags: (no flags)

Data segments:
0: crypt
offset: 16777216 [bytes]
length: (whole device)
cipher: aes-xts-plain64
sector: 512 [bytes]

Keyslots:
1: luks2 
Key: 512 bits
Priority: normal
Cipher: aes-xts-plain64
Cipher key: 512 bits
PBKDF: argon2i
Time cost: 4
Memory: 508554
Threads: 4
Salt: 21 c8 91 58 22 9f 50 83 77 6f fe 12 0b 3a 66 3c
d2 47 70 88 45 70 5e f1 c1 1e d0 e1 8f 96 97 ce
AF stripes: 4000
AF hash: sha256
Area offset:290816 [bytes]
Area length:258048 [bytes]
Digest ID: 0
Tokens:
0: clevis
Keyslot: 1
Digests:
0: pbkdf2
Hash: sha256
Iterations: 30284
Salt: de a0 3f 92 e1 c7 1d 5e 0e 52 65 37 19 84 2b 3c
46 2a ba 56 77 25 78 c3 27 fa 5b 07 e1 9a 25 24
Digest: 5b 95 93 af 0e a9 8d 24 cb 35 1e 77 e5 9f 15 85
eb d1 53 85 5b e4 10 2a 68 d0 11 6b 9b 71 f4 05

3. Reboot dan verifikasi fungsionalitas:

# reboot
# df -h
Filesystem Size Used Avail Use% Mounted on
devtmpfs 1.8G 0 1.8G 0% /dev
tmpfs 1.8G 0 1.8G 0% /dev/shm
tmpfs 1.8G 8.5M 1.8G 1% /run
tmpfs 1.8G 0 1.8G 0% /sys/fs/cgroup
/dev/mapper/ol_dhcp-root 22G 1.6G 20G 8% /
/dev/xvda1 1014M 221M 794M 22% /boot
/dev/mapper/encrypteddisk 5.0G 68M 5.0G 2% /encrypted
tmpfs 365M 0 365M 0% /run/user/0


Cent OS
  1. Nonaktifkan reboot menggunakan Ctrl-Alt-Del Keys di RHEL / CentOS

  2. Cara Membuat Jembatan Jaringan di CentOS 7 / RHEL 7

  3. CentOS / RHEL 7 :Cara mengubah nama Antarmuka Jaringan

  1. CentOS / RHEL 7 :Cara membuat Network Bonding (NIC teaming) menggunakan nmcli

  2. Konfigurasi Nama NIC Persisten dari Adaptor Jaringan di CentOS/RHEL menggunakan Aturan udev

  3. Tidak Dapat Memulai Layanan RDMA di CentOS/RHEL 7

  1. CentOS / RHEL 7:Mengonfigurasi alamat IP statis menggunakan file konfigurasi antarmuka jaringan

  2. Cara menonaktifkan NetworkManager di CentOS / RHEL 7

  3. Cara membuat daftar hitam disk lokal menggunakan arahan "find_multipaths" di CentOS/RHEL 6