Archive

Posts Tagged ‘encryption’

Amankan seluruh data Ubuntu

November 13th, 2009

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-initramfs

Restart dan berdoa

Restart dan berdoa tadi engga ada yang salah ketik :P
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 0

Cerita 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

Share

linux ,

Extract / remake initrd image

November 13th, 2009

This is the command to to extract initrd image

To Extract

gunzip < /boot/initrd.img | cpio -i --make-directories

To Compress

find ./ | cpio -H newc -o > initrd.cpio
gzip initrd.cpio
mv initrd.cpio.gz initrd.img

Sering lupa sih, jadi masukin sini aja dech ^^

Share

linux , ,

Switch to our mobile site