oleh aerphanas pada Jun 05, 2023
Bagikan ke: Twitter | Facebook | LinkedIn
OpenBSD 6.2 Artwork

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
main() {
  if (pledge("stdio", NULL) == -1) 
    err(EXIT_FAILURE, "pledge");
  puts("Status: 200 OK\r");
  puts("Content-Type: text/html\r");
  puts("\r");
  puts("Hello World");
  return 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