บทความนี้อธิบายสาเหตุและวิธีแก้ไขกรณีที่ Sangfor Athena NGFW (NGFW) ตั้งค่า URL Filter / Content Security เพื่อ Block เว็บไซต์ไว้แล้ว แต่ยังมีบาง HTTPS Website ที่ Block ไม่ได้ สาเหตุมาจากเว็บไซต์เหล่านั้นใช้เทคโนโลยี Encrypted Client Hello (ECH) ซึ่งเข้ารหัสชื่อโดเมน (SNI) ทำให้ NGFW มองไม่เห็นชื่อเว็บที่แท้จริงจึงไม่สามารถจับคู่กับ Policy เพื่อ Block ได้ โดยมักพบกับเว็บที่ให้บริการผ่าน Cloudflare และเบราว์เซอร์รุ่นใหม่ที่เปิด ECH ร่วมกับ Secure DNS (DoH)
- อาการของปัญหา
- สาเหตุ: ECH ทำงานอย่างไร และทำไม NGFW จึง Block ไม่ได้
- แนวทางแก้ไข (ภาพรวม) และการเลือกวิธีตามเวอร์ชัน Firmware
- ขั้นตอนที่ต้องทำร่วมกันทุกเวอร์ชัน: บังคับ DNS ให้กลับมาเป็น Plaintext
- วิธีที่ 1 (แนะนำ): Enhanced Filtering — สำหรับ Firmware 8.0.107 ขึ้นไป
- วิธีที่ 2 (Manual): Custom IPS Signature — สำหรับ Firmware 8.0.35–8.0.106
- การตรวจสอบหลังตั้งค่า
- ข้อจำกัดและข้อควรทราบ
อาการของปัญหา
- ตั้งค่า Block เว็บไซต์หรือหมวดหมู่ไว้ใน URL Filter / Content Security แล้ว แต่ยังมีบางเว็บ HTTPS ที่ยังเข้าใช้งานได้อยู่
- เว็บที่ Block ไม่ได้มักเป็นเว็บที่ให้บริการหลัง Cloudflare หรือเปิดใช้ ECH โดยเฉพาะเมื่อผู้ใช้ใช้เบราว์เซอร์ที่เปิด ECH + Secure DNS/DoH (เช่น Chrome 117+ หรือ Firefox 118+ ที่เปิด ECH ไว้เป็นค่าเริ่มต้น)
- เว็บอื่น ๆ ทั่วไปยัง Block ได้ตามปกติ ปัญหาเกิดเฉพาะเว็บที่ใช้ ECH เท่านั้น
สาเหตุ: ECH ทำงานอย่างไร และทำไม NGFW จึง Block ไม่ได้
ตามปกติ NGFW จะ Block เว็บ HTTPS โดยอ่านชื่อโดเมน (SNI – Server Name Indication) ที่ปรากฏเป็น Plaintext ในข้อความ TLS ClientHello ตอนเริ่มเชื่อมต่อ แล้วนำไปเทียบกับ URL Filter
ECH (Encrypted Client Hello) เป็นส่วนขยายของ TLS 1.3 ที่ เข้ารหัส ClientHello รวมถึงฟิลด์ SNI ทำให้ NGFW มองไม่เห็นชื่อโดเมนจริง จะเห็นเพียงชื่อ "หน้ากาก" (cover SNI) ที่ส่งมาแบบ Plaintext แทน ซึ่งสำหรับเว็บที่อยู่หลัง Cloudflare ค่านี้คือ cloudflare-ech.com เหมือนกันหมดทุกเว็บ NGFW จึงไม่สามารถแยกแยะและ Block เว็บปลายทางที่แท้จริงได้
เบราว์เซอร์ได้ "กุญแจ ECH" มาจากไหน? ก่อนเริ่ม TLS Handshake เบราว์เซอร์จะสอบถาม DNS ชนิดพิเศษชื่อ HTTPS Record (Type 65) ซึ่งภายในมี "กุญแจสาธารณะของ ECH" (ECHConfig) บรรจุอยู่ โดยมีชื่อ cloudflare-ech.com ฝังอยู่ในข้อมูลนั้น เบราว์เซอร์จะใช้กุญแจนี้เข้ารหัส SNI จริง
ดังนั้น NGFW จึงมี "จุดบอด" ได้ 2 จุด คือ (1) ถ้า DNS ถูกส่งแบบเข้ารหัส (DoH/DoT) NGFW จะมองไม่เห็นแม้แต่คำถาม DNS และ (2) SNI ถูกเข้ารหัสด้วย ECH
| สถานการณ์ | NGFW เห็นชื่อโดเมนจริงหรือไม่ |
|---|---|
| HTTPS ปกติ (ไม่มี ECH), DNS = Plaintext (UDP 53) | เห็น (จาก SNI และ DNS Query) → Block ได้ |
| ECH เปิด + DNS = DoH/DoT (เข้ารหัส) | ไม่เห็นทั้ง SNI และ DNS → Block ไม่ได้ |
| ECH เปิด + DNS = Plaintext (UDP 53) | NGFW เห็น SNI ภายนอก (Cover SNI) เป็น cloudflare-ech.com ส่วน SNI จริงยังถูกเข้ารหัสอยู่ แต่ NGFW สามารถ "ตัด ECH" ใน DNS Response เพื่อบังคับให้ SNI จริงกลับมาเป็น Plaintext ได้ |
แนวทางแก้ไข (ภาพรวม) และการเลือกวิธีตามเวอร์ชัน Firmware
การแก้ปัญหาต้องทำเป็น 2 ชั้น เสมอ ดังนี้
- ชั้นที่ 1 — บังคับ DNS ให้กลับมาเป็น Plaintext (UDP 53): โดย Block การใช้ DNS แบบเข้ารหัส (DoH/DoT/DoQ) ไปยัง Public DNS Resolver หรือทำการ Decrypt DoT/DoH เพื่อให้ NGFW มองเห็นและแก้ไข DNS ได้ (ดูหัวข้อ บังคับ DNS ให้เป็น Plaintext)
- ชั้นที่ 2 — ตัด / Block ECH Config ใน DNS HTTPS Record (Type 65): เพื่อให้เบราว์เซอร์ไม่สามารถใช้ ECH และย้อนกลับไปส่ง SNI จริงแบบ Plaintext ซึ่ง วิธีในชั้นนี้จะต่างกันตามเวอร์ชัน Firmware
| เวอร์ชัน Firmware | วิธีตัด ECH (ชั้นที่ 2) |
|---|---|
| 8.0.107 ขึ้นไป | วิธีที่ 1: Enhanced Filtering — เปิดตัวเลือก Strip ECH parameters (แนะนำ เพราะครอบคลุมทุกผู้ให้บริการ ไม่เฉพาะ Cloudflare และตั้งค่าง่ายกว่า) |
| 8.0.35 – 8.0.106 |
วิธีที่ 2: Custom IPS Signature — สร้าง Signature จับ cloudflare-ech.com ใน DNS Response เอง (ทำ Manual) |
ขั้นตอนที่ต้องทำร่วมกันทุกเวอร์ชัน: บังคับ DNS ให้กลับมาเป็น Plaintext
สร้าง Application Control Policy เพื่อ Block การทำ DNS แบบเข้ารหัส (DoH/DoT/DoQ) เฉพาะที่วิ่งไปยัง Public DNS Resolver ที่รู้จัก เพื่อบังคับให้เครื่อง Client ย้อนกลับไปใช้ DNS แบบ Plaintext บน UDP 53 ที่ NGFW ตรวจสอบได้
ขั้นตอน — ไปที่ Policies > Access Control > Application Control แล้วกด Add:
-
สร้าง Network Object (Address) ชื่อเช่น "Public DNS" ที่รวม IP ของ Public DNS Resolver ยอดนิยม (ที่รองรับ DoH/DoT) เช่น:
- 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)
(รายการนี้เป็นตัวอย่าง Public Resolver ยอดนิยม สามารถปรับหรือเพิ่มเติมได้ตามที่พบในเครือข่ายจริง)
ตั้งชื่อ Policy เช่น "Block DoH" และตั้ง Status = Enabled
Source: กำหนด Src Zone / Src Address ให้ครอบคลุม Subnet ของ User ภายในที่ต้องการบังคับใช้
Destination: Dst Zone = any, Dst Address = "Public DNS" (Object ที่สร้างในข้อ 1)
Services: เลือก Service ให้ครอบคลุมช่องทาง DNS เข้ารหัสทั้งหมด ตามที่แสดงในภาพคือ https, DoT 853 และ QUIC ซึ่งโดยทั่วไปครอบคลุม DoH (TCP/UDP 443), DoT (TCP 853) และ DoH3 / DNS-over-QUIC (UDP 443/853)
-
Action = Deny จากนั้นกด Save
วิธีที่ 1 (แนะนำ): Enhanced Filtering — สำหรับ Firmware 8.0.107 ขึ้นไป
ตั้งแต่ Firmware 8.0.107 NGFW มีตัวเลือก Enhanced Filtering ในหน้า Content Security ที่จัดการ DoH/ECH/Safe Search ได้โดยตรง ไม่ต้องสร้าง Custom IPS Signature เอง และ Strip ECH parameters ยังครอบคลุมทุกผู้ให้บริการ ECH ไม่เฉพาะ Cloudflare
ขั้นตอน — ไปที่ Objects > Security Policy Template > Content Security แล้วกด Add (หรือแก้ไข Template เดิม):
ตั้งชื่อ Template และติ๊กเปิด URL Filter พร้อมเลือกหมวดหมู่ / เว็บที่ต้องการ Block ในช่อง Sites
-
ที่ Enhanced Filtering ให้ติ๊กเลือกตัวเลือกต่อไปนี้ แล้วกด Save
| ตัวเลือก Enhanced Filtering | หน้าที่ |
|---|---|
| Enable DNS filtering | ตรวจสอบและ Block เว็บที่กำหนดไว้ตั้งแต่ขั้นตอน DNS Lookup |
| Disable DoH on Firefox | บังคับให้ Firefox ไม่ใช้ DoH เพื่อให้ DNS Query กลับมาเป็น Plaintext |
| Strip ECH parameters | ลบพารามิเตอร์การเข้ารหัสใน DNS เพื่อปิดการเข้ารหัส ClientHello และทำให้ฟิลด์ SNI กลับมาเป็น Plaintext ช่วยให้ระบุเว็บที่ถูกซ่อนไว้หลัง CDN ได้ |
| Enable safe search | บังคับ Safe Search บน Google / Bing / YouTube (ตัวเลือกเสริม) |
| Decrypt DoT/DoH traffic | ถอดรหัส DNS ที่เข้ารหัส (ต้องติดตั้ง Root Certificate ที่ Client ก่อน) ใช้แทนการ Block DoH/DoT |
นำ Content Security Template นี้ไปผูกกับ Policy ที่ Policies > Network Security > Policies โดยเปิด Content Security ในหัวข้อ Basic Protection และตั้ง Action = Deny จากนั้น Commit
วิธีที่ 2 (Manual): Custom IPS Signature — สำหรับ Firmware 8.0.35–8.0.106
สำหรับ Firmware ที่ยังไม่มี Enhanced Filtering ให้สร้าง Custom IPS Signature เพื่อ Block DNS Response ที่บรรจุ ECH Config ของ Cloudflare ด้วยตนเอง (ทำหัวข้อ บังคับ DNS ให้เป็น Plaintext ให้เสร็จก่อน เพราะ Signature นี้จะทำงานได้เฉพาะเมื่อ DNS เป็น Plaintext บน UDP 53)
ข้อกำหนดเบื้องต้น
- NGFW Firmware 8.0.35 ขึ้นไป และมีสิทธิ์ Admin เข้าถึง Web Console
- License IPS ยัง Active
- ทราบ Subnet / IP Range ของ User ภายในที่ต้องการบังคับใช้ และทำหัวข้อ Block DoH เรียบร้อยแล้ว
ขั้นที่ 1: สร้าง Custom IPS Signature จับ ECH Config ใน DNS Response
ไปที่ Objects > Threat Signature Database > Custom Database > Custom IPS Signature แล้วกด Add จากนั้นกรอกค่าตามตารางด้านล่าง
| ฟิลด์ | ค่าที่ตั้ง |
|---|---|
| Rule ID | ตั้งตาม Format ของ Custom Signature เช่น 12990002 |
| Rule Name / Description | deny-cloudflare-ech.com |
| Threat Level | High |
| Status | Enabled. Block if attack detected |
| Character String | \x12cloudflare-ech.com |
| Direction | Response |
| Protocol | UDP |
| Port | 53 |
| Type | Endpoint protection |
\x12cloudflare-ech.com: ค่า \x12 คือไบต์เลข 18 (ความยาวของข้อความ "cloudflare-ech.com" ที่มี 18 ตัวอักษรพอดี) ซึ่งเป็นไบต์ความยาวนำหน้าฟิลด์ public_name ภายใน ECH Config ที่อยู่ใน DNS HTTPS Record เมื่อ Signature จับสตริงนี้ใน DNS Response ได้ NGFW จะ Block Response นั้น เบราว์เซอร์จึงไม่ได้กุญแจ ECH และย้อนกลับไปส่ง SNI จริงแบบ Plaintextในหน้านี้จะมีช่อง Regular Expression (พร้อมปุ่ม RegEx Tester) ให้ใช้แทน Character String ได้เช่นกัน แต่ตามค่าที่ใช้งานได้จริงในภาพจะกรอกที่ช่อง Character String และเว้นช่อง Regular Expression ว่างไว้
ขั้นที่ 2: เปิดใช้ Custom Signature ใน Intrusion Prevention Template
ไปที่ Objects > Security Policy Template > Intrusion Prevention แล้วกด Add เพื่อสร้าง Template ใหม่ (เช่นชื่อ "Block Cloudflare") หรือแก้ไข Template เดิม
-
ในกลุ่ม Protection Features ให้ติ๊ก Endpoint Protection แล้วเลือก Custom IPS Rules (ตั้งค่าให้ "All take effect") เพื่อให้ Custom Signature ที่สร้างไว้มีผล จากนั้นกด Save
ขั้นที่ 3: ผูก IPS Template เข้ากับ Network Security Policy
ไปที่ Policies > Network Security > Policies แล้วกด Add (หรือแก้ไข Policy เดิม) เช่นชื่อ "Block Cloudflare"
เลือก Source / Destination Zone และ Address ให้ครอบคลุม User ที่ต้องการบังคับใช้
ในหัวข้อ Basic Protection ให้ติ๊ก Intrusion Prevention แล้วเลือก Template "Block Cloudflare" ที่สร้างไว้ พร้อมตั้ง Action = Deny
-
กด Next / Save แล้ว Commit Policy
การตรวจสอบหลังตั้งค่า
- ทดสอบเข้าเว็บที่ก่อนหน้านี้ Block ไม่ได้ จากเครื่อง Client ภายใน Network — เว็บนั้นควรถูก Block ได้แล้ว (แนะนำให้ปิด/เปิดเบราว์เซอร์ใหม่ หรือ Clear DNS Cache ก่อนทดสอบ และทดสอบทั้ง Chrome และ Firefox)
- ตรวจสอบว่า DNS Query ของ Client กลับไปวิ่งเป็น UDP 53 ไม่ใช่ TCP/UDP 443 หรือ 853 (ดูได้จาก Session List / Monitor)
- ตรวจสอบ Log การ Block ใน Monitor / Logs ว่ามีการ Deny DoH (Application Control) และ/หรือ IPS / URL Filter ทำงานตามที่ตั้งค่าไว้
ข้อจำกัดและข้อควรทราบ
-
วิธีที่ 2 ครอบคลุมเฉพาะ Cloudflare: Signature
\x12cloudflare-ech.comจับได้เฉพาะเว็บที่ใช้ ECH ผ่าน Cloudflare (public_name = cloudflare-ech.com) เท่านั้น เว็บที่ใช้ ECH จากผู้ให้บริการอื่นจะใช้ public_name ต่างออกไปและไม่ถูกจับ — หากต้องการครอบคลุมทั่วไป แนะนำ Firmware 8.0.107+ และใช้ Strip ECH parameters (วิธีที่ 1) - Block DoH ต้องทำเฉพาะปลายทาง Public DNS ที่รู้จัก ไม่ใช่ Deny 443 ทั้งหมด และควรครอบคลุม UDP 443 (DoH3/QUIC) และ TCP/UDP 853 (DoT/DoQ) ด้วย อย่างไรก็ตามวิธีนี้เป็นการควบคุมแบบ "ไล่ปิดทีละช่องทาง" (Best-effort) เพราะเบราว์เซอร์/แอปอาจตั้ง DoH Server อื่นเองได้ จึงควรทบทวนรายการ Public DNS เป็นระยะ
- HTTP/3 (QUIC): เว็บที่ใช้ HTTP/3 จะวิ่งผ่าน QUIC บน UDP 443 และพา SNI/ECH ไปด้วย หาก NGFW ตรวจเฉพาะ TCP 443 อาจถูก Bypass ได้ ควรพิจารณา Block หรือ Decrypt UDP 443 ประกอบด้วย
- DNSSEC: หากโดเมนเปิด DNSSEC และ Client/Resolver ตรวจสอบ DNSSEC การ Block/แก้ไข DNS Response อาจทำให้ Resolve ล้มเหลว (SERVFAIL) แทนการ Fallback เงียบ ๆ — ในทางปฏิบัติ Stub Resolver ของเบราว์เซอร์ส่วนใหญ่ไม่ตรวจ DNSSEC จึงมักใช้งานได้ แต่ผลอาจต่างกันตามสภาพแวดล้อม
- ECH / DoH เป็นเทคโนโลยีที่พัฒนาต่อเนื่อง อาจต้องปรับ Signature / Policy เป็นระยะ วิธีที่ได้ผลถาวรและเชื่อถือได้มากที่สุดคือจัดการที่เครื่อง Client โดยตรง เช่นใช้ Group Policy / MDM เพื่อปิด DoH และ ECH ในเบราว์เซอร์
ข้อคิดเห็น
0 ข้อคิดเห็น
โปรด ลงชื่อเข้าใช้ เพื่อแสดงข้อคิดเห็น