GNU/Linux >> Belajar Linux >  >> Linux

Mengonfigurasi LUKS:Pengaturan Kunci Terpadu Linux

Menurut Wikipedia, Linux Unified Key Setup (LUKS) adalah spesifikasi enkripsi disk yang dibuat oleh Clemens Fruhwirth pada tahun 2004 dan awalnya ditujukan untuk Linux. LUKS menggunakan crypt mapper perangkat (dm-crypt ) sebagai modul kernel untuk menangani enkripsi pada tingkat perangkat blok.

Ada berbagai alat front-end yang dikembangkan untuk mengenkripsi partisi Linux, apakah itu partisi biasa atau Volume Logika (LV). Dalam tutorial ini, kita akan menjelajahi alat-alat ini dan mendemonstrasikan cara mengonfigurasi enkripsi disk. Saya telah membuat disk 10 GB (/dev/vdb ) untuk digunakan selama tutorial ini.

Memasang alat

Mari kita mulai dengan menginstal alat yang sesuai untuk mengonfigurasi enkripsi:

dnf install -y cryptsetup parted

cryptsetup paket menyediakan cryptsetup perintah, yang akan kita gunakan untuk mengonfigurasi enkripsi, sedangkan perintah parted paket menyediakan parted perintah untuk mengkonfigurasi partisi.

Membuat partisi

Menjalankan lsblk perintah menunjukkan pengaturan Anda saat ini:

[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 

Kami dapat mengenkripsi seluruh perangkat blok seperti /dev/vdb , tetapi membuat partisi menawarkan lebih banyak fleksibilitas karena kita dapat menambahkan partisi lain nanti.

Sekarang kita jalankan perintah berikut untuk membuat partisi yang akan dienkripsi:

[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

Saat menjalankan lsblk lagi, kita melihat bahwa dev/vdb1 partisi telah ditambahkan:

[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 

Memformat volume dengan LUKS

Proses berikut mengenkripsi dev/vdb1 . Untuk melanjutkan, Anda harus memasukkan YES dalam huruf kapital dan berikan kata sandi dua kali:

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

Kemudian, kita membutuhkan target untuk membuka volume terenkripsi. Saya menggunakan mybackup sebagai target saya, tetapi target ini dapat dinamai apa saja:

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

Menjalankan lsblk sekali lagi, kita melihat:

[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

Kita juga bisa melihat mybackup pemetaan volume terenkripsi:

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

Membuat sistem file

Karena sekarang kita dapat mengakses volume terenkripsi, kita perlu memformatnya sebelum kita dapat menyimpan data di dalamnya. Anda dapat memilih di antara berbagai jenis sistem file, seperti xfs (default pada Red Hat Enterprise Linux 8), ext3, ext4, dll. Demi kesederhanaan, kami akan menggunakan xfs sebagai jenis sistem file:

[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

Membuat titik mount dan direktori

Untuk menulis data pada sistem file terenkripsi, kita perlu memasangnya terlebih dahulu. Saya memilih /mnt/my_encrypted_backup menjadi titik mount untuk data saya:

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

Kemudian kita jalankan mount perintah:

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

Di sini kita mendapatkan peringatan Security-Enhanced Linux (SELinux). Kita perlu memberi label ulang pada konteks keamanan SELinux titik mount:

[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

Menjalankan mount perintah sekali lagi menunjukkan bahwa peringatan itu hilang:

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

Menjalankan lsblk lagi menghasilkan output berikut:

[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

Mengambil detail LUKS

Sekarang kita dapat membuang informasi header LUKS, bagian segmen data, slot kunci yang digunakan, dll.:

[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 

Menambahkan file kunci dan automount

Memasang sistem file terenkripsi LUKS secara otomatis memiliki implikasi keamanan. Bagi pengguna laptop, melakukan hal ini bukanlah pilihan yang bijak. Jika perangkat Anda dicuri, begitu juga data Anda yang disimpan di partisi terenkripsi.

Terlepas dari implikasi keamanan yang disebutkan di atas, berikut cara mengatur pemasangan otomatis. Pertama, buat direktori yang sesuai untuk menyimpan file kunci:

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

Kemudian, tambahkan kunci menggunakan cryptsetup utilitas:

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

Selanjutnya, kita perlu mengembalikan konteks 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

Sebelumnya, kami membuka sistem file terenkripsi dan memasangnya secara manual. Sekarang kita perlu melihat apakah kita dapat melakukan hal yang sama dengan otomatisasi. Karena sistem file kita sudah terpasang, pertama-tama kita perlu umount (lepaskan) itu:

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

Mari kita coba membuka partisi terenkripsi melalui baris perintah menggunakan file sebagai kunci:

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

Key slot 1 unlocked.
Command successful.

Selanjutnya, kita perlu mengkonfigurasi /etc/crypttab dan /etc/fstab untuk memasang disk saat boot. Pertama-tama kita membutuhkan UUID untuk /dev/vdb1 (bukan /dev/mapper/mybackup ), yang dapat diambil sebagai berikut:

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

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

Sekarang masukkan baris berikut di /etc/crypttab sehingga kami dapat membuka sistem file terenkripsi kami secara otomatis:

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

Dengan banyaknya hal ini, kita sekarang dapat mengonfigurasi /etc/fstab . Tambahkan baris berikut (dalam huruf tebal) ke file ini:

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

Dan, akhirnya, kita dapat menguji untuk melihat apakah automount berfungsi tanpa me-reboot mesin, menggunakan mount -a :

[root@rhel8 ~]# mount -av

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

Dalam hal ini, /mnt/my_encrypted_backup berhasil dipasang. Sekarang, reboot sistem dan pastikan automount bekerja saat reboot juga.

Pemikiran terakhir

Ada opsi lain yang dapat disediakan untuk cryptsetup , dan masing-masing memiliki kelebihan dalam hal kecepatan dan sistem file yang lebih aman. Jelajahi opsi dan pilih yang terbaik untuk situasi Anda.


Linux
  1. Buat brankas file terenkripsi di Linux

  2. Mengonfigurasi penyimpanan lokal di Linux dengan Stratis

  3. Pemantauan keamanan di Linux dengan Tripwire

  1. Linux – Menggunakan Spasi Sebelum Partisi Pertama Usb-stick Sebagai Kunci Luks?

  2. Memulai SSH di Linux

  3. Cara Mengatur SSH Tanpa Kata Sandi di Linux

  1. Siapkan Server OpenVPN di Rocky Linux 8

  2. Mengonfigurasi Penyimpanan Blok di Server Linux

  3. Cara Mengatur kunci SSH untuk login ssh "tanpa kata sandi" di Linux