Hardening FreeBSD 10.1 (1)

Dalam [1], ada 6 langkah yang harus dilakukan untuk melakukan hardening suatu sistem operasi yaitu sebagai berikut:

  1. Pengaturan awal dan patching
    • Instal kebutuhan minimum untuk sistem yang diinginkan
    • Gunakan cryptographic file system
    • Terus melakukan pembaruan sistem
  2. Nonaktifkan servis, aplikasi, dan protokol yang tidak perlu
  3. Konfigurasi pengguna, grup, dan otentikasi
    • Sediakan kontrol akses
    • Kategorisasi pengguna pada sistem, hak istimewa yang mereka punya, tipe informasi yang dapat mereka akses, serta bagaimana dan dimana mereka terdefinisikan dan terotentikasi
    • Batasi elevated privileges
    • Metode otentikasi sentralisasi atau desentralisasi
    • Akun default harus aman dan kata sandi default harus diganti dengan yang baru
    • Konfigurasikan kebijakan yang menerapkan kredensial otentikasi, terutama keamanan kata sandi
  4. Konfigurasi kontrol sumber daya
    • batasi pengguna mana yang dapat mengeksekusi program-program, terutama program yang memodifikasi status sistem
    • batasi pengguna mana yang dapat membaca atau menulis  data dalam pohon direktori tertentu
  5. Instal kontrol keamanan tambahan
    • antivirus
    • host-based firewall
    • IDS atau IPS
    • daftar-putih aplikasi
  6. Uji keamanan sistem

Untuk langkah yang pertama, sebagian sudah diterapkan ketika instalasi FreeBSD, sisanya dibahas dalam artikel ini.
Langkah kedua dibahas pada artikel bagian kedua.
Langkah ketiga dan keempat pada artikel bagian ketiga.
Langkah kelima pada artikel bagian keempat.
Langkah keenam pada artikel bagian kelima.

Menginstal Aplikasi

Dalam FreeBSD, ada dua cara untuk menginstal aplikasi yaitu menggunakan package atau menggunakan port. Kelebihan masing-masing cara tersebut diuraikan pada tabel berikut:

Packages Ports
  • Tarball package pada umumnya lebih kecil dibandingkan dengan tarball yang berisi kode sumber untuk aplikasi.
  • Packages tidak membutuhkan kompilasi.
  • Packages tidak membutuhkan pemahaman atas proses kompilasi perangkat lunak dalam FreeBSD.
  • Packages biasanya dikompilasi dengan opsi-opsi yang standar. Sedangkan dengan melakukan kompilasi dari port, kita bisa mengubah opsi-opsi kompilasi.
  • Beberapa aplikasi memiliki opsi-opsi kompilasi terkait pada fitur-fitur mana yang diinstal.
  • Beberapa perangkat lunak memiliki kondisi lisensi yang melarang distribusi biner.
  • Beberapa orang tidak percaya dengan distribusi biner atau lebih memilih untuk membaca kode sumber dengan maksud untuk mencari apakah ada potensi masalah.
  • Kode sumber dibutuhkan untuk menerapkan custom patches.

Menggunakan pkg untuk manajemen package biner

Menginstal pkg pada FreeBSD versi 8.4 atau lebih:

# /usr/sbin/pkg

Menginstal pkg pada FreeBSD versi-versi lama:

# cd /usr/ports/ports-mgmt/pkg
# make
# make install clean

Menginstal suatu package:

# pkg install packagename

Misalkan kita ingin menginstal portmaster menggunakan pkg:

Menghapus package yang sudah terinstal:

# pkg delete packagename

Menghapus leaf dependencies secara otomatis:

# pkg autoremove

Memperbarui packages yang terinstal:

# pkg version
# pkg upgrade

Menghapus stale packages:

# pkg clean

Melakukan audit terhadap packages yang terinstal:

# pkg audit -F

Menggunakan Ports Collection

Ada dua cara untuk menginstal Ports Collection yaitu dengan portsnap atau dengan subversion. Dalam artikel ini hanya akan dibahas cara menginstal Port Collection dengan portsnap.
Menginstal Ports Collection dengan portsnap:

  1. Unduh compressed snapshot dari Ports Collection ke dalam /var/db/portsnap:
    
# portsnap fetch

  2. Ekstrak snapshot ke dalam /usr/ports:
    
# portsnap extract

  3. /usr/ports dapat diperbarui dengan menjalankan:
    # portsnap fetch update

Menginstal sebuah port:

# cd /usr/ports/portname
# make install clean

Misalkan kita ingin menginstal port security/sudo:

Menghapus port yang terinstal:

# cd /usr/ports/portname
# make deinstall

Memperbarui port yang terinstal, ada dua cara:

  • Menggunakan portmaster:
    # portmaster -L
    # portmaster -a

  • Menggunakan portupgrade:
    # portupgrade -ai

Booting dalam FreeBSD

Ada dua mode boot dalam FreeBSD yaitu Single-user mode dan Multi-user mode. Dalam single-user mode, pengguna secara otomatis login dengan menggunakan akun root tanpa melalui otentikasi. Single-user mode ini adalah:

  • untuk memperbaiki sistem
  • untuk me-reset kata sandi root jika lupa/tidak tahu
  • tidak ada jaringan

Single-user mode dapat menjadi suatu kerawanan jika komputer tidak diamankan secara fisik. Oleh karena itu, sebaiknya dilakukan konfigurasi tambahan agar pengguna yang ingin masuk ke dalam single-user mode tetap harus melalui otentikasi (meminta kata sandi root) yaitu dengan mengkonfigurasikan insecure console dalam /etc/ttys:

# vi /etc/ttys

Menerapkan Security Patches

Untuk melakukan pembaruan secara manual:

# freebsd-update fetch
# freebsd-update install

Jika pembaruan diterapkan pada kernel, sistem butuh di-reboot untuk masuk ke dalam patched kernel. Jika patch diterapkan pada running binaries, aplikasi terkait harus di-restart untuk menggunakan patched version dari biner yang digunakan.
Sistem dapat dikonfigurasikan untuk melakukan pengecekan updates secara otomatis setiap harinya yaitu dengan menambahkan entri berikut ke dalam /etc/crontab:

@daily root freebsd-update cron

Jika ada patch baru, maka patch akan diunduh secara otomatis tapi tidak akan diterapkan. Pengguna root akan dikirimkan sebuah surel agar patch dapat ditinjau dan secara manual diinstal dengan menggunakan perintah:

# freebsd-update install

Jika ada kesalahan terjadi, freebsd-update memiliki kemampuan untuk kembali ke keadaan sebelum dilakukan pembaruan yaitu dengan perintah:

# freebsd-update rollback

Melakukan upgrade versi mayor dan upgrade versi minor

Upgrade versi minor contohnya adalah upgrade FreeBSD versi 9.0 ke FreeBSD versi 9.1. Sedangkan upgrade versi mayor contohnya adalah upgrade FreeBSD versi 9.X ke FreeBSD versi 10.X. Untuk melakukan upgrade misalnya upgrade ke versi 9.1 dapat menggunakan perintah berikut:

# freebsd-update –r 9.1-RELEASE upgrade
# shutdown -r now
# freebsd-update install

Versi mayor menggunakan Application Binary Interfaces (ABIs) yang berbeda, yang akan tidak kompatibel dengan sebagian besar aplikasi pihak ketiga. Oleh karena itu, setelah melakukan upgrade versi mayor, semua packages dan ports yang terinstal harus di-upgrade dengan perintah berikut:

# pkg-static upgrade -f
# portmaster -af
# freebsd-update install

Enkripsi Partisi Disk

Terlepas dari bagaimana musuh dapat mengambil hard drive ataupun komputer, subsistem kriptografik berbasis GEOM yang ada pada FreeBSD mampu melindungi data pada sistem berkas komputer dari musuh. Tidak seperti metode enkripsi yang mengenkripsi berkas secara individu, kakas gdbe dan geli dapat digunakan untuk mengenkripsi secara transparan sistem berkas secara keseluruhan. Tidak ada teks polos yang tersimpan dalam hard drive. Dalam artikel ini hanya akan dibahas enkripsi dengan gdbe.

Enkripsi disk dengan gbde

Tujuan dari gdbe adalah untuk mempersulit musuh dalam mengakses konten dari cold storage device. Namun, jika komputer masih aktif dan storage device digunakan secara aktif, atau musuh memiliki akses atas passphrase yang valid, maka gdbe tidak dapat melindungi konten dari storage device tersebut. gdbe mengenkripsi kontendari sebuah sektor disk menggunakan 128-bit AES dalam mode CBC. Setiap sektor dalam disk dienkripsi dengan kunci AES yang berbeda.

FreeBSD menyediakan modul kernel untuk gbde yang dapat dimuat dengan perintah berikut:

# kldload geom_bde

Langkah-langkah untuk melakukan enkripsi disk dengan gdbe adalah sebagai berikut:

  1. Tambahkan hard drive baru. Dalam contoh berikut, hard drive yang ditambahkan bernama /dev/da0p6.
  2. Buat sebuah direktori untuk menyimpan berkas kunci gbde:
    # mkdir /etc/gbde
  3. Inisialisasi partisi gdbe, dalam contoh berikut sector_size diubah menjadi 2048, simpan dan masukkan passphrase:
    # gbde init /dev/da0p6 -i -L /etc/gbde/da0p6.lock

  4. Hubungkan partisi yang dienkripsi ke kernel:
    # gbde attach /dev/da0p6 -l /etc/gbde/da0p6.lock

  5. Buat sebuah sistem berkas pada partisi yang dienkripsi:
    # newfs -U /dev/ad4s1c.bde
  6. Mount partisi yang dienkripsi:
    # mkdir /private
    # mount /dev/ad4s1c.bde /private
  7. Verifikasi apakah sistem berkas yang dienkripsi sudah tersedia:
    # df -H

Referensi:
  1. Stallings, William, dan Lawrie Brown. Computer Security: Principles and Practice. Pearson, edisi ke-2, 2012.
  2. https://www.freebsd.org/doc/en_US.ISO8859-1/books/handbook/index.html

Leave a Reply

Your email address will not be published. Required fields are marked *