Amankan seluruh data Ubuntu
Ini membutuhkan gue research 3 hari penuh. Jadi gue akan compile semuanya di sini supaya membantu orang Indonesia kalo mao membuat encrypted LVM lagi lebih mudah…
Cerita Awal
Server gue membutuhkan enkripsi data sehingga engga ada orang yang bisa baca datanya. Masalahnya cuma satu, server ini engga boleh ada yang pegang, sehingga kalo menggunakan default nya Ubuntu yang menggunakan passphrase itu engga bisa digunakan. Sehingga gue memilih untuk menggunakan USB dongle.
Membuat encrypted partition
Tutorial untuk membuat partisi linux yang di enkripsi itu ada banyak. Tapi gue gunakan yang paling gampang. Gunakan salah satu dari Ubuntu alternet installation disk untuk client. Kalo untuk server udah otomatis ada. Pada saat ditanya mao install pake apa pilih “Guided Encrypted LVM”. Terus selanjutnya install seperti biasa, maka nanti ubuntu secara otomatis membuat LVM untuk enkripsi swap dan root dalam satu volume group yang sama. Sehingga anda hanya memerlukan satu passphrase saja.
Setelah instalasi selesai, jalankan ubuntu seperti biasa, dan kita akan mulai merubah dari passphrase ke arah usb key
Membuat USB key
Anggep aja USB anda ada di /dev/sdb. Maka ketik perintah
dd if=/dev/urandom of=/dev/sdb
Ini akan mengisi seluruh USB anda dengan random data yang akan kita gunakan sebagai key. Tentu saja anda bisa menggunakan cara apa saja untuk mengisi random garbage
Ambil 256 byte pertama dari USB
Ketik
dd if=/dev/sdb of=/home/rickyok/foo.key bs=1 count=256
Kita akan gunakan ini key ini sementara.
Tambahkan key yang baru ke LUKS container
cryptsetup luksAddKey /dev/sda1 /home/rickyok/foo.key
Tentu saja /dev/sda1 itu adalah disk yang di enkripsi oleh ubuntu, kalo tidak tau disk mana yang di encrypt. Anda bisa check di bagian /etc/crypttab
Sekarang cari id usb anda dengan cara mengetik
ls -l /dev/disk/by-id/ | grep sdb lrwxrwxrwx 1 root root 9 2008-12-04 21:31 usb-LG_XTICK_AAAAAAAAAAAAAAAAA-0:0 -> ../../sdc
Id dari USB anda adalah “usb-LG_XTICK_AAAAAAAAAAAAAAAAA-0:0″ catat ID tersebut
Buat helper script untuk mengeluarkan 256 byte data tersebut dari USB
Letakkan file tersebut di /usr/local/sbin/dd-luks-key.sh
#!/bin/sh # Script: /usr/local/sbin/dd-luks-key.sh if [ -e $1 ] then dd if=$1 bs=1 count=256 fi
Ganti Crypttab
Ganti /etc/crypttab jadi nilai yang baru
# Data lama, yang ini nanya password # sda1_crypt /dev/disk/by-uuid/aaaaaaaa-bbbb-cccc-dddd-eeeeeeeeeeee none luks # Ini yang baru, yang ini pake USB sda1_crypt /dev/disk/by-uuid/aaaaaaaa-bbbb-cccc-dddd-eeeeeeeeeeee /dev/disk/by-id/usb-LG_XTICK_AAAAAAAAAAAAAAAAA-0\:0 luks,keyscript=/usr/local/sbin/dd-luks-key.sh
Tentu saja ganti ID USB anda dengan ID yang anda sudah catat sebelumnya.
Update initramfs
Karena anda baru sana menambahkan satu script baru untuk membaca, harus dicompile dulu script itu supaya bisa masuk ke initrd.img ubuntu anda. Ketik perintah ini
# update-initramfsRestart dan berdoa
Restart dan berdoa tadi engga ada yang salah ketik ![]()
Sekarang harusnya anda sudah bisa masuk Ubuntu tanpa mengetik password. Biasakan untuk mencabut USB dan menyimpannya jauh2 dari komputer setelah komputer selesai booting.
Kalo anda sudah puas dengan hasilnya. Anda bisa menghapus LUKS key slot 0 ( yang pake password tadi ) supaya engga ada orang yang bisa buka disk anda dengan password sebelumnya.
# cryptsetup luksKillSlot /dev/sda1 0Cerita akhir
Sekarang komputer anda sudah aman dari tangan-tangan jahil selama mereka tidak mempunyai USB tersebut, bahkan NSA saja akan kesulitan untuk membongkarnya. Kalo ada apa2, tinggal masukkan saja USB anda ke dalam microwave ahuhauhauh… (atau injek aja yah, susah2 amat)
Note :
Di beberapa negara, menggunakan strong encryption itu adalah pelanggaran hukum. Jadi sebelum menggunakan, check dulu ya ^^
Reference
http://binblog.wordpress.com/2008/12/04/using-a-usb-key-for-the-luks-passphrase/
http://westhoffswelt.de/blog/creating_a_transparently_encrypted_root_filesystem.html
http://blog.gnist.org/article.php?story=EncryptedSwapAndHomeUbuntu