0

Membuat beberapa rules pada WAF AWS

Sebelumnya saya sudah bahas sedikit tentang rule ditutorial ini 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.