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.