0

Membuat beberapa rules pada WAF AWS

Sebelumnya saya sudah bahas sedikit tentang rule ditutorial: Apa itu WAF (Web Application Firewall), Cara kerja WAF pada AWS.

Apa itu Rule pada WAF AWS?

Jadi rule itu berisi aturan-aturan yang digunakan untuk memfilter / menolak request yang masuk ke dalam aplikasi web. Jika request yang masuk sesuai kriteria rule, maka diizinkan, jika tidak maka ditolak. Saya paste kembali gambar berikut dari tutorial sebelumnya:

Bisa dilihat, user mengakses ke test-waf.latcoding.com harus melalui WAF AWS terlebih dahulu, disana ada pengecekan rule 1 dan rule 2. Misalkan rule tersebut berisi:

  • rule 1 = IP user harus 111.222.333.444
  • rule 2 = User-Agent harus dari browser Chrome saja

Jika user tersebut memenuhi kriteria dari 2 rule tersebut, maka user bisa mengakses test-waf.latcoding.com, jika tidak maka ditolak (kita bisa set responsenya, misal 401, 403, dsb).


Ditutorial kali ini kita akan belajar membuat 3 rules:

  • rule WAF AWS: Batasi IP mana yang boleh mengakses website
  • rule WAF AWS: User-Agent harus dari browser Chrome saja
  • rule WAF AWS: Rate limiter berdasarkan IP client/user (max user request 100 per 5 menit)


Note: Saya asumsikan disini kita sudah mensetup Application Load Balancer dan WAFnya. Jadi kita tinggal buat rule WAFnya saja.
Domain yang digunakan untuk testing adalah test-waf.latcoding.com


Rule WAF AWS: batasi IP mana yang boleh mengakses website

Ada 2 komponen yang harus kita buat:

  1. IP set -> List IP yang boleh mengakses website
  2. Rule -> Aturan untuk batasi IP tertentu


1. IP Set

  • Klik menu AWS WAF
  • Pilih IP Sets
  • Pilih Region Asia Pasific (Singapore) -> *Saya disini menghost di Region Singapore
  • Klik Create IP set

  • Masukkan IP set name dan Descriptionnya: list-ip-allowed
  • Pilih Region: Asia Pasific (Singapore)
  • IP Version: IPV4
  • Masukkan IP yang ingin dilist, contoh disini saya masukkan 114.4.212.51/32, dimana /32 adalah range CIDRnya. Kalau /32 berarti range IPnya hanya 1 IP saja yaitu 114.4.212.51
  • Klik Create IP set
ip set rule waf aws

Setelah itu akan sukses terbuat


2. Rule

Setelah kita mendaftarkan IP di IP sets, selanjutnya kita buat rulenya.

  • Buka WAF ACL anda, misal punya saya: test-waf
  • Akan ada banyak tab, buka tab Rules, pada sebelah kanan klik Add rules > Add my own rules and rule groups untuk membuat rule sesuai keinginan sendiri
  • Akan dibawa ke halaman Add rule:
    • Pada Rule type
      • pilih Rule builder
    • Pada Rule Builder
      • masukkan nama Rule misal: rule-1
      • typenya pilih Regular rule
    • Pada If a request, pilih doesn’t matches the statement (NOT)
      • Pada Statement, Pilih Inspect: Originatest from an IP address in
      • Pada IP set, pilih list-ip-allowed
        • Pada IP address to use as the originating address, pilih Source IP address
    • Pada Then
      • Pilih Action: Block
      • Pada Custom Response: Enable
        • Masukkan Response code: 403
    • Klik Add rule
membuat rule waf aws
  • Akan dibawa ke halaman Set Rule Priority:
    • Pada Set Rule Priority, klik save
  • Setelah itu rule success terbuat


Test

Sekarang kita test, misal disini saya mengakses test-waf.latcoding.com menggunakan IP selain 114.4.212.51, maka responsenya akan 403 forbidden

Jika menggunakan IP 114.4.212.51, hasilnya bisa diakses


Rule WAF AWS: User-Agent harus dari browser Chrome saja

  • Buat rule baru dengan nama rule-2, type nya Regular rule
  • Pada If a request: pilih doesn’t match the statement (NOT)
  • Pada Statement, pilih inspect: Single header
    • Pada Header field name, masukkan: User-Agent
    • Pada Match Type pilih: Contains String
    • Pada String to Match, masukkan: Chrome
  • Pada Then
    • Pilih Block
    • Custom Response: enable
      • masukkan code 401
rule waf aws
  • Klik Add rule > Pada Set rule priority > save


Test

Kalau kita buka dengan browser mozilla, maka responsenya akan 401 Unauthorized

rule waf aws

Jika dibuka pada browser Chrome, maka bisa diakses

rule waf aws


Rule WAF AWS: Rate limiter berdasarkan IP client/user (max user request 100 per 5 menit)

  • Buat rule dengan nama rule-3. Typenya pilih Rate-based rule
  • Pada Rate-limiting criteria
    • Masukkan Rate limit: 100, artinya 100 request per 5 menit (default dari AWS)
    • Request aggregation: Source IP address
    • Scope of inspection and rate limiting > Only consider requests that match the criteria in a rule statement
    • If a request: matches the statement
    • Pada statement
      • Inspect: Single header
      • Header field name: Host
      • Match type: Matches reguler expression
      • Reguler expression: (test\-waf\.latcoding\.com)
    • Pada Then
      • Action: block -> enable
      • Masukkan code 429
    • Klik Add rule > Set rule priority > Save


Test

Kita test menggunakan jmeter dengan request lebih > 100 request, maka akan mendapatkan response 429 Too Many Requests

rule waf aws

Ambar Hasbiyatmoko

Hello, I'm web developer. Passionate about programming, web server, and networking.

Leave a Reply

Your email address will not be published. Required fields are marked *

Time limit is exhausted. Please reload the CAPTCHA.