บทนำ
บทความนี้อธิบายสาเหตุและวิธีแก้ไขปัญหาที่ NGAF/NGFW ไม่สามารถ Block บาง HTTPS Website ได้ เนื่องจาก Website นั้นๆ ใช้งาน Encrypted Client Hello (ECH) ซึ่งเป็นมาตรฐานความปลอดภัยใหม่ของ TLS 1.3 ที่ทำการเข้ารหัส ClientHello (รวมถึง SNI - Server Name Indication) ทำให้ Content Security Policy ของ NGAF ไม่สามารถมองเห็นชื่อ Domain ที่ถูกเรียกได้ จึงไม่สามารถ Block ได้
Firmware 8.0.107+: ตั้งแต่ Firmware 8.0.107 NGAF เพิ่มตัวเลือกใหม่ใน Objects > Security Policy Template > Content Security > URL Filter > Enhanced Filtering ที่จัดการ DoH/DoT/ECH/Safe Search ได้โดยตรง โดยไม่ต้องใช้ IPS Workaround ในบทความนี้:
- Enable DNS filtering — ตรวจ Site ที่กำหนดตอน DNS Lookup
- Disable DoH on Firefox — บังคับ Firefox ไม่ใช้ DoH (DNS Query กลับเป็น UDP 53)
- Strip ECH parameters — ลบ ECH ใน ClientHello เพื่อให้ SNI กลับมา Plaintext (NGAF เห็น Domain ได้)
- Enable safe search — บังคับ Safe Search บน Google / Bing / YouTube
- Decrypt DoT/DoH traffic — Decrypt DNS-over-TLS / DNS-over-HTTPS
สาเหตุ
เมื่อ Browser ใช้งาน ECH ร่วมกับ DoH (DNS over HTTPS) ตัว NGAF จะไม่สามารถมองเห็นข้อมูลต่อไปนี้:
- Domain Name ใน TLS ClientHello (SNI ถูกเข้ารหัส)
- DNS Query ที่ถูกส่งผ่าน DoH (TCP 443/853) ไม่ใช่ UDP 53 ที่ NGAF ดักจับได้
เพื่อแก้ไขจะต้องบังคับให้ Browser กลับไปใช้ DNS Query แบบ UDP 53 (เพื่อให้ NGAF ดักจับและตรวจสอบได้) และบังคับให้ ClientHello ไม่ใช้ ECH
ข้อกำหนดเบื้องต้น
- NGAF/NGFW Version 8.0.35 ขึ้นไป
- มีสิทธิ์ Admin ในการเข้าถึง NGAF Web Console
- License IPS ยัง Active
- ทราบ Internal Subnet/IP Range ของ User ที่ต้องการบังคับใช้
วิธีแก้ไข
1. กำหนดค่า Block DoH Policy
สร้าง Policy เพื่อ Block DoH (DNS over HTTPS) บน TCP Port 443 และ 853 ยกเว้นเฉพาะ Destination DNS Server ที่ User ต้องใช้งาน เพื่อบังคับให้ DNS Query ออกไปใช้ UDP Port 53 แทน (ที่ NGAF สามารถดักจับได้)
DNS Server ที่ควร Allow ผ่าน UDP 53 ได้:
- Cloudflare: 1.1.1.1, 1.0.0.1 (IPv4) / 2606:4700:4700::1111, 2606:4700:4700::1001 (IPv6)
- Google: 8.8.8.8, 8.8.4.4 (IPv4) / 2001:4860:4860::8888, 2001:4860:4860::8844 (IPv6)
- Quad9: 9.9.9.9, 149.112.112.112 (IPv4)
ขั้นตอนการสร้าง Policy:
- ไปที่ Policies > Network Security > Policies > Add
- กำหนดชื่อ Policy เช่น "Block_DoH"
- เลือก Source Zone เป็น LAN, Destination Zone เป็น WAN
- กำหนด Source Address เป็น Internal Subnet ของ User
- กำหนด Destination Address เป็น Any
- กำหนด Service เป็น TCP Port 443 และ TCP Port 853
- Action: Deny
- สร้าง Exception Policy ที่อนุญาต UDP 53 ไปยัง DNS Server ตามรายการข้างต้นที่ User ใช้งาน
2. สร้าง Custom IPS Signature เพื่อจำกัดการใช้งาน ECH
ขั้นตอน:
- ไปที่ Objects > Security Policy Templates > IPS Signature Database > Custom IPS Signature
- คลิก Add เพื่อเปิดหน้า Add Signature
- กรอกข้อมูลดังนี้:
- Rule ID: ตั้งค่าตาม Format ของ Custom Signature (เช่น 12990001)
- Rule Name: ตั้งชื่อสื่อความหมาย เช่น "Block_ECH"
- Description: "Block Encrypted Client Hello extension"
- Threat Level: High
- Status: Enabled. Block if attack detected
- Direction: Request
- Protocol: TCP
- Port: 443
- Type: Server Protection
- Character String / Regular Expression: กำหนด Pattern ที่ตรงกับ ECH Extension ใน TLS ClientHello (โปรดติดต่อ Sangfor Engineer เพื่อขอ Pattern ที่เป็นปัจจุบัน เนื่องจาก ECH Standard มีการอัพเดตอยู่เรื่อยๆ)
- กด Save
3. กำหนดค่า IPS Rule เพื่อนำ Custom IPS Signature มาบังคับใช้
- ไปที่ Objects > Security Policy Templates > IPS
- กด Add เพื่อสร้าง IPS Template ใหม่ หรือเลือก Template เดิมที่ใช้งานอยู่
- เลือก Custom IPS Signature ที่สร้างไว้ในขั้นตอนที่ 2 มาเปิดใช้งาน
- กด Save
4. กำหนด Policy และเพิ่ม IPS Rule เพื่อดักจับ DNS Response
สร้าง Policy เพิ่มเติมเพื่อดักจับ DNS Response Packet และบังคับให้ Client ใช้ ClientHello แบบไม่เข้ารหัส
- ไปที่ Policies > Network Security > Policies > Add
- ตั้งชื่อ Policy เช่น "ECH_Inspection"
- เลือก Source Zone, Destination Zone, Source/Destination Address ตามที่ต้องการบังคับใช้
- ในส่วน Protection เลือก IPS Template ที่ Enable Custom IPS Signature สำหรับ ECH ไว้
- กำหนด Action เป็น Block
- กด Save และ Commit Policy
การตรวจสอบหลังตั้งค่า
- ทดสอบเข้าเว็บไซต์ที่ใช้ ECH (เช่น เว็บไซต์ที่ Block ไม่ได้ก่อนหน้านี้) จากเครื่อง Client ภายใน Network
- เว็บ Browser ควรถูกบังคับให้ใช้ ClientHello แบบไม่เข้ารหัส และ NGAF จะสามารถ Block ได้ตาม Content Security Policy ที่กำหนดไว้
- ตรวจสอบ Log การ Block ใน Logs > Security Logs > IPS Log
- ตรวจสอบว่า DNS Query ของ Client กลับไปใช้ UDP 53 จาก Firewall Log
หมายเหตุ
- ECH (Encrypted Client Hello) เป็นมาตรฐานที่ยังคงพัฒนาอยู่ Pattern ของ Custom IPS Signature อาจต้องมีการปรับปรุงเป็นระยะ
- การ Block DoH อาจทำให้ User ที่ใช้ Browser ที่บังคับ DoH (เช่น Firefox ที่เปิด DoH ตั้งแต่ Default) ใช้งาน Internet ไม่ได้ในตอนแรก ควรแจ้ง User ก่อน
- หากใช้ Browser ที่รองรับ ECH (เช่น Chrome 117+, Firefox 118+) อาจพบว่า Bypass ได้บางกรณี ขึ้นอยู่กับการตั้งค่าของ Server และ DNS
- ในบางสถานการณ์อาจต้องตั้งค่า Group Policy บนเครื่อง Client เพื่อ Disable DoH หรือ ECH ที่ Browser โดยตรง
- โปรดติดต่อ Sangfor Support เพื่อขอ Custom IPS Signature Template ที่อัพเดตล่าสุดสำหรับการ Block ECH
ผลที่คาดว่าจะได้รับ
หลังจากตั้งค่า IPS Rule และ Policy เพื่อดักจับ DNS Packet เรียบร้อยแล้ว ระบบจะบังคับให้ Packet กลับไปใช้ Handshake แบบ Client Hello ที่ไม่เข้ารหัส ทำให้ NGAF สามารถมองเห็น SNI และ Block Website ตาม Content Security Policy ได้ตามปกติ
ข้อคิดเห็น
0 ข้อคิดเห็น
โปรด ลงชื่อเข้าใช้ เพื่อแสดงข้อคิดเห็น