Relayd Load Balancer dengan httpd di OpenBSD
· 2 min read · Label UnixBSD
Penyeimbang beban atau sistem adalah perangkat yang dapat meneruskan lalu lintas masuk ke satu atau beberapa server nyata. Dari segi tujuan, tampak seperti relai penerusan sederhana. Solusi komersial seperti Cisco Local Director menyediakan fitur-fitur canggih dan serangkaian algoritme yang memungkinkan Anda memilih server yang sesuai, termasuk ketersediaan kandidat polling atau ketersediaan agen/pelanggan. Karena implementasinya, mereka sering disebut sebagai mesin NAT terbalik atau proksi terbalik.
Relayd adalah daemon untuk secara dinamis meneruskan dan merutekan koneksi masuk ke host tujuan. Tujuan utamanya adalah untuk bertindak sebagai penyeimbang beban, gerbang lapisan aplikasi, atau proksi transparan. Daemon dapat memantau ketersediaan sekelompok host, yang ditentukan dengan menyelidiki layanan-layanan tertentu yang umum untuk kelompok host tersebut. Ketika ketersediaan dikonfirmasi, layanan penerusan Lapisan 3 dan/atau Lapisan 7 disiapkan melalui transmisi ulang.
Repositori ini mencakup salinan pohon sumber streaming asli, yang diperbarui dari waktu ke waktu, serta cabang eksperimental yang harus dibagikan dengan orang lain. Ini bukan versi portabel dan ditujukan untuk OpenBSD saja! Repositori ini mungkin berisi perubahan yang sangat eksperimental; jangan menggunakannya dalam produksi. Pengembangan utama terjadi di pohon CVS OpenBSD.
Untuk memastikan situs web tersedia dengan baik, OpenBSD memiliki beberapa solusi fungsional yang bekerja sangat baik bersama-sama; relayd dan httpd.
Httpd adalah server web yang secara resmi didukung dan dikembangkan oleh OpenBSD. Sekitar 20 tahun yang lalu, OpenBSD pertama kali mengimpor server Apache httpd yang dimodifikasi ke versi dasar. Kemudian, seiring dengan semakin populernya nginx, akhirnya nginx menjadi server web setelah dirilis, meskipun nginx juga ditambal untuk mematuhi peraturan keamanan OpenBSD yang lebih ketat. Kemudian, pada tahun 2015, OpenBSD merilis httpd-nya sendiri, berdasarkan Relayd, sebagai server web default.
Relayd and httpd dapat bekerja sama untuk menyediakan solusi yang sederhana namun sangat tersedia untuk hosting web dan lainnya. Artikel ini akan menunjukkan kepada Anda cara menggunakan dua mesin virtual httpd OpenBSD yang berjalan di belakang mesin virtual OpenBSD menggunakan relai sebagai penyeimbang beban. Dua server httpd harus dapat dijangkau hanya melalui penyeimbangan beban, dan konfigurasi akan dapat menangani salah satu dari dua server httpd yang tidak tersedia selama patching atau restart. Konfigurasi tersebut juga harus memiliki peringkat A di ssllabs.com.
Untuk menampilkan kumpulan alamat yang diblokir di tabel SSHguard kapan saja, masukkan perintah berikut.
Untuk alamat IP, kami sarankan menggunakan localhost, sehingga relayd mendengarkan pada port 127.0.0.1 dan menggunakan aturan rdr-to di pf. Server web backend menggunakan alamat RFC1918.
Bermanfaat untuk mencatat lebih banyak informasi dan mengidentifikasi mereka yang menguji konfigurasi TLS.
Berikut adalah contoh konfigurasi file httpd.
Di bagian akhir ini, kami meninjau secara singkat penyeimbang beban Anda yang disiapkan untuk menerima koneksi http dan https, yang meneruskan permintaan ke server http back-end. Anda seharusnya dapat menambal dan mem-boot ulang salah satu server httpd dengan aman tanpa klien Anda kehilangan akses ke salah satu situs. Namun, satu catatan tambahan, akan lebih bijaksana untuk mengunci pf pada penyeimbang beban sesuai keinginan Anda, karena ia juga bertindak sebagai firewall untuk dua server httpd Anda.
Relayd adalah daemon untuk secara dinamis meneruskan dan merutekan koneksi masuk ke host tujuan. Tujuan utamanya adalah untuk bertindak sebagai penyeimbang beban, gerbang lapisan aplikasi, atau proksi transparan. Daemon dapat memantau ketersediaan sekelompok host, yang ditentukan dengan menyelidiki layanan-layanan tertentu yang umum untuk kelompok host tersebut. Ketika ketersediaan dikonfirmasi, layanan penerusan Lapisan 3 dan/atau Lapisan 7 disiapkan melalui transmisi ulang.
Repositori ini mencakup salinan pohon sumber streaming asli, yang diperbarui dari waktu ke waktu, serta cabang eksperimental yang harus dibagikan dengan orang lain. Ini bukan versi portabel dan ditujukan untuk OpenBSD saja! Repositori ini mungkin berisi perubahan yang sangat eksperimental; jangan menggunakannya dalam produksi. Pengembangan utama terjadi di pohon CVS OpenBSD.
Untuk memastikan situs web tersedia dengan baik, OpenBSD memiliki beberapa solusi fungsional yang bekerja sangat baik bersama-sama; relayd dan httpd.
1. Apa Itu relayd
Relayd adalah penyeimbang beban sumber terbuka yang mampu menangani lapisan protokol 3, 4, dan 7. Relayd, yang dulunya disebut hoststated, adalah aplikasi penyeimbang beban terbaru yang dikembangkan oleh grup OpenBSD. Relayd dapat diatur sebagai relai atau pengalihan gaya port maju, mundur, atau TCP dan dapat digunakan sebagai akselerator SSL. Relayd adalah front end yang cepat, aman, dan stabil untuk server web atau kluster web.Httpd adalah server web yang secara resmi didukung dan dikembangkan oleh OpenBSD. Sekitar 20 tahun yang lalu, OpenBSD pertama kali mengimpor server Apache httpd yang dimodifikasi ke versi dasar. Kemudian, seiring dengan semakin populernya nginx, akhirnya nginx menjadi server web setelah dirilis, meskipun nginx juga ditambal untuk mematuhi peraturan keamanan OpenBSD yang lebih ketat. Kemudian, pada tahun 2015, OpenBSD merilis httpd-nya sendiri, berdasarkan Relayd, sebagai server web default.
Relayd and httpd dapat bekerja sama untuk menyediakan solusi yang sederhana namun sangat tersedia untuk hosting web dan lainnya. Artikel ini akan menunjukkan kepada Anda cara menggunakan dua mesin virtual httpd OpenBSD yang berjalan di belakang mesin virtual OpenBSD menggunakan relai sebagai penyeimbang beban. Dua server httpd harus dapat dijangkau hanya melalui penyeimbangan beban, dan konfigurasi akan dapat menangani salah satu dari dua server httpd yang tidak tersedia selama patching atau restart. Konfigurasi tersebut juga harus memiliki peringkat A di ssllabs.com.
Berikut ini adalah fungsi utama relayd:
1. Daemon serbaguna tersedia pada OpenBSD sejak 4.3*:
- load-balancer.
- application layer gateway.
- proksi transparan.
2. Mampu memantau kelompok host untuk ketersediaan tinggi.
3. Berfungsi sebagai:
- Pengalihan Layer 3 melalui komunikasi dengan pf.
- Relai Layer 7 dengan penyaringan tingkat aplikasi melalui dirinya sendiri.
2. Konfigurasi relayd.conf
Langkah pertama yang perlu Anda lakukan adalah mengonfigurasi file relayd.conf. Berikut ini adalah contoh skrip relayd.conf.Untuk menampilkan kumpulan alamat yang diblokir di tabel SSHguard kapan saja, masukkan perintah berikut.
relayd.conf
ext_addr = “1.1.1.1”
web_srvr = “10.1.1.10”
log state changes
log connection
http protocol httpFilter {
#return error
http headerlen 4096
match request header set “X-Forwarded-For” value “$REMOTE_ADDR”
match request header set “X-Forwarded-SPort” value “$REMOTE_PORT”
match request header set “X-Forwarded-DPort” value “$SERVER_PORT”
match response header remove “Server” value “*”
match header log “Host”
match header log “X-Forwarded-For”
match header log “User-Agent”
match header log “X-Req-Status”
match url log
match request tag “BAD_METHOD”
match request method GET tag “OK_METH”
match request method HEAD tag “OK_METH”
block request quick tagged “BAD_METHOD”
match request header “Host” value “domain.com” tag “OK_REQ”
match request header “Host” value “www.domain.com" tag “OK_REQ”
match request header “Host” value “another.domain.com” tag “OK_REQ”
block request quick tagged “OK_METH” tag “BAD_HH”
block request quick path “*.php” tag NO_PHP
block request quick path “*.cgi” tag NO_CGI
block request quick path “*.js” tag NO_JS
block request quick path “*.asp” tag NO_ASP
block tag “BAD_REQ”
pass request tagged “OK_REQ”
}
http protocol httpsFilter {
#return error
http headerlen 4096
tls ciphers “ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-ECDSA-AES128-SHA:ECDHE-ECDSA-AES256-SHA:ECDHE-ECDSA-AES128-SHA256:ECDHE-ECDSA-AES256-SHA384:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-RSA-AES128-SHA:ECDHE-RSA-AES256-SHA:ECDHE-RSA-AES128-SHA256:ECDHE-RSA-AES256-SHA384:DHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES256-GCM-SHA384:DHE-RSA-AES128-SHA:DHE-RSA-AES256-SHA:DHE-RSA-AES128-SHA256:DHE-RSA-AES256-SHA256”
tls edh
match request header set “X-Forwarded-For” value “$REMOTE_ADDR”
match request header set “X-Forwarded-SPort” value “$REMOTE_PORT”
match request header set “X-Forwarded-DPort” value “$SERVER_PORT”
match response header remove “Server” value “*”
match header log “Host”
match header log “X-Forwarded-For”
match header log “User-Agent”
match header log “X-Req-Status”
match url log
match response header set “Strict-Transport-Security” value “max-age=63072000; includeSubdomains; preload”
match request tag “BAD_METHOD”
match request method GET tag “OK_METH”
match request method HEAD tag “OK_METH”
block request quick tagged “BAD_METHOD”
match request header “Host” value “domain.com” tag “OK_REQ”
match request header “Host” value “www.domain.com" tag “OK_REQ”
match request header “Host” value “another.domain.com” tag “OK_REQ”
block request quick tagged “OK_METH” tag “BAD_HH”
block request quick path “*.php” tag NO_PHP
block request quick path “*.cgi” tag NO_CGI
block request quick path “*.js” tag NO_JS
block request quick path “*.asp” tag NO_ASP
block tag “BAD_REQ”
pass request tagged “OK_REQ”
}
relay www {
listen on $ext_addr port 80
protocol httpFilter
forward to $web_srvr port 80
}
relay wwwssl {
listen on $ext_addr port 443 tls
protocol httpsFilter
forward to $web_srvr port 80
}
ext_addr = "127.0.0.1"
web_srvr = "10.1.1.10"
log state changes
log connection
server "example.com" {
alias "chat.example.com"
listen on * port 80
location "/.well-known/acme-challenge/*" {
root "/acme"
request strip 2
}
location * {
block return 301 "https://$HTTP_HOST$REQUEST_URI"
}
}
server "example.com" {
listen on * port 8080
location * {
root "/htdocs/www/public/"
}
}
Silahkan Berkomentar, Kakak...! Bunda...!
Posting Komentar