Cara Membuat Situs Web di OpenBSD

· 2 min read

Sertifikat SSL akan kedaluwarsa, jadi Anda perlu menambahkan cronjob untuk memperbarui sertifikat SSL Anda. Untuk mengedit crontab

Ini adalah tutorial sederhana tentang membuat situs web di cloud menggunakan OpenBSD dan HTTPD. Tutorial ini didasarkan pada langkah-langkah yang sama yang digunakan untuk membuat situs web yang Anda baca ini. Fokus utamanya adalah pada keamanan, minimalisme, dan keandalan. Alasan OpenBSD dipilih adalah karena ia memiliki pengaturan keamanan yang luar biasa dan sangat ringan. Tutorial ini mengasumsikan Anda seorang pemula tetapi memiliki pengetahuan dasar tentang DNS dan perintah unix. Jika tidak, Google dan ChatGTP adalah teman Anda.


membuat webserver di openbsd


Prasyarat

  • Cloud Provider.
  • Domain Name.
  • amd64 OpenBSD ISO (depending on cloud provider)

A. Instalasi

Masuk ke penyedia cloud Anda dan buat mesin baru. Sebaiknya pilih paket termurah di area yang dekat dengan Anda. Cloud memungkinkan Anda untuk menambahkan lebih banyak sumber daya perangkat keras dengan mudah, tetapi sulit untuk menurunkan paket Anda, jadi pilihlah dengan bijak. Tutorial ini menggunakan Vultr dan menyebarkan instans OpenBSD baru semudah mengklik paket perangkat keras Anda, memilih lokasi, dan memilih OpenBSD sebagai OS Anda. Setelah itu, Anda dapat memulai server dan menunggu beberapa menit karena server memerlukan waktu untuk melakukan booting awal.

B. DNS - Menyiapkan Rekaman A dan AAAA

Ini akan terlihat berbeda pada pendaftar domain yang Anda gunakan, tetapi teorinya sama saja. Anda akan menyiapkan rekaman A dan AAAA pada pendaftar domain kami yang dalam tutorial ini adalah Epik. Anda harus masuk ke akun hosting cloud Anda dan menemukan alamat IPv4 dan IPv6 Anda. Sekarang setelah Anda memilikinya, Anda dapat menyiapkan rekaman A dan AAAA untuk domain Anda. Tiga yang utama yang biasanya disiapkan untuk situs web Anda adalah kosong, www, dan karakter pengganti.

C. DNS - Verifikasi resolusi DNS

Setelah Anda menyiapkan rekaman A dan AAAA, Anda perlu memeriksa apakah keduanya benar dengan menggunakan perintah:


hostname1# nslookup yourdomain.com
Jika Anda mengatur catatan DNS dengan benar Anda akan melihat sesuatu seperti.


Non-authoritative ansyour:
Name:	yourdomain.com
Address: IPv4
Name:	yourdomain.com
Address: IPv6
Jika sebaliknya Anda melihat perintah kembali.


server can't find yourdomain.com: NXDOMAIN
Catatan: Anda mungkin perlu menunggu rekaman A dan AAAA diperbarui atau Anda perlu kembali dan memeriksa apakah Anda telah menetapkan rekaman A dan AAAA dengan benar.

D. Login ke SSH

Sekarang setelah Anda mengatur DNS, Anda dapat masuk ke server Anda melalui ssh menggunakan nama domainnya. Sekarang login ke server Anda dengan memeriksa kata sandi root di dasbor cloud Anda, lalu login ke server Anda menggunakan pengguna root dengan mengetik.


hostname1# ssh root@yourdomain.com
Setelah itu, Anda membuat pasangan kunci untuk ssh. Sebab, salah satu vektor serangan yang paling umum adalah ssh. Ini adalah yang paling umum dilakukan sebagai serangan brute-force di mana skrip otomatis mencoba ribuan nama pengguna dan kata sandi umum. Ini dilakukan untuk mencoba mengakses root, admin, dan nama pengguna umum lainnya dari server Anda. Menonaktifkan kemampuan ssh pengguna root dan menggunakan autentikasi pasangan kunci akan sangat membantu untuk mengurangi serangan ini. Untuk menyiapkan kunci ssh pada sistem operasi desktop Debian Linux, buat pasangan kunci gunakan perintah.


hostname1# ssh-keygen
Gunakan pengaturan default dan atur kata sandi Anda sendiri untuk kunci Anda. Sebaiknya beri nama yang unik sehingga Anda ingat bahwa itu adalah kunci untuk youbserver.


scp /home/yourname/.ssh/id_rsa.pub yourname@yourdomain.com::/home/yourname
Lalu ssh kembali ke server cloud dengan perintah.


hostname1# ssh root@yourdomain.com
Sekarang sebagai pengguna Anda, pindahkan kunci publik Anda ke dalam file host resmi ssh menggunakan perintah.


hostname1# mv ~/.ssh/id_rsa.pub ~/.ssh/authorized_keys && chmod 440 ~/.ssh/authorized_keys
Sekarang kunci publik Anda dipercaya sebagai host untuk terhubung ke server Anda melalui ssh.

E. Konfigurasi otentikasi kunci ssh

Sekarang Anda akan mengedit konfigurasi ssh untuk menggunakan kunci ini untuk autentikasi pengguna Anda. Untuk melakukannya, Anda akan mengedit /etc/ssh/sshd_config dengan mengetik perintah berikut.


hostname1# nvim /etc/ssh/sshd_config
(Ganti NeoVim dengan nano atau editor teks apa pun yang Anda gunakan. Jika Anda seorang pemula, saya sarankan menggunakan nano.).

Sekarang Anda mengedit /etc/ssh/sshd_config, Anda perlu mengubah yang berikut ini

Temukan #PermitRootLogin dan ubah ke PermitRootLogin no

Kemudian temukan #PasswordAuthentication yes dan ubah ke PasswordAuthentication no

Itu saja perubahan yang diperlukan. Tulis perubahan ke berkas dan keluar.

Untuk menerapkan pengaturan ini, Anda perlu memulai ulang ssh dengan perintah.


hostname1# rcctl restart sshd
Catatan: Sekarang setelah Anda selesai mengamankan ssh, Anda tidak akan bisa lagi masuk menggunakan root. Anda harus menggunakan yourname@yourdomain.com untuk masuk ke server Anda melalui ssh. Keuntungannya adalah autentikasi kunci akan jauh lebih aman daripada sekadar kata sandi. Anda harus ingat bahwa Anda harus menyiapkan doas atau menggunakan su untuk mengakses hak akses root.

F. Membuat dan memodifikasi pengguna dan grup

Pengguna root dimaksudkan untuk keperluan administratif saja. Buat akun Anda sendiri dengan mengetik.


hostname1# adduser openbsduseryourname
Setelah menyelesaikan langkah-langkah tersebut, ketik exit atau gunakan Ctrl+d hingga Anda kembali ke terminal komputer lokal.

G. Menyiapkan file Konfigurasi HTTPD

Sekarang Anda perlu mengatur HTTPD dengan terlebih dahulu memasukkan berkas konfigurasi menggunakan perintah berikut.


hostname1# nano /etc/httpd.conf
server "www.yourdomain.com" {
  listen on * port 80
  root "/htdocs/www.yourdomain.com"
  location "/.youll-known/acme-challenge/*" {
	    root "/acme"
	    request strip 2
  }
}

server "yourdomain.com" {
  listen on * port 80
  block return 301 "http://www.yourdomain.com$REQUEST_URI"
}
Lalu tulis perubahan pada berkas dan keluar.

H. Membuat situs http

Anda perlu membuat direktori baru di bawah /var/www/htdocs/ untuk melayani situs web Anda. Untuk membuat direktori baru, gunakan perintah berikut.


hostname1# mkdir -p /var/www/htdocs/www.yourdomain.com
Buat berkas rumah Anda dengan mengetikkan perintah berikut.


hostname1# nano /var/www/htdocs/www.yourdomain.com/index.html
<html>
	<body>
		<h1>TEST</h1>
	<body>
<html>
Kemudian tulis perubahan pada berkas dan keluar.
Sekarang Anda perlu memulai HTTPD dengan mengetik perintah berikut.


hostname1# rcctl start httpd
Kemudian Anda akan mengaktifkan HTTPD saat boot dengan mengetik perintah berikut.


hostname1# rcctl enable httpd

I. Menguji resolusi DNS dan HTTPD

Alasan saya meminta Anda untuk menyiapkan nama DNS dan HTTPD tanpa https adalah karena saya ingin memastikan Anda memiliki dasar-dasarnya sebelum menyiapkan situs web https yang tepat. Sering kali saya melihat orang melakukan semua langkah rumit sebelum memeriksa dasar-dasarnya. Jika Anda tidak bisa mendapatkan situs http, Anda tidak akan mendapatkan situs https. Jika Anda tidak bisa mendapatkan nama domain Anda untuk dipecahkan dengan nslookup, Anda tidak akan mendapatkan situs web dengan nama domain. Intinya adalah memeriksa konektivitas dan catatan DNS, lalu memverifikasi fungsionalitas sebelum masuk ke pengaturan yang lebih rumit.

Pertama-tama mulailah dengan mengetik nslookup yourdomain.com ke terminal Anda.

Sekarang coba ketik url Anda ke bilah pencarian teratas sebagai situs http. Contohnya adalah: "http://exampledomain.com".

Jika semuanya berfungsi, maka inilah saatnya untuk melanjutkan ke langkah berikutnya. Jika tidak, kembali dan periksa untuk memastikan Anda telah melakukan semua langkah terakhir dengan benar dan coba lagi.

J. Menyiapkan Prasyarat untuk Sertifikat SSL

Pertama, Anda perlu membuat direktori yang diperlukan dengan mengetikkan perintah berikut.


hostname1# mkdir -p -m 700 /etc/acme
hostname1# mkdir -p -m 700 /etc/ssl/acme/private
hostname1# mkdir -p -m 755 /var/www/acme
Anda perlu membuat file konfigurasi ACME dengan menggunakan editor teks pilihan Anda dan mengetik perintah berikut:


hostname1# nano /etc/acme-client.conf
#
# $OpenBSD: acme-client.conf,v 1.6 2017/11/27 01:59:55 florian Exp $
#
authority letsencrypt {
    	api url "https://acme-v02.api.letsencrypt.org/directory"
    	account key "/etc/acme/letsencrypt-privkey.pem"
}

authority letsencrypt-staging {
    	api url "https://acme-staging.api.letsencrypt.org/directory"
    	account key "/etc/acme/letsencrypt-staging-privkey.pem"
}

domain yourdomain.com {
alternative names { www.yourdomain.com }
   		domain key "/etc/ssl/private/yourdomain.com.key"
   		domain certificate "/etc/ssl/yourdomain.com.crt"
   		domain full chain certificate "/etc/ssl/yourdomain.com.fullchain.pem"
   		sign with letsencrypt
}
Lalu tulis perubahan pada berkas dan keluar.

K. Konfigurasikan ulang HTTPD dan dapatkan sertifikat yang terinstal

Anda perlu mengkonfigurasi ulang HTTPD untuk mengizinkan https. Edit /etc/httpd.conf dengan melakukan hal berikut.


hostname1# nano /etc/httpd.conf
server "www.yourdomain.com" {
  listen on * port 80
  root "/htdocs/www.yourdomain.com"
  location "/.youll-known/acme-challenge/*" {
	    root "/acme"
	    request strip 2
  }
}

server "yourdomain.com" {
  listen on * port 80
  block return 301 "http://www.yourdomain.com$REQUEST_URI"
}
Kemudian tulis perubahan pada berkas dan keluar.

Sekarang setelah Anda selesai mengedit /etc/httpd.conf, Anda perlu memulai ulang httpd. Untuk melakukannya, ketik perintah berikut.


hostname1# httpd -n && rcctl restart httpd
Anda sekarang dapat menggunakan ACME-Client untuk mendapatkan sertifikat SSL dengan mengetikkan perintah berikut.


hostname1# acme-client -v yourdomain.com

L. Konfigurasi HTTPD akhir

Setelah Anda memiliki sertifikat SSL, saatnya untuk menyiapkan konfigurasi HTTPD akhir. Untuk memulai, ketik perintah berikut.


hostname1# nano /etc/httpd.conf
server "www.yourdomain.com" {
  listen on * tls port 443
  root "/htdocs/www.yourdomain.com"
  tls {
	    certificate "/etc/ssl/yourdomain.com.fullchain.pem"
	    key "/etc/ssl/private/yourdomain.com.key"
  }
location "/.youll-known/acme-challenge/*" {
  root "/acme"
	  request strip 2
  }
}

server "yourdomain.com" {
  listen on * tls port 443
  tls {
	  certificate "/etc/ssl/yourdomain.com.fullchain.pem"
	  key "/etc/ssl/private/yourdomain.com.key"
  }
block return 301 "https://yourdomain.com$REQUEST_URI"
}

server "www.yourdomain.com" {
  listen on * port 80
  alias "yourdomain.com"
  block return 301 "https://www.yourdomain.com$REQUEST_URI"
}
Lalu tulis perubahan pada berkas dan keluar.

M. Jadwalkan Pembaruan Sertifikat dengan Crontab

Sertifikat SSL akan kedaluwarsa, jadi Anda perlu menambahkan cronjob untuk memperbarui sertifikat SSL Anda. Untuk mengedit crontab, ketik perintah berikut.


hostname1# crontab -e
Sekarang Anda perlu menambahkan baris untuk memperbarui sertifikat Anda. Baris yang saya gunakan adalah sebagai berikut.


0 23 * * 1 acme-client -v yourdomain.com && rcctl reload httpd
Tulis perubahan pada crontab dan kemudian keluar.

N. Pengaturan PF Firewall

PF mudah diatur dan dikontrol. Untuk memulai, Anda akan membuat dan mengedit pf.conf dengan perintah berikut.


hostname1# nano /etc/pf.conf
#       $OpenBSD: pf.conf,v 1.55 2017/12/03 20:40:04 sthen Exp $
#
# See pf.conf(5) and /etc/examples/pf.conf

set skip on lo

block all
pass out all
pass in proto tcp to port 80
pass in proto tcp to port 443
pass in proto tcp to port 22
Kemudian tulis perubahan pada berkas dan keluar.

Sekarang setelah Anda selesai mengedit /etc/pf.conf, Anda perlu mengaktifkan penyaringan paket dengan perintah berikut.


hostname1# pfctl -e
Kemudian uji aturan tersebut dan terapkan dengan perintah berikut.


hostname1# pfctl -n -f /etc/pf.conf && pfctl -f /etc/pf.conf
Jika Anda mendapatkan kesalahan dari perintah di atas, silakan kembali dan periksa pf.conf Anda untuk kesalahan konfigurasi, lalu jalankan perintah tersebut lagi sebelum melanjutkan.

O. Ubah port SSH (OPSIONAL)

Mengubah port ssh Anda merupakan lapisan ketidakjelasan tambahan. Port dapat dengan mudah ditemukan dengan pemindaian nmap sederhana, tetapi hal itu akan mencegah beberapa skrip ssh otomatis dasar mencoba masuk menggunakan ssh pada port 22. Jika Anda melakukan ini, Anda perlu menentukan nomor port saat Anda menggunakan ssh atau perintah seperti rsync atau scp yang dapat menggunakan ssh.

Untuk memulai, Anda perlu mengedit konfigurasi berikut.


hostname1# nano /etc/ssh/sshd_config
Sekarang temukan #Port 22 lalu edit dan berikut ini.


Port 97531
Catatan: Anda dapat mengubah nomor port sesuai keinginan, tetapi saya sarankan bagi pemula untuk memilih port sementara guna menghindari konflik.

Kemudian tulis perubahan pada berkas dan keluar.

Sebelum menyetel port ssh baru ini, Anda perlu memastikan firewall mengizinkan kita untuk masuk ke port tersebut melalui ssh. Anda perlu mengedit /etc/pf.conf untuk mengubah port 22 ke port ssh yang diinginkan, lalu terapkan pf.conf baru sebelum melanjutkan.

Untuk menerapkan setelan ini, Anda perlu memuat ulang sshd dengan perintah berikut.


hostname1# rcctl reload sshd

P. Pengaturan sshlockout (OPSIONAL)

Langkah lain yang saya lakukan adalah menyiapkan sshlockout. Ini adalah lapisan keamanan ekstra yang memblokir alamat IP yang telah mencapai ambang batas maksimum upaya memasukkan kata sandi yang gagal. Jika Anda berasal dari dunia Linux, ini mirip dengan Fail2Ban dan merupakan program yang sangat sederhana. Ini diimpor ke OpenBSD dari DragonflyBSD dan penghargaan besar bagi mereka karena ini adalah alat yang sangat ringan dengan pengaturan minimal. Untuk menyiapkannya, klik di sini.

Sekarang saatnya untuk mendesain situs web Anda. Ada banyak cara berbeda untuk membuat dan mendesain situs web. Anda dapat mengodekannya dengan HTML dan CSS atau membuatnya menggunakan generator situs statis. Ini di luar cakupan tutorial ini, tetapi saya akan menautkan panduan terkait di sini saat saya membuatnya. Saya merekomendasikan Hugo karena memiliki dokumentasi yang bagus dan banyak tutorial youtube.

Ada juga banyak cara untuk menyebarkan situs web Anda. Anda dapat menggunakan git atau github. Anda dapat melakukannya secara manual. Anda juga dapat mengikuti tutorial saya tentang cara melakukannya yang menggunakan beberapa skrip yang mengotomatiskan proses manual dan mengurangi transfer file.
Subscribe on LinkedIn Cara Membuat Situs Web di OpenBSD

Enclosures Link: Cara Membuat Situs Web di OpenBSD

Silahkan Berkomentar, Kakak...! Bunda...!

Posting Komentar