Cara Membuat Situs Web di OpenBSD
· 2 min read · Label UnixBSD
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.
Jika sebaliknya Anda melihat perintah kembali.
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.
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.
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.
Lalu ssh kembali ke server cloud dengan perintah.
Sekarang kunci publik Anda dipercaya sebagai host untuk terhubung ke server Anda melalui ssh.
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.
Setelah menyelesaikan langkah-langkah tersebut, ketik exit atau gunakan Ctrl+d hingga Anda kembali ke terminal komputer lokal.
Lalu tulis perubahan pada berkas dan keluar.
Buat berkas rumah Anda dengan mengetikkan perintah berikut.
Kemudian tulis perubahan pada berkas dan keluar.
Sekarang Anda perlu memulai HTTPD dengan mengetik perintah berikut.
Kemudian Anda akan mengaktifkan HTTPD saat boot dengan mengetik perintah berikut.
Pertama-tama mulailah dengan mengetik nslookup yourdomain.com ke terminal Anda.
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.
Anda perlu membuat file konfigurasi ACME dengan menggunakan editor teks pilihan Anda dan mengetik perintah berikut:
Lalu tulis perubahan pada berkas dan keluar.
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.
Anda sekarang dapat menggunakan ACME-Client untuk mendapatkan sertifikat SSL dengan mengetikkan perintah berikut.
Lalu tulis perubahan pada berkas dan keluar.
Sekarang Anda perlu menambahkan baris untuk memperbarui sertifikat Anda. Baris yang saya gunakan adalah sebagai berikut.
Tulis perubahan pada crontab dan kemudian keluar.
Kemudian tulis perubahan pada berkas dan keluar.
Sekarang setelah Anda selesai mengedit /etc/pf.conf, Anda perlu mengaktifkan penyaringan paket dengan perintah berikut.
Kemudian uji aturan tersebut dan terapkan dengan perintah berikut.
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.
Untuk memulai, Anda perlu mengedit konfigurasi berikut.
Sekarang temukan #Port 22 lalu edit dan berikut ini.
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
server can't find yourdomain.com: NXDOMAIN
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
hostname1# ssh-keygen
scp /home/yourname/.ssh/id_rsa.pub yourname@yourdomain.com::/home/yourname
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
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
F. Membuat dan memodifikasi pengguna dan grup
Pengguna root dimaksudkan untuk keperluan administratif saja. Buat akun Anda sendiri dengan mengetik.hostname1# adduser openbsduseryourname
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"
}
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
hostname1# nano /var/www/htdocs/www.yourdomain.com/index.html
<html>
<body>
<h1>TEST</h1>
<body>
<html>
Sekarang Anda perlu memulai HTTPD dengan mengetik perintah berikut.
hostname1# rcctl start httpd
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".
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
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 }
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" }
Sekarang setelah Anda selesai mengedit /etc/httpd.conf, Anda perlu memulai ulang httpd. Untuk melakukannya, ketik perintah berikut.
hostname1# httpd -n && rcctl restart httpd
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"
}
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
0 23 * * 1 acme-client -v yourdomain.com && rcctl reload httpd
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
Sekarang setelah Anda selesai mengedit /etc/pf.conf, Anda perlu mengaktifkan penyaringan paket dengan perintah berikut.
hostname1# pfctl -e
hostname1# pfctl -n -f /etc/pf.conf && pfctl -f /etc/pf.conf
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
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.
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.
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.
Silahkan Berkomentar, Kakak...! Bunda...!
Posting Komentar