Domain Name System Security Extensions (DNSSEC) คือ รูปแบบการให้บริการ DNS Server แบบเข้ารหัสข้อมูล โดยใช้ระบบ Public Key & Private Key เมื่อเรามีการเรียกเว็บไซต์ผ่านเบราเซอร์ หากโดเมนนั้นๆมีการตั้งค่า DNSSEC ไว้ DNS Server ที่รองรับ DNSSEC ก็จะส่งค่า IP ปลายทางมาให้เรา พร้อมกับ Public Key เพื่อให้เราไว้ใช้ยืนยันกับ DNS Server ว่าเป็นข้อมูลที่ถูกต้อง ไม่ได้ถูกเปลี่ยนเส้นทางระหว่างการร้องขอ DNS Record นั่นเอง
ทำไมต้อง DNSSEC
โดยหลักๆเลยก็คือ เรื่องของความปลอดภัย เพื่อยืนยันว่าเราจะเชื่อมต่อไปยัง Server ที่ถูกต้อง ไม่ได้เชื่อมต่อไปยัง Server ของ Hacker แล้วกรอกข้อมูล Login ของเราไปให้แฮกเกอร์ เป็นต้น
ถ้าโดเมนที่รองรับถูกเปลี่ยนเส้นทาง และหากมีการเซต DNSSEC ไว้ โดเมนนั้นๆจะเข้าไม่ได้เลยครับ
จะใช้ DNSSEC ได้อย่างไร
เนื่องจาก DNSSEC เกี่ยวข้องกับระบบ Domain Name ซึ่งจะเป็นในส่วนของฝั่ง Server และ Client ที่เป็นส่วนของผู้ใช้งาน เพราะฉะนั้น การที่จะรองรับการใช้งาน DNSSEC ได้นั้น จะต้องรองรับทั้ง 2 ฝั่ง ซึ่งปัจจุบันนี้ Domain Name นามสกุลต่างๆนั้นเกือบจะทั้งหมด รองรับการตั้งค่า DNSSEC อยู่แล้ว รวมถึงฝั่งของ Client ก็เช่นกัน เบราเซอร์รุ่นใหม่ๆ ก็รองรับการใช้งาน DNSSEC ด้วยเช่นกัน
ทดสอบ DNSSEC ฝั่ง Domain Name
วิธีการเช็คโดเมนของเรารองรับ DNSSEC ไหม สามารถเช็คได้ที่ลิงก์ https://dnsviz.net ครับ กรอกชื่อโดเมนที่ต้องการ > คลิกที่ Analyze > Continue แล้วเราจะได้ Chain DNS มาครับ ซึ่ง Chain ที่มีความปลอดภัย จะต้องไม่มีลูกศรสีดำ ระหว่าง Chain นะครับ
เพิ่มเติม: สามารถทดสอบได้อีกเว็บ https://dnssec-analyzer.verisignlabs.com/ เป็นเว็บเพิ่มเติม ดูง่ายดี
การเปิดใช้งาน DNSSEC ที่ฝั่ง Domain Name
วิธีการที่แสนจะง่ายที่สุด สำหรับโดเมนที่เป็น General Top-Level Domain (gTLD) เช่น .com, .net, .org เป็นต้น ที่ผมค้นพบก็คือ ใช้บริการ DNS ของ Cloudflare DNS Server เพียงแค่เราชี้ Name Server ไปหา Cloudflare โดเมนของเราก็จะได้รับการเข้ารหัส DNS เป็นที่เรียบร้อย อันเนื่องมาจาก Cloudflare DNS นั้นรองรับ DNSSEC อยู่แล้วนั่นเอง
แต่สำหรับโดเมนที่เป็น Country-Code Top-Level Domain (ccLTD) ยกตัวอย่างประเทศไทย เช่น .in.th, .co.th, .at.th เป็นต้น การเข้ารหัส DNSSEC จะเริ่มจาก .th => .in.th => yourname.in.th ซึ่งจะมี Chain เพิ่มขึ้นมาอีก 1 Chain นั่นเอง ในกรณีโดเมนของประเทศไทย ที่ทาง THNIC เป็นผู้ดูแลนั้น ณ ขณะนี้ก็รองรับการทำ DNSSEC เป็นที่เรียบร้อยแล้ว แต่การใช้งาน Cloudflared DNS Server เพียงอย่างเดียว จะทำให้ DNSSEC ไม่สมบูรณ์ ตามภาพตัวอย่างด้านล่างนี้
วิธีการเปิดใช้งาน DNSSEC สำหรับโดเมน .th ใช้บริการร่วมกับ Cloudflared DNS Server
ให้เราไปที่ Cloudflare.com > Your Domain > เมนู DNS > DNSSEC > คลิกที่ Enable DNSSEC จากนั้นทาง Cloudflare จะให้ข้อมูล Key ต่างๆ โดย Key ที่ต้องนำมากรอกคือ Key Tag, Algorithm, Digest Type และ Digest ให้เรานำเอาไปกรอกที่ระบบจัดการโดเมนกับทางผู้ให้บริการที่เราใช้บริการอยู่ หากไม่ทราบ แนะนำให้ติดต่อกับผู้ให้บริการจดโดเมน แจ้งขอเปิดใช้งาน DNSSEC นะครับ และเมื่อเราตั้งค่าเสร็จเรียบร้อย จะต้องรอให้ DNS Update ใช้เวลาประมาณ 1 Hour ตามที่ทาง Cloudflare แจ้งไว้ หลังจากเสร็จสมบูรณ์แล้ว ที่ฝั่งของ Cloudflare จะได้ตามรูปครับ
หลังจากทุกอย่างเรียบร้อย เราก็ลองมาตรวจสอบ DNS Chain อีกครั้ง ผลที่ได้ตามรูปครับ สังเกตว่าจะไม่มีลูกศรสีดำเหมือนก่อนหน้านี้แล้วครับ เป็นอันเสร็จสิ้นในส่วนของโดเมน หรือส่วนของผู้ดูแลระบบนะครับ
ทดสอบ DNSSEC ฝั่ง Client
เราสามารถตรวจสอบอุปกรณ์ของเราว่ารองรับ DNSSEC หรือไม่? ได้ที่ลิงก์ https://dnssec.vs.uni-due.de โดยเข้าเว็บแล้วกด Start Test
การเปิดใช้งาน DNSSEC ที่ฝั่ง Client
สำหรับฝั่ง Client ผมแนะนำให้ใช้ DNS ของ Cloudflare DNS Client หรือ Google DNS Client ซึ่งรองรับการใช้งาน DNSSEC อยู่แล้ว
Cloudflare DNS
Cloudflare DNS IPv4
- 1.1.1.1 และ 1.0.0.1
- 1.1.1.2 และ 1.0.0.2 (ป้องกันโดเมนไวรัส)
- 1.1.1.3 และ 1.0.0.3 (ป้องกันโดเมนไวรัส และป้องกันเว็บโป้ เหมาะสำหรับเด็ก)
Cloudflare DNS IPv6
- 2606:4700:4700::1111 และ 2606:4700:4700::1001
- 2606:4700:4700::1112 และ 2606:4700:4700::1002 (ป้องกันโดเมนไวรัส)
- 2606:4700:4700::1113 และ 2606:4700:4700::1003 (ป้องกันโดเมนไวรัส และป้องกันเว็บโป้ เหมาะสำหรับเด็ก)
Google DNS
Google DNS IPv4
- 8.8.8.8 และ 8.8.4.4
Google DNS IPv6
- 2001:4860:4860::8888 และ 2001:4860:4860::8844
ทำไมต้อง Cloudflare + Google
โดยส่วนตัว ผมจะแนะนำ 2 ตัวนี้นะครับ อันเนื่องมาจากความเร็วในการ Reslove DNS และมาตรฐานความปลอดภัยครับ มีความน่าเชื่อถือสูงด้วย
สำหรับการตั้งค่า DNS เราสามารถเลือกใช้โปรแกรม แอพ มาช่วยการตั้งค่าได้ รวมถึง เราสามารถเลือกใช้ทั้ง Cloudflare, Google อย่างละ 1 ตัวก็ได้นะครับ เพราะว่า DNS Setting เราจะสามารถกรอกได้ 2 อัน เพื่อป้องกันอีกตัวล่มนั่นเอง
Blog ส่วนตัว ที่จะแชร์เรื่องร่าวต่างๆที่พบเจอมา จากประสบการณ์จริง เพื่อเป็นประโยชน์ต่อสังคมและผู้ที่กำลังศึกษาหาความรู้เรื่องต่างๆ ไม่ว่าจะเป็น Server, Network, Security, ทำเว็บไซต์, เขียนโปรแกรม, ฯลฯ ขอบคุณทุกๆการติดตามครับ 😉
★ บริการ Cloud Server ★