Video failed to load

Enrypting Disk in Linux using LUKS

835 words
4 minutes
Enrypting Disk in Linux using LUKS

Kali ini kita akan belajar cara meng-encypt disk/drive di linux menggunakan LUKS (Linux Unified Key Format). LUKS adalah format enkripsi yang umum digunakan di linux. Salah satu tool yang dapat digunakan untuk mengenkripsi disk/drive adalah cryptsetup1.

Installation#

Karena merupakan tool standard, cryptsetup biasanya sudah terpasang ketika melakukan instalasi linux, sebab cryptsetup memang langsung menggunakan modul default bawaan kernel Linux, yaitu dm-crypt2. Kita bisa memeriksa modul tersebut dengan perintah berikut:

Terminal window
lsmod | grep crypt

dm-crypt Linux kernel module used by cryptsetup
dm-crypt Linux kernel module used by cryptsetup

Tapi, jika ternyata belum terpasang, silakan install terlebih dahulu:

DistroCommand
Debian/Ubuntusudo apt install cryptsetup
Arch Linuxsudo pacman -Sy cryptsetup
Opensusesudo zypper install cryptsetup
Fedorasudo dnf install cryptsetup

The Initial Setup#

Sebelum melakukan proses enkripsi, beberapa hal berikut perlu diperhatikan:

DANGER
  • Back up data-data penting terlebih dahulu!
  • Catat passphrase yang digunakan agar tidak lupa!

Berikut adalah langkah-langkah enkripsi dengan cryptsetup:

1. Mengengkripsi partisi#

Pertama, kita perlu mengenkripsi partisi yang terdapat di sebuah disk/drive terlebih dahulu. Artinya, sebuah disk/drive mungkin punya lebih dari satu partisi dan kita tidak harus mengenkripsi semua partisinya.

Berikut perintahnya:

Terminal window
sudo cryptsetup luksFormat /dev/sda3
INFO

Keterangan:

  • /dev/sda3 adalah partisi yang akan saya encrypt. Silakan disesuaikan.
  • Partisi yang ada dapat dilihat dengan perintah lsblk.

Setelah itu, akan muncul 2 prompt:

  1. Konfirmasi untuk mengenkripsi partisi, kita bisa ketik YES jika ingin melanjutkan.
  2. Passphrase atau password yang digunakan untuk meng-encrypt dan men-decrypt. Gunakan passphrase yang tidak mudah ditebak tapi tidak mudah dilupakan.

Encrypting a partition
Encrypting a partition

2. Membuka partisi 🔑#

Sekarang, kita akan membuka partisi sebelumnya yang sudah diformat dengan LUKS:

Terminal window
sudo cryptsetup open /dev/sda3 test
INFO

Keterangan:

  • test adalah nama partisi yang terenkripsi tadi. Nama ini hanya sementara. Jadi, bisa diganti ketika kita membuka partisi ini lagi nanti.

Sekarang, bandingkan partisi yang belum dibuka dengan yang sudah dibuka dengan lsblk. Sekarang, kita memiliki sebuah partisi baru yang ter-decrypt yang bernama “test” di /dev/sda3. :

Opening up the encrypted partition
Opening up the encrypted partition

Hal penting lainnya yang perlu dicatat juga di tahap ini adalah bahwa partisi yang sudah didekripsi akan muncul di /dev/mapper.

3. Memformat filesystem#

Berikutnya, kita perlu membuat format filesystem baru ke partisi ini.3 Kita hanya perlu melakukan ini di awal saja:

Terminal window
sudo mkfs.ext4 /dev/mapper/test
INFO

Keterangan:

  • mkfs.ext4 adalah nama filesystem standard untuk linux. Silakan disesuaikan dengan kebutuhan.
  • /dev/mapper/test adalah nama partisi terdekripsi yang sudah saya buat sebelunnya.

Perhatikan bahwa formatting filesystem ini kita lakukan ke /dev/mapper/test, bukan lagi ke /dev/sda3!

Creating partition's filesystem
Creating partition's filesystem

4. Mounting partisi 🛄#

Langkah terakhir sebelum partisi ini dapat digunakan adalah me-mounting-nya ke direktori tertentu.

Terminal window
sudo mount /dev/mapper/test /mnt
INFO

Keterangan:

  • /dev/mapper/test adalah nama partisi yang sudah dibuat sebelumnya.
  • /mnt adalah lokasi yang saya inginkan sebagai tempat partisi /dev/mapper/test dipasang.

Mounting partition
Mounting partition

Seperti terlihat pada tangkapan layar, partisi /dev/mapper/test sudah terpasang ke /mnt.

Sekarang, kita sudah bisa menggunakan (mengisinya dengan file & folder) partisi tersebut. Misalnya, saya akan mengisinya dengan sebuah direktori/folder bernama “secret-dir” dan sebuah file teks bernama “secret-file.txt” di dalamnya:

Creating a folder and a file
Creating a folder and a file

5. Unmount partisi 🛅#

Setelah selesai menggunakan partisi tersebut, kita bisa meng-unmount-nya:

Terminal window
sudo umount /mnt
INFO

Keterangan:

  • /mnt adalah tempat dimana partisi tadi terpasang.

Unmounting partition
Unmounting partition

Seperti terlihat, partisi /dev/mapper/test sudah terlepas dari /mnt.

6. Menutup partisi 🔐#

Ketika sudah tidak digunakan lagi, pastikan kita menutup partisi tersebut agar ketika misalnya komputer atau disk/drive kita di-hack, data-data dalam partisi kita akan tetap aman karena kita sudah kembali mengenkripsinya kembali.

Terminal window
sudo cryptsetup close test

Dan partisi tadi /dev/sda3 sudah ter-encrypt kembali.

Close the partition
Close the partition

SELESAI!!!

The End#

Sampai di tahap ini, kita telah berhasil membuat enkripsi pada sebuah partisi di disk/drive. Jika kita ingin menggunakan partisi tersebut lagi, kita hanya perlu men-decrypt partisinya dan me-mounting-nya ke suatu direktori (langkah 2 & 4), dan jika sudah selesai, kita bisa kembali meng-unmount dan meng-encrypt-nya lagi (langkah 5 & 6).

Misalnya, sekarang saya ingin menghapus file “secret-file.txt” yang sudah dibuat sebelumnya dan menggantinya dengan file baru bernama “secrets.txt”. Berikut adalah langkah-langkahnya:

The cycle
The cycle

Additional Info: POC#

Kalau kita mencoba untuk me-mounting partisi /dev/sda3 secara manual seperti biasa, tentu saja tidak akan berhasil karena kita sudah mengubah filesystem partisi tersebut ke format LUKS dan tentu saja karena sudah di-encrypt:

POC
POC

Jadi, kalau kita ingin menggunakan partisi tersebut, kita harus melakukan 4 prosedur yang sudah dijelaskan sebelumnya.

Advanced Use#

Beberapa tambahan yang menurut saya penting (terutama karena saya sudah mengalaminya):

Mengubah ukuran partisi#

Jika kita ingin mengubah partisi yang terenkripsi tersebut (memperbesar/mengecilkan kapasitasnya), berikut adalah langkah-langkahnya:

1. Edit partisi

  • Menghapus partisi terenkripsi (saya menggunakan cfdisk).
  • Menambah partisi baru dengan ukuran yang lebih sesuai.
  • Otomatis, format LUKS-nya akan terbawa, jadi kita tidak perlu format ulang.

2. Resize container LUKS

  • Buka partisi terenkripsi (lihat Cara membuka partisi).
  • Pastikan sudah terdaftar di “mapper” (/dev/mapper/<nama>).
  • Resize container LUKS tersebut dengan perintah
Terminal window
sudo cryptsetup resize <nama_mapper>

3. Resize filesystem

  • Resize filesystem-nya (kalau ext4):
Terminal window
sudo resize2fs /dev/mapper/<nama_mapper>

Notes:

Terminal window
Physical partition (/dev/nvme0n1p3) → 20 GB
└── LUKS container (/dev/mapper/secret) → 20 GB # sudo cryptsetup resize <nama_mapper>
└── ext4 filesystem 5 GB # sudo resize2fs /dev/mapper/cryptdata

Untuk memastikan sudah berubah, bisa gunakan salah satu dari perintah ini:

Terminal window
lsblk -f
df -h

Menghapus partisi#

Jika seandainya (suatu hari nanti), Anda sudah tidak memerlukan partisi LUKS itu lagi, Anda mungkin akan menghapus partisi tersebut. Tapi masalahnya, secara default, format file system-nya LUKS tidak otomatis terhapus jika partisinya dihapus. Artinya, meskipun partisi tersebut terhapus, tapi ketika Anda akan menggunakan “blok” partisi yang dulu terdapat format LUKS di dalamnya ketika membuat partisi baru, otomatis file system-nya akan langsung menjadi LUKS lagi.

Oleh karena itu, sebelum menghapus partisi, alangkah baiknya menghapus format file system-nya terlebih dahulu:

Terminal window
sudo wipefs -a /dev/<nama_partisi>

menghapus format file system
menghapus format file system

Baru kemudian boleh dihapus, bisa dengan cfdisk atau tools partisi lainnya.


Artikel ini di-inspirasi oleh video Youtube berikut:

Footnotes#

  1. https://wiki.archlinux.org/title/Dm-crypt/Device_encryption

  2. https://docs.kernel.org/admin-guide/device-mapper/dm-crypt.html

  3. https://wiki.archlinux.org/title/File_systems

Support & Share

If this article helped you, please share or support!

Sponsor
Enrypting Disk in Linux using LUKS
https://shangdi.github.io/posts/tech/luks/
Author
Wildan
Published at
2025-02-02

Comments

Profile Image of the Author
Wildan
Welcome! Wildan-desu.
Announcemenet
Welcome to my blog! Enjoy exploring ~
Categories
Tags
Latest Moments
Site Statistics
Posts
111
Categories
90
Tags
316
Total Words
576,048
Running Days
0 days
Last Activity
0 days ago
Site Info
Build Platform
GitHub Actions
Blog Version
Firefly v6.15.10
License
CC BY-NC-SA 4.0