
Firewall Rules Best Practices: วิธีเขียน Rule ที่ปลอดภัยและมีประสิทธิภาพ
Firewall Rules เป็นหัวใจของ network security ทำหน้าที่ allow หรือ deny traffic ตามเงื่อนไขที่กำหนด (source IP, destination IP, port, protocol) การเขียน firewall rules ที่ดีคือ balance ระหว่าง security (block ทุกอย่างที่ไม่จำเป็น) กับ usability (ไม่ block traffic ที่ต้องใช้งาน)
ปัญหาที่พบบ่อยคือ firewall rules ที่สะสมมาหลายปี จนไม่มีใครรู้ว่า rule ไหนยังใช้อยู่ rule ไหนไม่ได้ใช้แล้ว มี rules ที่ overlap กัน หรือ rules ที่ “any any allow” ที่ถูกเพิ่มเพื่อแก้ปัญหาชั่วคราวแต่ไม่เคยถูกลบ บทความนี้จะสอน best practices ในการเขียนและจัดการ firewall rules
หลักการพื้นฐาน
| หลักการ | รายละเอียด |
|---|---|
| Default Deny | Block ทุกอย่างเป็น default → allow เฉพาะที่จำเป็น |
| Least Privilege | Allow เฉพาะ traffic ที่จำเป็นต่อ business เท่านั้น |
| Specificity | เขียน rule ให้เฉพาะเจาะจงที่สุด (specific source, destination, port) |
| Order Matters | Rules ถูก evaluate จากบนลงล่าง match แรก = action |
| Document Everything | ทุก rule ต้องมี description ว่าทำไมถึงมี |
| Review Regularly | Review rules อย่างน้อยทุก 3-6 เดือน |
Rule Structure
องค์ประกอบของ Rule
ทุก firewall rule ประกอบด้วย: Source (IP/subnet/group): traffic มาจากไหน Destination (IP/subnet/group): traffic ไปไหน Service/Port (TCP 443, UDP 53): ใช้ port อะไร Action (Allow/Deny/Drop): อนุญาตหรือ block Direction (Inbound/Outbound): ทิศทาง Logging (Enable/Disable): บันทึก log หรือไม่ Description: อธิบายว่า rule นี้มีไว้ทำไม
Rule Ordering
ลำดับที่แนะนำ
| ลำดับ | ประเภท Rule | ตัวอย่าง |
|---|---|---|
| 1 | Anti-spoofing rules | Block private IPs จาก outside interface |
| 2 | Explicit deny (known bad) | Block known malicious IPs, geoblock |
| 3 | Infrastructure rules | Allow DNS, NTP, SNMP สำหรับ network devices |
| 4 | Business-critical rules | Allow traffic สำหรับ production applications |
| 5 | User access rules | Allow users เข้าถึง internet, internal apps |
| 6 | Management rules | Allow SSH/HTTPS สำหรับ management |
| 7 | Temporary rules | Rules ชั่วคราว (ต้องมี expiry date) |
| 8 | Cleanup/Log rule | Log denied traffic ก่อน default deny |
| 9 | Default deny | Deny all (implicit หรือ explicit) |
Common Mistakes
| Mistake | ปัญหา | วิธีแก้ |
|---|---|---|
| Any Any Allow | Allow ทุกอย่าง = ไม่มี security | ลบทันที ใช้ specific rules แทน |
| Overly broad rules | “Allow 10.0.0.0/8 to any” = เปิดกว้างเกินไป | Specify destination IP + port |
| No description | ไม่รู้ว่า rule มีไว้ทำไม ไม่กล้าลบ | ทุก rule ต้องมี description + ticket number |
| Shadow rules | Rule ถูก shadow โดย rule ก่อนหน้า (ไม่เคย match) | ใช้ firewall analyzer ตรวจหา shadow rules |
| Unused rules | Rules ที่ไม่มี traffic match (อาจ outdated) | Review hit counts ลบ rules ที่ hit count = 0 นานเกิน 90 วัน |
| Temporary rules ที่กลายเป็นถาวร | เพิ่ม rule ชั่วคราวแล้วลืมลบ | กำหนด expiry date ทุก temporary rule |
Zone-Based Design
Network Zones
แบ่ง network เป็น zones: Untrust (Internet): ภายนอก ไม่ trust DMZ: servers ที่ต้องเข้าถึงจาก internet (web, mail, DNS) Trust (Internal): corporate network users + applications Restricted: sensitive data (finance, HR, executive) Management: network/server management traffic กำหนด rules ระหว่าง zones: Untrust → DMZ: Allow specific ports (80, 443) DMZ → Trust: Allow specific connections (app → DB) Trust → Untrust: Allow with inspection Trust → Restricted: Allow specific users/services
Logging Best Practices
| Rule Type | Log? | ทำไม |
|---|---|---|
| Deny rules (blocked traffic) | Yes | ตรวจจับ attack attempts, troubleshooting |
| Allow rules สำหรับ sensitive zones | Yes | Audit trail สำหรับ compliance |
| Allow rules สำหรับ normal traffic | No/Sample | Volume สูงเกินไป log ทุก session |
| Default deny (cleanup rule) | Yes | เห็น traffic ที่ไม่ match rule ไหน |
Rule Review Process
ทุก 3-6 เดือน
1: ตรวจ hit counts — rules ที่ hit count = 0 นานเกิน 90 วัน อาจ outdated 2: ตรวจ overly broad rules — rules ที่ source หรือ destination เป็น “any” ควรทำให้เฉพาะเจาะจงขึ้น 3: ตรวจ temporary rules — rules ที่มี expiry date ผ่านแล้วควรลบ 4: ตรวจ shadow rules — rules ที่ถูก shadow โดย rule อื่น (ไม่มีประโยชน์) 5: ตรวจ documentation — ทุก rule มี description ครบหรือไม่ 6: สร้าง change log — บันทึกว่า review เมื่อไหร่ ลบ/แก้ rule อะไรบ้าง
Tools
| Tool | ประเภท | จุดเด่น |
|---|---|---|
| Tufin | Firewall Management | Rule review, compliance, automation |
| AlgoSec | Firewall Policy Management | Risk analysis, change management |
| FireMon | Firewall Analyzer | Shadow rules, unused rules detection |
| nipper | Audit Tool | Security audit สำหรับ firewall configs |
ทิ้งท้าย: Firewall Rules ต้องดูแลอย่างต่อเนื่อง
Firewall Rules ไม่ใช่ set-and-forget ต้อง review อย่างสม่ำเสมอ ใช้ default deny + least privilege เขียน description ทุก rule กำหนด expiry date สำหรับ temporary rules ลบ rules ที่ไม่ใช้ ใช้ zone-based design
อ่านเพิ่มเติมเกี่ยวกับ Zero Trust Network Architecture และ DNS Security ที่ siamlancard.com หรือจาก icafeforex.com และ siam2r.com