Bagikan ke: Twitter | Facebook | LinkedIn
Daftar isi
Pendahuluan
BCHS merupakan web stack yang simple dan dibuat diatas sistem BSD, untuk pilihan sistem BSD web bchs menyarankan menggunakan OpenBSD karena OpenBSD dikenal sebagai sistem operasi yang sangat aman, selain itu OpenBSD juga memiliki fungsi pledge dan unveil di bahasa program C yang berguna menambah keamanan khusus untuk sistem operasi OpenBSD.
Alat yang digunakan
alat dan bahan untuk menggunakan bchs sangatlah simple kita hanya perlu menginstall OpenBSD dan SQLite jika app yang kita buat menggunakan database.
setup OpenBSD
keluarga bsd memiliki dokumentasi yang sangatlah rapih jika dibanding GNU, untuk menginstall OpenBSD silakan pergi ke website aslinya dan membaca dokumentasi, sebagai demonstrasi untuk blog ini saya menggunakan Virtual Machine QEMU KVM untuk mencoba menggunakan bchs.
setelah terinstall OpenBSD kita bisa menginstall software dengan kommand pkg_add
,
kita tidak perlu menginstall apapun jika hanya ingin mengetes bchs, software
yang tidak terinstall hanyalah Sqlite
hal pertama untuk mengetes bchs adalah membuat sebuah program yang nanti slowcgi
akan menyediakanya untuk client, buatlah cgi.c
dengan isi seperti berikut
#include <err.h> /* err(3) */
#include <stdlib.h> /* EXIT_xxxx */
#include <stdio.h> /* puts(3) */
#include <unistd.h> /* pledge(2) */
int
() {
mainif (pledge("stdio", NULL) == -1)
(EXIT_FAILURE, "pledge");
err("Status: 200 OK\r");
puts("Content-Type: text/html\r");
puts("\r");
puts("Hello World");
putsreturn EXIT_SUCCESS;
}
dilihat diatas kita menggunakan pledge untuk meminimalisir interaksi kode dengan sistem, fungsi pledge hanya khusus ada di OpenBSD.
dari fungsi puts diatas kita bisa mengetahui, kita akan meresponse status 200 dengan respon
bertipe text/html dengan isi Hello World
.
setup Httpd
httpd merupakan server http yang ada di openbsd, kita tidak perlu menginstallnya, otomatis program ini sudah terinstall ketika kita menginstall OpenBSD.
untuk mengkonfigurasi httpd kita membuat sebuah file di /etc/httpd.conf
, lalu
mengisinya dengan kode berikut
server "localhost" {
listen on "*" port 80
location "/cgi-bin/*" {
fastcgi
root "/"
} }
di konfigurasi ini kita membuat nama server localhost
kemudian akan
menunggu koneksi untuk semua alamat ip sistem pada port 80
dan kita
nengaktifkan fitur fastcgi
dengan root /
, meskipun disini kita
menggunakan fitur fastcgi tetapi kita akan menggunakan slowcgi.
setelah itu kita bisa langsung mencoba bchs, pertama kita akan menkompile
file cgi.c
yang sudah kita bikin dengan perintah
cc -static -g -w -Wall -Wextra -o cgi cgi.c
kita mengkompile dengan opsi -W -Wall -Wextra -g -O0
bermanfaat untuk
keamanan kode kita, dengan menkompile dengan opsi ini kita akan diberikan
warning jika ada masalah dan ketika aplikasi kita crash dengan tanpa optimisasi
akan sangat mudah memperbaikinya.
setelah itu kita akan memindahkan hasil kompilasi ke /var/www/cgi-bin/
menggunakan
perintah cp
, chmod
dan chown
cp cgi /var/www/cgi-bin/
chown www:www /var/www/cgi-bin/cgi
chmod 0500 /var/www/cgi-bin/cgi
arti chmod 0500
disini adalah program ini akan hanya bisa di eksekusi oleh
pemilik dan grub, jadi hanya grub/user www saja yang bisa menjalankanya.
setelah itu kita bisa mulai menjalankan beberapa service di OpenBSD, service
di OpenBSD bisa dikontrol dengan koman rcctl
rcctl start slowcgi
rcctl check slowcgi
rcctl -f restart httpd
rcctl check httpd
disini kita menggunakan slowcgi untuk prosesing cgi httpd, dan kita juga
memulai proses httpd, terkadang jika ada config yang salah rcctl
tidak
bisa menjalankan proses, jadi kita melakukan pengecekan apakah proses berjalan
dengan opsi check
.
kita juga bisa membuat sebuah shell script untuk memudahkan kita, seperti
ini shell script untuk otomatis kompilasi dan memulai proses slowcgi
dan httpd
kita akan menamai script ini bchs.sh
.
#! /bin/sh
cc -static -g -w -Wall -Wextra -o cgi cgi.c
install -o www -g www -m 0500 cgi /var/www/cgi-bin
rcctl enable slowcgi
rcctl start slowcgi
rcctl check slowcgi
rcctl -f restart httpd
terdapat perintah baru disini, perintah install
, melakukan hal yang sama
seperti kita melakukan chmod
dan chown
.
dengan adanya script ini kita bisa dengan mudah mengganti kode lalu kita hanya perlu menjalankan script ini,
untuk melakukan sebuah API call sederhana kita menggunakan curl, jalankan perintah berikut dan kita akan mendapat respon dari server yang kita buat,
-bash-5.2# curl -X GET localhost/cgi-bin/cgi -i
HTTP/1.1 200 OK
Connection: keep-alive
Content-Type: text/html
Date: Mon, 05 Jun 2023 04:16:51 GMT
Server: OpenBSD httpd
Transfer-Encoding: chunked
Hello World
Daftar Pustaka
GitHub
→ bchsCarnegie Mellon University
→ SEI CERT C Coding StandardYoutube
→ Hackfest 2015: Theo de Raadt presented “Pledge: A new security technology in openbsd”Youtube thumbnail
→ Half-Life - Hazardous Environments Remix