Ringkasan #
Artikel berikut menjelaskan studi kasus nyata untuk ISP atau penyedia hosting, di mana reverse proxy HTTP/S Load Balancer adalah titik akses utama ke semua layanan web publik. Konfigurasi ini menunjukkan betapa mudahnya mengkonfigurasi aturan WAF yang canggih dan ampuh untuk mengamankan aplikasi web berdasarkan alamat IP sumber yang diblokir, di mana setiap VirtualHost mengelola daftar hitamnya sendiri sedemikian rupa sehingga satu IP Publik dapat dilarang untuk terhubung ke domain web seperti www.company1.com tetapi diizinkan untuk terhubung ke www.company2.com.
Artikel ini akan dibagi menjadi dua bagian. Bagian utama akan membahas konfigurasi profil HTTPS yang berfungsi sebagai reverse proxy dengan daftar berbagai layanan, dan bagian kedua akan menjelaskan cara mengkonfigurasi aturan Web Application Firewall yang akan mengelola daftar hitam (blacklist) yang berbeda untuk setiap layanan HTTP/S.
Lingkungan Hidup #
Diagram berikut menjelaskan RELIANOID internal WAF. Seperti yang ditunjukkan, lapisan pertama adalah modul WAF yang tujuannya adalah untuk memastikan pada tahap awal bahwa hanya permintaan aman yang diizinkan untuk melewati modul penyeimbangan beban dan kemudian meneruskan permintaan ke backend.
Pertama, header HTTP Host dievaluasi dan IP klien diperiksa dalam daftar hitam yang telah dikonfigurasi. Jika header Host dan alamat IP klien cocok, maka koneksi akan diputus dan respons HTTP 403 Forbidden dikirim ke klien, tetapi jika IP klien dan header Host yang diminta tidak cocok, maka lalu lintas diidentifikasi sebagai tidak berbahaya dan diteruskan ke modul penyeimbang beban, di mana tujuan dipilih berdasarkan header Host permintaan HTTP dan akhirnya diteruskan ke server backend yang tersedia.
Di sini Anda dapat menemukan skema internal Web Application Firewall untuk contoh yang diberikan.
Konfigurasi layanan virtual HTTP #
Konfigurasikan satu alamat IP Virtual khusus , dalam contoh kita 192.168.100.58 , dengan membuka Jaringan > Antarmuka Virtual > Buat Antarmuka Virtual seperti yang ditunjukkan di bawah ini:
Sekarang mari kita konfigurasikan layanan load balancing HTTP, buka LSLB > Farms lalu klik tombol Create Farm dan masukkan detail layanan virtual seperti yang ditunjukkan di bawah ini:
Kemudian tekan Buat.
Sekarang klik Tab Layanan di bagian atas dan buat layanan sebanyak situs web berbeda yang Anda kelola, lalu klik tombol Layanan Baru . Dalam kasus ini, kita akan membuat dua layanan berbeda, satu untuk mengelola layanan untuk www.mycompany1.com dan satu lagi untuk www.mycompany2.com.
Setelah layanan dibuat, tambahkan filter Virtual Host dan backend seperti yang ditunjukkan pada gambar di bawah ini.
Jika Anda memiliki beberapa situs web, Anda hanya perlu menambahkan lebih banyak layanan untuk menentukan satu layanan khusus untuk mengelola setiap web dari alamat IP yang sama.
Sekarang konfigurasi loadbalancing telah selesai, mari kita konfigurasi modul IPDS Web Application Firewall.
Konfigurasi daftar hitam #
Kita akan membuat satu daftar hitam (blacklist) untuk setiap layanan web agar dapat memasukkan alamat IP yang diinginkan untuk memblokir akses ke setiap daftar hitam tersebut. Dalam contoh ini, kita akan membuat dua daftar hitam berbeda dengan nama blacklistmycompany1 dan blacklistmycompany2 , masing-masing satu untuk setiap layanan.
Daftar hitam ini akan disimpan di jalur /usr/local/relianoid/config/ipds/blacklists/lists/Blacklistmycompany1.txt.
Kami menyertakan 2 alamat IP untuk tujuan pengujian, harap pertimbangkan untuk menambahkan IP sebanyak yang dibutuhkan. Selain itu, daftar hitam (blacklist) yang sudah ada di modul IPDS dapat digunakan.
Daftar hitam kedua ini akan disimpan di jalur /usr/local/relianoid/config/ipds/blacklists/lists/Blacklistmycompany2.txt.
Perlu diperhatikan bahwa dalam daftar hitam ini kami menyertakan alamat IP 192.168.1.191 , IP ini hanya akan digunakan untuk tujuan pengujian, dari mana kami akan menjalankan permintaan HTTP.
Konfigurasi aturan Firewall Aplikasi Web #
Tujuan dari konfigurasi ini adalah untuk mempertahankan daftar hitam IP yang berbeda per situs web, untuk menghindari daftar hitam yang sama untuk seluruh titik akses farm.
Kita akan mengkonfigurasi sebuah ruleset , yaitu sekelompok aturan, dengan nama HostingBlacklisting . Ruleset ini akan terdiri dari dua aturan sederhana (ID aturan 1000 dan ID aturan 1001 dalam contoh kita), setiap aturan didefinisikan sebagai kecocokan dan tindakan, di mana jika kondisinya cocok maka tindakan tersebut akan dieksekusi. Dalam contoh kita, kita akan menggunakan tindakan yang sama di kedua aturan, jika kondisinya cocok maka Tindakan Tolak akan dieksekusi dengan respons 403 Akses Ditolak.
Buka IPDS > WAF , lalu klik Buat aturan WAF dan tetapkan nama aturan yang deskriptif, dalam contoh kami HostingBlacklisting.
Konfigurasikan kolom Fase default ke Header permintaan diterima . Kolom ini berarti bahwa modul WAF akan menganalisis header permintaan yang masuk dari klien.
Kemudian, buka tab Aturan dan buat Aturan pertama bertipe Tindakan seperti yang ditunjukkan di bawah ini.
Sekarang aturan pertama dari kumpulan aturan telah dibuat, mari kita buat kondisi untuk mencocokkan IP klien dalam daftar hitam untuk setiap header Host . Buka Kondisi dan buat kondisi sesuai dengan variabel REMOTE_ADDR seperti yang ditunjukkan di bawah ini.
Kemudian buat kondisi lain untuk pencocokan Virtual Host sesuai dengan variabel SERVER_NAME sebagai berikut:
Pada tahap ini, situs web pertama yang dihosting, www.mycompany1.com, mengelola alamat IP daftar hitam aplikasi web dari daftar hitam yang telah dikonfigurasi sebelumnya, yang disebut Blacklistmycompany1.txt.
Mari kita buat aturan lain untuk situs web kedua www.mycompany2.com dan ulangi konfigurasi yang sama seperti konfigurasi aturan sebelumnya, tetapi dalam hal ini, Anda harus mengubah SERVER_NAME menjadi mycompany2.com dan merujuk ke blacklist2.txt berikut.
Lihat seluruh konfigurasi kumpulan aturan WAF gabungan:
Terakhir, tambahkan aturan ini ke farm yang sudah dibuat, buka tab Farms dan pindahkan farm Hosting , dalam contoh kita, ke bagian Enabled farms seperti yang ditunjukkan di bawah ini.
Sekarang, jalankan aturan WAF untuk farm, klik tindakan Putar di bagian kiri atas jendela ini, dan sistem akan mulai memfilter lalu lintas HTTP untuk Hosting Farm.
Menguji rangkaian aturan Firewall Aplikasi Web #
IP klien 192.168.1.191 akan meminta situs web http://www.mycompany1.com dan http://www.mycompany2.com dan, sesuai dengan konfigurasi kami, sistem WAF akan mengizinkan koneksi ke layanan pertama dengan nama yang sama tetapi koneksi akan ditolak ke mycompany2.com karena IP ini telah dimasukkan ke dalam daftar hitam dengan nama Blacklistmycompany2.
Dari alamat IP 192.168.1.191 hingga VIP yang meminta situs web www.mycompany1.com melalui penyeimbang beban:
root@192.168.1.191:# curl -H "Host: www.mycompany1.com" http://192.168.100.58 -v * URL yang dibuat ulang ke: http://192.168.100.58/ * Mencoba 192.168.100.58... * Set TCP_NODELAY * Terhubung ke 192.168.100.58 (192.168.100.58) port 80 (#0) > GET / HTTP/1.1 > Host: www.mycompany1.com > Agen-Pengguna: curl/7.52.1 > Terima: */* > HTTP / 1.1 200 OK < Server: nginx/1.10.3 < Tanggal: Sel, 10 Sep 2019 15:36:22 GMT < Tipe Konten: teks/html < Panjang Konten: 11383 < Terakhir Dimodifikasi: Kam, 13 Des 2018 11:01: 49 GMT < Koneksi: tetap hidup < ETag: "5c123c1d-2c77" < Rentang Terima: byte
Dari alamat IP 192.168.1.191 hingga VIP yang meminta situs web www.mycompany2.com melalui penyeimbang beban:
root@192.168.1.191:# curl -H "Host: www.mycompany2.com" http://192.168.100.58 -v * URL yang dibuat ulang ke: http://192.168.100.58/ * Mencoba 192.168.100.58... * Set TCP_NODELAY * Terhubung ke 192.168.100.58 (192.168.100.58) port 80 (#0) > GET / HTTP/1.1 > Host: www.mycompany2.com > Agen-Pengguna: curl/7.52.1 > Terima: */* > * HTTP 1.0, asumsikan dekat setelah isi Permintaan HTTP/1.0 403 dilarang < Tipe Konten: teks/html < Panjang Konten: 17 < Kedaluwarsa: sekarang < Pragma: tanpa cache < Kontrol cache: tanpa cache, tanpa penyimpanan < * Curl_http_done: dipanggil prematur == 0 * Menutup koneksi 0 dibalas terlarangp
Setelah respons Terlarang dihasilkan, modul WAF memberitahukan penolakan tersebut dalam file Syslog load balancer.
root@zva6000:# tail -f /var/log/syslog 10 Sep 15:38:44 zva6000 pound: Hosting, ModSecurity: Peringatan. Mencocokkan "Operator `StrMatch' dengan parameter `mycompany2.com' terhadap variabel `SERVER_NAME' (Nilai: `www.mycompany2.com') [file "/usr/local/relianoid/config/ipds/waf/sets/HostingBlacklisting.conf"] [line "17"] [id "1001"] [rev ""] [msg "Custom Match 2"] [data ""] [severity "0"] [ver ""] [maturity "0"] [accuracy "0"] [hostname "192.168.100.58"] [uri "/"] [unique_id "156812992458.770641"] [ref "v0,13v21,18"] 10 Sep 15:38:44 zva6000 pound: Hosting, [WAF, layanan mycompany2, backend 192.168.100.22:80,] (7f6cfac3c700) [klien 192.168.1.191] ModSecurity: Akses ditolak dengan kode 403 (fase 1). Mencocokkan "Operator `StrMatch' dengan parameter `mycompany2.com' terhadap variabel `SERVER_NAME' (Nilai: `www.mycompany2.com') [file "/usr/local/relianoid/config/ipds/waf/sets/HostingBlacklisting.conf"] [baris "17"] [id "1001"] [rev ""] [msg "Custom Match 2"] [data ""] [tingkat keparahan "0"] [ver ""] [kematangan "0"] [akurasi "0"] [nama host "192.168.100.58"] [uri "/"] [unique_id "156812992458.770641"] [ref "v0,13v21,18"] 10 Sep 15:38:44 zva6ktpl1 pound: Hosting, layanan mycompany2, backend 192.168.100.25:80, (7f6cfac3c700) WAF menolak permintaan dari 192.168.1.191
Sekarang Anda dapat membuat kumpulan aturan firewall khusus untuk melindungi aplikasi web Anda menggunakan teknik inspeksi paket mendalam HTTP/S.












