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.