တစ်ရက် ကျွန်တော်လုပ်နေတဲ့ project တစ်ခုမှာ requirement တစ်ခုပို့လာတယ် သူ့ requirement ကတော့ လွယ်မလိုနဲ့ လက်ပေါက်ကပ်တဲ့ အရာလေးဖြစ်သွားတာ မို့ လာမှတ်တာပဲပြောရမှာပေါ့ စာလဲမရေးတာကြာပြီကိုး။ ဖြစ်ပုံက ဒီလို သူ့မှာ server တစ်လုံးရှိတယ် ftp နဲ့ sync လုပ်တာလဲရှိတယ် နောက် admin panel အပြင် main office and branches တွေကို သွားပြီးချိတ်တဲ့ api လဲရှိနေပြန်တယ်။သူတို့လိုချင်တာက ဒီလို FTP ကို SSL နဲ့ encrypt လုပ်ချင်တယ် တဲ့ ဒါလဲရသေးတယ် IIS မှာပဲ Setup လုပ်လိုက်ကြာတာပေါ့ တဝုန်းဝုန်း နောက် Firewall rule အပြင် Security Group နဲ့ သူတို့ ရဲ့ FTP end Point access ကို CIDR 32 နဲ့ပိုင်းပေးလိုက်တယ်။ ဂွကျတာက နောက်တစ် ပိုင်းအရောက်မှာ သူတို့ ရဲ့ panel ကို Singapore IP onlyပဲ ပိတ်ချင်တယ်တဲ့ အိုကေပေါ့ ကျွန်တော်တို့ ကအဲ့လောက်ဆိုလုပ်လို့ရသေးတယ် ဘာညာနဲ့အေးဆေးပေါ့ ထပ်ရောက်လာတဲ့ Requirement အရမှာတော့ www.example.com/portal Singapore တစ်ခြား နိုင်ငံက ကြိုကြားကြိုကြား ip တွေကို ပါ ဖွင့်စေချင်သတဲ့ နောက်တစ်ခုက တော့ example.com/apiblahblah/ ကျ တစ်မျိုးကန့်ချင်ပြန်ရော လက်ပေါက်အကုန်ကပ်ကုန်ကော Singapore total IP range တင်ကို 20,XXX,XXX ရှိတော့ Server ပေါ်တိုက်စစ်လဲမရ(စစ်ရင်လဲ တော် resource hogမှာဖြစ်တော့ Geoip db နဲ့ IIS plugin သုံးလုပ်လို့ရတယ် but sucks) Dev ကလဲ မလုပ်ချင် AWS CloudFront + wafသုံးမလား ဆိုတော့ကျ တော့လဲ မသုံးချင် (အားချန်ကုန်လို့တဲ့) ဆိုတဲ့ စိတ်ထဲအရင်က ကို့ဘာသာညှောင့်တုန်းက သုံးဖူးခဲ့တဲ့ Cloudflare waf လေးပြေးသတိရတော့တာပဲ။

Cloudflare ရဲ့ WAF က ဘာကောင်းလဲဆို free tier မှာ rule 5ခုပေးသုံးထားတယ်။ ပထမဆုံးလုပ်ရမှာက ကျွန်တော်တို့က Allow only singaporeဆိုတော့ရှင်းတယ် ကျွန်တော် တို့ ဆီမှာရလာတဲ့ requirement အရ သူတို့ပေးလာတဲ့ ip address range 10ခုရယ် Singaporeရယ်ကို allow ပေးရမယ်ပေါ့ အဲ့ Singapore ကတော့ထားလိုက် ဒီတိုင်း cloudflare ရဲ့ (ip.src.country eq “SG”) ဆိုတဲ့ rule နဲ့ ကန့်လိုက်လို့ရတယ် သူတို့ပေးလာတဲ့ ထဲမှာပါလာတဲ့အပြင်ကလာတဲ့ IP Range 10ခုလောက်ကျတော့

Custom Listထဲသွားဆောက်ပြီး ထည့်ပေးလိုက်လို့ရတယ် IP အနေနဲ့ပေါ့။ အဲ့ကနေပြီး ကျွန်တော် List ဆောက်ပြီးတာနဲ့ OR expressionနဲ့ ဖမ်းပြီးလွှတ်ပေးလိုက်ရုံပေါ့

အဲ့မှာတင် free ရတဲ့ RULE တစ်ခုကုန်တယ် နောက်တစ်ခုကတော့ရှင်းတယ် example.com blah blah ကိုလာသမျှအကုန် block ဆိုတဲ့ ruleထည့်ရမှာဖြစ်လို့

ဒါမျိုးလေးထားပေးလိုက်တယ်ပေါ့ အဲ့မှာ နှစ်ခုကုန်ရော အလကားရတာ က ၅ခုတင်ကိုးဗျ
နောက်ဆုံးလုပ်ရမယ့် ဟာကျ example.com/apiကို cidr 28 blockတစ်ခုပဲ allow လုပ်ချင်တာဆိုတော့ ဒီအတွက်ကျ ဒီလိုလေး ပေ့ါ

(http.host eq “example.com”) and (http.request.uri.path eq “/api”) and (ip.src in 1XX.XX.XX.XX/28) ဆိုပြီးဖွင့်ချပေးလိုက်တယ်ပေါ့ SKIPနဲ့ နောက် တစ်ခုကတော့ ပြောင်းပြန်ပေါ့ အဲ့ကောင်မဟုတ်ရင် blockမယ်ဆိုပြီးရေးပေးလိုက်တယ် ပေါ့ block rule နဲ့ အလကားရတဲ့ rule 4ခုလဲကုန် list 1ခုလဲကုန်ကဲပြီးလေသရောပေါ့။ :3 client လဲပျော်လေသတည်းပေါ့ကွယ်
Leave a Reply