0Pricing
Cloud & IT Cert Prep · บทเรียน

DNS ที่ปลอดภัย: DNSSEC และ DNS ผ่าน HTTPS (DoH)

เรียนรู้ว่า DNSSEC ป้องกันการวางยาพิษแคช DNS ได้อย่างไร และ DNS ผ่าน HTTPS กับ DNS ผ่าน TLS ปกป้องความเป็นส่วนตัวของคำค้นหาจากผู้สังเกตการณ์บนเส้นทางได้อย่างไร

DNS ที่ปลอดภัย: DNSSEC และ DNS ผ่าน HTTPS (DoH) เป็นบทเรียน Cloud & IT Cert Prep ฟรีบน CoddyKit นี่คือบทเรียนที่ 3 จากทั้งหมด 4 บทเรียน คุณสามารถอ่านบทเรียนทั้งหมดด้านล่างฟรี — จากนั้นลองปฏิบัติด้วยตัวคุณเองในเบราว์เซอร์พร้อมตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7 บทเรียนนี้เป็นส่วนหนึ่งของเส้นทางการเรียน Cloud & IT Cert Prep และความก้าวหน้าของคุณจะซิงค์ข้ามเว็บและแอป CoddyKit คอร์ส Cloud & IT Cert Prep มีบทเรียนทั้งหมด 4 บทเรียน

ความท้าทายด้านความปลอดภัยของ DNS

ระบบชื่อโดเมน (DNS) แปลงชื่อโดเมนที่มนุษย์อ่านได้เป็นที่อยู่ IP DNS ถูกออกแบบขึ้นในทศวรรษ 1980 โดยไม่ได้คำนึงถึงความปลอดภัย — Query และคำตอบเดินทางผ่านพอร์ต UDP/TCP 53 ในรูปแบบข้อความล้วนโดยไม่มีการพิสูจน์ตัวตน จึงเกิดช่องโหว่สำคัญสองประการ ได้แก่ การวางยาพิษแคช DNS (แทรกคำตอบ DNS ปลอมเพื่อเปลี่ยนเส้นทางผู้ใช้ไปยัง Server ที่เป็นอันตราย) และ การดักฟัง DNS (การดูว่า User สอบถามโดเมนใดทำให้ทราบกิจกรรมการท่องเว็บ) มาตรฐานสองรายการช่วยแก้ปัญหานี้: DNSSEC ป้องกันการปลอมแปลง และ DNS over HTTPS (DoH) ป้องกันการดักฟัง

การวางยาพิษแคช DNS

การวางยาพิษแคช DNS (การโจมตี Kaminsky) ใช้ประโยชน์จากการที่โพรโทคอล DNS ไม่มีการพิสูจน์ตัวตน Resolver ส่ง Query ไปยัง Server DNS ที่มีอำนาจหน้าที่และเก็บคำตอบไว้ตามระยะเวลา TTL Attacker ที่สามารถเดา ID ธุรกรรม (16 บิตและคาดเดาได้) และพอร์ตต้นทาง (ใช้เป็นค่าความสุ่มเพิ่มเติมตาม RFC 5452) สามารถส่งคำตอบปลอมที่ Resolver จะเก็บไว้ แล้วเปลี่ยนเส้นทาง User ทั้งหมดที่สอบถาม Resolver นั้นไปยัง Server ของ Attacker เมื่อแคชถูกวางยาพิษ User จะถูกส่งไปยัง Server ปลอมแม้จะพิมพ์โดเมนถูกต้องก็ตาม DNSSEC ป้องกันปัญหานี้ด้วยการลงลายเซ็นดิจิทัลให้คำตอบ DNS

# DNS cache poisoning simulation
# Attacker floods resolver with forged responses
# for the query 'A example.com?'

# Each response guesses a different transaction ID:
# ID=1234: example.com -> 198.51.100.1  (attacker IP)
# ID=1235: example.com -> 198.51.100.1
# ...
# ID=XXXX: example.com -> 198.51.100.1  (correct guess!)

# Resolver caches poisoned answer (TTL = 3600s)
# All users querying this resolver get attacker IP
# Users are redirected to phishing/malware server

DNSSEC: ส่วนขยายความปลอดภัย DNS

DNSSEC เพิ่มลายเซ็นการเข้ารหัสให้ระเบียน DNS ทำให้ Resolver ตรวจสอบได้ว่าคำตอบมาจากผู้มีอำนาจดูแลโซนที่ถูกต้องและไม่ถูกแก้ไข DNSSEC เพิ่มชนิดระเบียนใหม่ ได้แก่ RRSIG (ลายเซ็นระเบียนทรัพยากร หรือลายเซ็นจริงของชุดระเบียน) DNSKEY (กุญแจสาธารณะที่ใช้ตรวจสอบลายเซ็น) DS (ตัวลงนามการมอบหมาย ซึ่งเชื่อมกุญแจของโซนแม่กับโซนลูก) และ NSEC/NSEC3 (การปฏิเสธการมีอยู่ที่ผ่านการยืนยัน ซึ่งพิสูจน์ว่าชื่อนั้นไม่มีอยู่) DNSSEC สร้างสายโซ่แห่งความเชื่อถือจากโซนราก (ลงลายเซ็นโดย ICANN) ผ่าน TLD ไปยังโซนที่มีอำนาจหน้าที่

# Verify DNSSEC signature on a domain
dig +dnssec example.com A
# Look for 'ad' (authenticated data) flag in response
# and the RRSIG record alongside the A record

# Query for DNSKEY record
dig DNSKEY example.com

# Query for DS record at parent zone
dig DS example.com @a.iana-servers.net

# Full DNSSEC chain validation check
dig +sigchase +trusted-key=/.../root.key example.com A

ชนิดกุญแจ DNSSEC: KSK และ ZSK

DNSSEC ใช้กุญแจลงลายเซ็นสองชนิด Zone Signing Key (ZSK) ใช้ลงลายเซ็นให้ชุดระเบียน DNS แต่ละชุด (RRSIG) และเปลี่ยนกุญแจบ่อยครั้ง (ทุกเดือนหรือทุกไตรมาส) เพื่อความคล่องตัวในการปฏิบัติงาน Key Signing Key (KSK) ใช้ลงลายเซ็นให้ชุดระเบียน DNSKEY และทำหน้าที่เป็นจุดยึดแห่งความเชื่อถือของโซน KSK เปลี่ยนกุญแจไม่บ่อย (ปีละครั้ง) เนื่องจากต้องอัปเดตโซนแม่ด้วยระเบียน DS ใหม่ทุกครั้งที่ KSK เปลี่ยน ซึ่งเป็นกระบวนการที่ต้องประสานงานกัน KSK ตรวจสอบ ZSK ส่วน ZSK ลงลายเซ็นให้ข้อมูล โครงสร้างสองชั้นนี้สร้างสมดุลระหว่างความปลอดภัย (เปลี่ยน ZSK บ่อย) กับภาระการปฏิบัติงาน (เปลี่ยน KSK ไม่บ่อย)

ข้อจำกัดของ DNSSEC

DNSSEC มีข้อจำกัดสำคัญหลายประการ ไม่เข้ารหัส Query DNS — ทำได้เพียงลงลายเซ็นให้คำตอบเพื่อรักษาความถูกต้องครบถ้วน ผู้ดักฟังยังคงเห็น Query DNS ทั้งหมด เพียงแต่ไม่สามารถปลอมแปลงคำตอบได้ การแจกแจงโซน: ระเบียน NSEC (ซึ่งพิสูจน์การไม่มีอยู่) เปิดโอกาสให้ Attacker ไล่ดูโซนและแจกแจงชื่อโดเมนทั้งหมดภายในโซนได้ ส่วน NSEC3 ช่วยลดปัญหานี้ด้วยการแฮชชื่อ แต่ยังไม่สมบูรณ์แบบ ความซับซ้อนในการปฏิบัติงาน: การจัดการกุญแจ การหมดอายุของลายเซ็น และการประสานงานกับโซนแม่ก่อให้เกิดภาระในการปฏิบัติงานอย่างมาก การนำ DNSSEC มาใช้ยังไม่สมบูรณ์ — TLD และผู้รับจดทะเบียนจำนวนมากรองรับ DNSSEC แต่หลายองค์กรยังไม่ได้ติดตั้งใช้งาน

DNS ผ่าน HTTPS (DoH)

DNS ผ่าน HTTPS (DoH) เข้ารหัสการสืบค้น DNS ภายใน HTTPS (RFC 8484) ทำให้ผู้สังเกตการณ์บนเครือข่ายไม่เห็นเนื้อหาของการสืบค้น การสืบค้นจะส่งไปยังตัวแก้ไขชื่อที่รองรับ DoH ผ่าน URL ของ HTTPS มาตรฐาน ทำให้การรับส่งข้อมูล DNS แยกไม่ออกจากการรับส่งข้อมูล HTTPS อื่น ๆ วิธีนี้ป้องกันไม่ให้ผู้ให้บริการอินเทอร์เน็ต นายจ้าง และผู้โจมตีที่ดักอยู่บนเส้นทางเห็นว่าผู้ใช้สืบค้นโดเมนใด ซึ่งช่วยแก้ช่องว่างด้านความเป็นส่วนตัวที่ DNSSEC ไม่ได้ครอบคลุม อย่างไรก็ตาม DoH จะย้ายความไว้วางใจจากตัวแก้ไข DNS ของเครือข่ายไปยังผู้ให้บริการ DoH (โดยทั่วไปคือ Google 8.8.8.8, Cloudflare 1.1.1.1 หรือตัวแก้ไข DoH ขององค์กรเอง) ปัจจุบันเบราว์เซอร์หลักส่วนใหญ่รองรับ DoH ในตัวแล้ว

# DoH query using curl
curl -H 'accept: application/dns-json' \
  'https://cloudflare-dns.com/dns-query?name=example.com&type=A'

# DoH query via RFC 8484 (binary format)
curl -s -H 'Content-Type: application/dns-message' \
     -H 'Accept: application/dns-message' \
     --data-binary @query.bin \
     https://dns.google/dns-query

# Configure Firefox to use DoH
# about:config -> network.trr.uri
# Set to: https://mozilla.cloudflare-dns.com/dns-query

DNS ผ่าน TLS (DoT)

DNS ผ่าน TLS (DoT) (RFC 7858) เข้ารหัสการสืบค้น DNS โดยใช้ TLS ผ่านพอร์ต TCP เฉพาะหมายเลข 853 แทนการสร้างช่องทางผ่าน HTTPS DoT ให้ประโยชน์ด้านความเป็นส่วนตัวเช่นเดียวกับ DoH คือซ่อนเนื้อหาของการสืบค้นจากผู้ดักฟัง แต่ผู้ดูแลเครือข่ายสามารถตรวจพบและกรองได้ง่ายกว่า (พอร์ต 853 เทียบกับพอร์ต 443) นี่จึงเป็นข้อดีและข้อเสียในเวลาเดียวกัน: DoT มองเห็นได้และอาจถูกไฟร์วอลล์ขององค์กรบล็อก ขณะที่การบล็อก DoH ทำได้ยากกว่าโดยไม่กระทบการรับส่งข้อมูล HTTPS ทั่วไป ตัวแก้ไขแบบสตับ (ระดับ OS) มักใช้ DoT มากกว่า ส่วนเบราว์เซอร์มักใช้ DoH มากกว่า

# Test DoT connection using kdig
kdig -d @9.9.9.9 +tls-ca example.com A

# Test DoT using openssl
openssl s_client -connect 1.1.1.1:853
# Then type: query string in DNS wire format

# Configure systemd-resolved to use DoT (Linux)
# /etc/systemd/resolved.conf:
[Resolve]
DNS=9.9.9.9#dns.quad9.net
DNSOverTLS=yes

DoH และ DoT: ข้อควรพิจารณาสำหรับองค์กร

DNS ที่เข้ารหัสสร้างความท้าทายให้สภาพแวดล้อมองค์กรที่พึ่งพาการกรองและหลุมดำที่อิง DNS เมื่อเบราว์เซอร์ใช้ตัวแก้ไข DoH ภายนอก การควบคุม DNS ภายในจะถูกหลีกเลี่ยง มาตรการรับมือขององค์กร ได้แก่ ติดตั้งตัวแก้ไข DoH/DoT ภายใน (Cisco Umbrella, Pi-hole ที่ใช้ DoH) และกำหนดให้อุปกรณ์ทั้งหมดใช้งานตัวแก้ไขนี้ บล็อก IP ของตัวแก้ไข DoH ภายนอก ที่ไฟร์วอลล์ (Google 8.8.8.8, Cloudflare 1.1.1.1) บนพอร์ต 443 ใช้ นโยบายกลุ่ม เพื่อปิด DoH ระดับเบราว์เซอร์บนอุปกรณ์ปลายทางที่มีการจัดการ และใช้กฎ พร็อกซีแบบโปร่งใส ดักการรับส่ง DNS ผ่าน TLS บนพอร์ต 853 เป้าหมายคือส่ง DNS ทั้งหมดผ่านตัวแก้ไขที่ควบคุมได้ โดยไม่บล็อก DNS ที่เข้ารหัสทั้งหมด

# Enterprise DoH bypass prevention
# Windows Group Policy:
# Computer Config > Admin Templates > Google Chrome
# 'DNS over HTTPS mode': Disabled
# 'DNS over HTTPS URI templates': <empty>

# Firewall: block known public DoH resolvers
iptables -I FORWARD -d 8.8.8.8 -p tcp --dport 443 -j DROP
iptables -I FORWARD -d 1.1.1.1 -p tcp --dport 443 -j DROP
iptables -I FORWARD -d 9.9.9.9 -p tcp --dport 443 -j DROP
iptables -I FORWARD -d 149.112.112.112 -p tcp --dport 443 -j DROP

# Redirect all DNS to corporate resolver
iptables -t nat -A PREROUTING -p udp --dport 53 \
  -j DNAT --to-destination 10.0.0.53:53

ความปลอดภัย DNS ในทางปฏิบัติ

กลยุทธ์ความปลอดภัย DNS ที่สมบูรณ์ต้องผสานการควบคุมหลายรูปแบบ DNSSEC สำหรับโซนที่มีสิทธิ์ดูแลช่วยป้องกันการปลอมแปลงแคชของโดเมน การกรองที่อิง DNS (Cisco Umbrella, Cloudflare Gateway) บล็อกโดเมนที่เป็นอันตรายในระดับตัวแก้ไข DoH/DoT ไปยังตัวแก้ไขที่ควบคุมได้ ให้ความเป็นส่วนตัวของการสืบค้นโดยไม่สูญเสียความสามารถในการมองเห็นเพื่อการกรอง การบันทึก DNS ไปยัง SIEM จะเก็บการสืบค้นทั้งหมดไว้สำหรับการค้นหาภัยคุกคาม — บันทึก DNS ช่วยเปิดเผยการรับส่งข้อมูล C2 การลักลอบนำข้อมูลออกผ่านช่องทาง DNS และกิจกรรมของอัลกอริทึมสร้างโดเมน (DGA) จากมัลแวร์ ข้อมูลการตรวจวัด DNS เป็นหนึ่งในแหล่งข้อมูลความปลอดภัยที่มีคุณค่าสูงสุด

การตรวจจับการสร้างช่องทาง DNS

การสร้างช่องทาง DNS คือการเข้ารหัสข้อมูลไว้ภายในการสืบค้นและการตอบกลับ DNS เพื่อลักลอบนำข้อมูลออกหรือสร้างช่องทาง C2 ผ่านเครือข่ายที่บล็อกการรับส่งข้อมูลขาออกประเภทอื่น เครื่องมืออย่าง iodine, DNScat และ dnscat2 เข้ารหัสข้อมูลในป้ายชื่อโดเมนย่อย (สืบค้น EXFILTRATEDDATA.evil.com) หรือระเบียน TXT วิธีตรวจจับ ได้แก่ ชื่อการสืบค้น DNS ที่ยาวผิดปกติ (>100 อักขระ) ปริมาณการสืบค้นสูงจากโฮสต์เดียว การสืบค้นโดเมนแม่ที่ไม่มีอยู่จริง ประเภทระเบียนที่ผิดปกติ (TXT, NULL) และการวิเคราะห์เอนโทรปีของป้ายชื่อโดเมน (ข้อมูลที่เข้ารหัสจะมีเอนโทรปีของ Shannon สูง) แพลตฟอร์มวิเคราะห์ความปลอดภัย DNS จะระบุรูปแบบการสร้างช่องทางโดยอัตโนมัติ

# DNS tunneling detection indicators
# Flag queries with:
# 1. Query name > 100 characters
# 2. More than 50 queries/minute from single host
# 3. High-entropy domain labels (base64/hex patterns)
# 4. TXT or NULL record type queries (unusual)
# 5. Queries to domains with no web presence

# Example tunnel query (encoded payload)
# aGVsbG8gd29ybGQ.vGhpcyBpcyBkYXRh.evil-domain.com
# ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
# Base64 encoded 'hello world this is data'

โซนนโยบายการตอบกลับ DNS (RPZ)

โซนนโยบายการตอบกลับ DNS (RPZ) ช่วยให้ตัวแก้ไข DNS ใช้นโยบายแทนที่เฉพาะที่กับการตอบกลับ DNS ได้ กล่าวโดยสรุปคือการสร้างหลุมดำเฉพาะที่ในระดับตัวแก้ไข โดยไม่ต้องแก้ไขโครงสร้างพื้นฐาน DNS ทั่วโลก เมื่อลูกค้าสืบค้นโดเมนที่ทราบว่าเป็นอันตราย นโยบาย RPZ จะส่งคืน NXDOMAIN เปลี่ยนเส้นทางไปยัง IP ของหลุมดำ หรือส่งต่อการตอบกลับโดยไม่แก้ไข แหล่งข้อมูล RPZ มีให้จากผู้ให้บริการข่าวกรองภัยคุกคาม (Spamhaus, SURBL) และสามารถนำเข้าไปยังตัวแก้ไข BIND หรือ Unbound ได้โดยตรง RPZ เป็นเครื่องมือป้องกันที่ทรงพลัง เพราะใช้การกรองในชั้น DNS กับอุปกรณ์ทั้งหมดในเครือข่ายโดยไม่ต้องกำหนดค่าที่ฝั่งลูกค้า

# BIND RPZ configuration snippet
# /etc/named.conf
response-policy {
  zone 'rpz.spamhaus.net';
  zone 'local-blocklist.internal';
};

# RPZ zone file (local-blocklist.internal)
$ORIGIN local-blocklist.internal.
@  SOA  ns1.company.com. admin.company.com. 2024010101 3600 600 86400 300
botnet-c2.evil IN CNAME .   # NXDOMAIN response
phishing-site.com IN A 10.0.0.99  # Redirect to sinkhole

ตรวจสอบอย่างรวดเร็ว

ทดสอบความเข้าใจแนวคิด CompTIA Security+ (SY0-701) จากบทเรียนนี้

สรุปบทเรียน

ในบทเรียนนี้ คุณได้เรียนรู้ว่า DNSSEC เพิ่มลายเซ็นเข้ารหัสให้ระเบียน DNS โดยใช้คู่กุญแจ KSK/ZSK เพื่อป้องกันการปลอมแปลงแคช แต่ไม่ได้เข้ารหัสการสืบค้น DNS ผ่าน HTTPS (DoH) เข้ารหัสการสืบค้น DNS ภายใน HTTPS เพื่อป้องกันการดักฟัง แต่ก่อให้เกิดความเสี่ยงที่องค์กรจะสูญเสียการควบคุมการกรอง และ การสร้างช่องทาง DNS จะเข้ารหัสข้อมูลในการสืบค้น DNS ซึ่งสามารถตรวจจับได้จากการวิเคราะห์ความยาว ปริมาณ และเอนโทรปีของการสืบค้น บทถัดไปเราจะศึกษา IPsec, โปรโตคอล VPN และความปลอดภัยของการเข้าถึงจากระยะไกล

คำถามที่พบบ่อย

บทเรียน “DNS ที่ปลอดภัย: DNSSEC และ DNS ผ่าน HTTPS (DoH)” ฟรีหรือไม่

ใช่ — ข้อความเต็มของ “DNS ที่ปลอดภัย: DNSSEC และ DNS ผ่าน HTTPS (DoH)” ฟรีให้อ่านที่นี่บนเว็บ เพื่อปฏิบัติแบบโต้ตอบ (ตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7) และปลดล็อคส่วนที่เหลือของคอร์ส Cloud & IT Cert Prep ให้อัปเกรดเป็น CoddyKit PRO คอร์ส Cloud & IT Cert Prep มีบทเรียนทั้งหมด 4 บทเรียน

คุณจะเรียนรู้อะไรในบทเรียน “DNS ที่ปลอดภัย: DNSSEC และ DNS ผ่าน HTTPS (DoH)”

เรียนรู้ว่า DNSSEC ป้องกันการวางยาพิษแคช DNS ได้อย่างไร และ DNS ผ่าน HTTPS กับ DNS ผ่าน TLS ปกป้องความเป็นส่วนตัวของคำค้นหาจากผู้สังเกตการณ์บนเส้นทางได้อย่างไร คุณปฏิบัติ Cloud & IT Cert Prep ด้วยโค้ดที่ใช้งานได้จริงที่คุณเรียกใช้โดยตรงในเบราว์เซอร์ และติวเตอร์ AI ตลอด 24/7 ตอบคำถามของคุณขณะที่คุณไปผ่านบทเรียน

คุณต้องมีประสบการณ์ก่อนที่จะเริ่มเรียน Cloud & IT Cert Prep หรือไม่

ไม่จำเป็นต้องมีประสบการณ์มาก่อน Cloud & IT Cert Prep บน CoddyKit ออกแบบมาสำหรับผู้เริ่มต้นไปจนถึงผู้เรียนขั้นสูง คุณสามารถเริ่มต้นที่นี่หรือเริ่มจากตัวแรกและเรียนด้วยความเร็วของคุณเอง นี่คือบทเรียนที่ 3 จากทั้งหมด 4 บทเรียน

บทเรียน “DNS ที่ปลอดภัย: DNSSEC และ DNS ผ่าน HTTPS (DoH)” ใช้เวลานานแค่ไหน

บทเรียน CoddyKit ส่วนใหญ่ใช้เวลาประมาณ 5–10 นาที แต่ละบทเรียนจึงสั้นและเป็นแบบโต้ตอบ คุณสามารถก้าวหน้าอย่างต่อเนื่องและกลับมาเรียนต่อจากตรงที่เพิ่งหยุดบนเว็บและแอปได้เลย

ฉันเขียนและรันโค้ดในบทเรียน Cloud & IT Cert Prep นี้ได้ไหม

ได้ บทเรียน Cloud & IT Cert Prep ทุกบทมีตัวแก้ไขโค้ดในตัว คุณจึงเขียนและรันโค้ดจริงได้เลยในเบราว์เซอร์ และได้รับข้อเสนอแนะจาก AI ในทันที — ไม่ต้องติดตั้งในเครื่องของคุณ

บทเรียนทั้งหมดในหลักสูตรนี้

  1. การแทนที่โพรโทคอลที่ไม่ปลอดภัย: Telnet กับ SSH, FTP กับ SFTP
  2. เวอร์ชัน TLS ชุดรหัสลับ และการรักษาความลับล่วงหน้าอย่างสมบูรณ์
  3. DNS ที่ปลอดภัย: DNSSEC และ DNS ผ่าน HTTPS (DoH)
  4. IPsec โพรโทคอล VPN และความปลอดภัยในการเข้าถึงจากระยะไกล
← กลับไปที่ Cloud & IT Cert Prep