FreeBSD Jail dengan Bastille

Published on
3 menit waktu membaca
––– dilihat

Pendahuluan

Salah satu fitur yang saya senangi di FreeBSD adalah jail. Jail adalah sebuah fitur yang memungkinkan kita untuk membuat lingkungan virtual yang terisolasi dari sistem operasi utama. Saya menggunakan jail karena saya ingin merapikan setiap aplikasi yang saya install sehingga tidak berantakan.

Pada awalnya, saya suka membuat jail secara manual, Anda dapat konfigurasi saya di shinsha-jail. Mungkin ada yang bertanya mengapa harus manual? saya menggunakan vtnet sebagai interface jaringan jail. Nah, saya terlalu mumet untuk mengatur vtnet secara manual jika jail diaktifkan. Apalagi saya butuh port forwarding untuk setiap jail yang saya pasang sendiri (konsepnya mirip OpenVZ mungkin?). Jadi saya lebih memilih manual daripada menggunakan tools yang sudah ada toh lagian sama ae ribetnya.

Hingga akhirnya, shinsha-jail saya membuat Google Cloud Engine (GCE) tidak dapat booting jika ditambah interface bridge0.

Bastille

Saya sebenarnya agak skeptis dengan tools-tools pengatur jail karena pada dasarnya konsepnya sama aja, tidak jauh berbeda dengan konfigurasi manual. Tapi karena saya sudah lelah melihat serial console GCE saya stuck di DHCP renewal in 18000 seconds maka saya mencoba menggunakan tools manajemen jail. Saya mencoba ezjail, emm.. tidak terlalu suka karena saya harus mengatur pf secara manual.

Bastille? what? membaca istilah container di Bastille saja saya sudah skeptis karena terlalu docker. Tapi setelah saya mencoba sekali, Bastille adalah jawabannya.

Instalasi

Sebenarnya untuk panduan Bastille sudah lengkap di BastilleBSD. Tapi sesuai dengan kata pembukanya It’s dangerous to go alone! Take this.

Sebelum instalasi, pastikan bahwa patch FreeBSD sudah terbaru (opsional sih sebenarnya).

freebsd-update fetch
freebsd-update install
reboot

Setelah reboot, jalankan freebsd-update install lagi untuk memastikan bahwa patch sudah terinstall.

freebsd-update install

Lalu install bastille.

pkg install -y bastille

Port Redirection dan Forwarding

Yang saya suka dari Bastille adalah port redirection dan forwarding tanpa mumet mikir konfigurasi pf. Misal saya memiliki skema jail seperti di bawah ini

+-----------+          +------------+          +----------------------+
| User      | -------- | Host       | -------- | Jail 1 (nginx_jail)  |
| 10.42.1.1 |          | 172.16.0.1 |     |    | 192.168.10.1:80      |
+-----------+          +------------+     |    +----------------------+
                                          |
                                          |    +----------------------+
                                          |----| Jail 2 (apache_jail) |
                                               | 192.168.10.2:443     |
                                               +----------------------+

Saya dengan mudah melakukan port forwarding dan redirection hanya dengan perintah berikut.

bastille rdr nama_jail protokol port_host port_jail

Contoh:

bastille rdr nginx tcp 80 80
bastille rdr apache tcp 443 443

Semudah itu bukan?. Untuk lebih jelasnya, silahkan baca dokumentasi Bastille.