
DNS Security: ป้องกัน DNS Spoofing และ DNS Tunneling สำหรับองค์กร
DNS (Domain Name System) เป็นหัวใจของ internet ทุก website, email, application ต้องใช้ DNS ในการแปลง domain name เป็น IP address แต่ DNS ถูกออกแบบมาตั้งแต่ปี 1983 โดยไม่ได้คำนึงถึง security ทำให้ DNS เป็นเป้าหมายยอดนิยมของผู้โจมตี จากรายงานของ IDC กว่า 87% ขององค์กรเคยถูกโจมตีผ่าน DNS อย่างน้อย 1 ครั้ง
การโจมตี DNS ที่พบบ่อยที่สุดคือ DNS Spoofing (ปลอมแปลง DNS response เพื่อส่ง user ไปเว็บปลอม) และ DNS Tunneling (ใช้ DNS protocol เป็นช่องทางลักลอบส่งข้อมูลออก) บทความนี้จะอธิบายทั้ง 2 การโจมตี วิธีป้องกัน และ best practices สำหรับ DNS security ในองค์กร
DNS Spoofing / Cache Poisoning
วิธีการโจมตี
DNS Spoofing คือการปลอมแปลง DNS response ให้ DNS resolver ได้รับ IP address ปลอม เมื่อ user พิมพ์ www.bank.com DNS resolver ควรได้ IP จริงของธนาคาร แต่ถ้าถูก spoofing จะได้ IP ของเว็บปลอมที่หน้าตาเหมือนของจริง user กรอก username/password ก็ถูกขโมยไป
Cache Poisoning เป็นรูปแบบหนึ่งของ DNS Spoofing ที่ผู้โจมตีส่ง DNS response ปลอมไปยัง DNS resolver ก่อนที่ response จริงจะมาถึง resolver เก็บ record ปลอมไว้ใน cache ทำให้ users ทุกคนที่ใช้ resolver นั้นได้ IP ปลอม
วิธีป้องกัน DNS Spoofing
DNSSEC (DNS Security Extensions) เพิ่ม digital signature ลงใน DNS records ทำให้ resolver ตรวจสอบได้ว่า response มาจาก authoritative server จริงและไม่ถูกแก้ไขระหว่างทาง enable DNSSEC validation บน DNS resolver ขององค์กร
DNS over HTTPS (DoH) หรือ DNS over TLS (DoT) encrypt DNS queries ป้องกันการดักฟังและแก้ไข DNS traffic DoH ใช้ port 443 (เหมือน HTTPS ปกติ) DoT ใช้ port 853 browsers สมัยใหม่รองรับ DoH อยู่แล้ว
DNS Tunneling
วิธีการโจมตี
DNS Tunneling ใช้ DNS protocol เป็นช่องทาง covert channel สำหรับส่งข้อมูลเข้าออกจากเครือข่าย ทำไมถึงใช้ DNS? เพราะ DNS traffic มักถูกอนุญาตผ่าน firewall เสมอ (ทุก network ต้องใช้ DNS) ไม่ค่อยถูก inspect หรือ monitor
ผู้โจมตี encode ข้อมูล (เช่น stolen data, malware commands) ลงใน DNS queries เช่น aGVsbG8=.evil.com (base64 encoded) DNS server ของผู้โจมตี (authoritative สำหรับ evil.com) รับ query ดึงข้อมูลออกมา แล้วส่ง response ที่มีข้อมูลกลับ (เช่น command สำหรับ malware) bandwidth ต่ำ (ประมาณ 10-50 KB/s) แต่เพียงพอสำหรับ exfiltrate credentials, documents ขนาดเล็ก
วิธีตรวจจับ DNS Tunneling
ดู anomalies ใน DNS traffic ที่บ่งชี้ว่าอาจเป็น tunneling DNS queries ที่มี subdomain ยาวผิดปกติ (มากกว่า 50 characters) จำนวน DNS queries ต่อ domain สูงผิดปกติ (เช่น 1,000+ queries/นาทีไปยัง domain เดียว) query types ที่ไม่ปกติ (TXT, NULL, CNAME records จำนวนมาก) domain names ที่ดูเหมือน encoded data (ตัวอักษรสุ่ม ไม่ใช่คำที่อ่านได้)
วิธีป้องกัน DNS Tunneling
ใช้ DNS firewall หรือ DNS security service เช่น Cisco Umbrella, Infoblox, Cloudflare Gateway ที่วิเคราะห์ DNS traffic แบบ real-time และ block suspicious queries จำกัดให้ clients ใช้ DNS resolver ขององค์กรเท่านั้น (block direct DNS queries ไปยัง external DNS) monitor DNS query logs ด้วย SIEM
ตาราง DNS Attacks ที่พบบ่อย
| Attack | วิธีการ | ผลกระทบ | การป้องกัน |
|---|---|---|---|
| DNS Spoofing | ปลอมแปลง DNS response | Redirect ไปเว็บปลอม | DNSSEC, DoH/DoT |
| Cache Poisoning | Inject record ปลอมใน cache | ผู้ใช้หลายคนได้ IP ปลอม | DNSSEC, randomize source port |
| DNS Tunneling | Encode data ใน DNS queries | Data exfiltration, C2 | DNS firewall, monitoring |
| DNS Amplification DDoS | ใช้ open resolver ขยาย traffic | DDoS เป้าหมาย | ปิด open resolver, rate limiting |
| Domain Hijacking | ขโมย domain registration | ควบคุม domain ทั้งหมด | Registrar lock, MFA |
| NXDOMAIN Attack | Query domain ที่ไม่มีจริงจำนวนมาก | DNS resolver overload | Rate limiting, caching |
DNS Security Best Practices สำหรับองค์กร
1. ใช้ Internal DNS Resolver
ตั้ง DNS resolver ภายในองค์กร (เช่น Windows DNS, BIND, Unbound) แทนการให้ clients query external DNS โดยตรง ทำให้ควบคุมและ monitor DNS traffic ได้ทั้งหมด block outbound DNS (UDP/TCP 53) จาก clients ไปยัง internet บังคับให้ใช้ internal resolver เท่านั้น
2. Enable DNSSEC Validation
ตั้ง DNS resolver ให้ validate DNSSEC signatures reject DNS responses ที่ signature ไม่ถูกต้อง สำหรับ domain ขององค์กรเอง sign zones ด้วย DNSSEC ด้วย
3. DNS Logging และ Monitoring
เปิด DNS query logging บน resolver ส่ง logs ไปยัง SIEM (Splunk, ELK, Wazuh) ตั้ง alert สำหรับ patterns ที่น่าสงสัย เช่น query volume สูงผิดปกติ queries ไปยัง newly registered domains queries ที่มี subdomain ยาว query types ที่ไม่ปกติ (TXT, NULL)
4. DNS Filtering
ใช้ DNS filtering เพื่อ block domains ที่เป็นอันตราย malware domains, phishing domains, C2 domains ใช้ threat intelligence feeds อัพเดท blocklist อัตโนมัติ services เช่น Cisco Umbrella, Cloudflare Gateway, Quad9 ให้บริการ DNS filtering
5. Split DNS
ใช้ Split DNS (Split-horizon DNS) ให้ internal DNS server ตอบ queries จากภายในองค์กรด้วย internal IP addresses external DNS server ตอบ queries จากภายนอกด้วย public IP addresses ป้องกัน information leakage ของ internal network structure
DNS Security Services เปรียบเทียบ
| Service | ประเภท | ราคา | จุดเด่น |
|---|---|---|---|
| Cisco Umbrella | Cloud DNS Security | จ่ายรายปี/user | Threat intelligence กว้าง, integration กับ Cisco ecosystem |
| Cloudflare Gateway | Cloud DNS Filtering | ฟรี (basic) / จ่าย (enterprise) | เร็ว, ง่าย, Zero Trust integration |
| Infoblox BloxOne | DDI + DNS Security | Enterprise pricing | DDI platform ครบ, on-prem + cloud |
| Quad9 | Public DNS + Security | ฟรี | Non-profit, privacy-focused, threat blocking |
ทิ้งท้าย: DNS เป็นจุดเริ่มต้นของทุก Connection
DNS Security เป็นสิ่งที่หลายองค์กรมองข้าม แต่ DNS เป็นจุดเริ่มต้นของทุก connection ถ้าควบคุม DNS ได้ ก็ควบคุม traffic ทั้งหมดได้ เริ่มจาก internal resolver, enable DNSSEC, เปิด logging, ใช้ DNS filtering แค่นี้ก็ป้องกันการโจมตี DNS ส่วนใหญ่ได้แล้ว
อ่านเพิ่มเติมเกี่ยวกับ Firewall Best Practices และ Network Access Control ที่ siamlancard.com หรือจาก icafeforex.com และ siam2r.com