Security
น้องๆ เคยสงสัยมั้ยว่า เวลาเราพิมพ์ชื่อเว็บไซต์ลงไปใน browser แล้วมัน magic ไปโผล่ที่เว็บนั้นได้ยังไง? เบื้องหลังมันคือการทำงานของ DNS (Domain Name System) นี่แหละ DNS เปรียบเหมือนสมุดโทรศัพท์ของอินเทอร์เน็ต ที่แปลงชื่อเว็บไซต์ (เช่น siamcafe.net) เป็น IP address ที่เครื่องคอมพิวเตอร์เข้าใจได้
แต่สมัยผมทำร้านเน็ตเมื่อ 20 กว่าปีก่อน เรื่อง security นี่แทบไม่มีใครสนใจกันเลย DNS ก็เหมือนกัน มันเลยมีช่องโหว่ให้พวก hacker เข้ามาแทรกแซง เปลี่ยนแปลงข้อมูล DNS ได้ง่ายๆ กลายเป็นว่า แทนที่จะพาเราไปเว็บที่เราต้องการ กลับพาไปเว็บปลอม ที่ขโมย username password เราไปหมดตัว
DNS Security หรือความปลอดภัยของ DNS จึงสำคัญมากๆ เพราะมันเป็นประตูบานแรกที่เราเข้าสู่อินเทอร์เน็ต ถ้าประตูไม่แข็งแรง บ้านทั้งหลังก็ไม่ปลอดภัยไปด้วย เดี๋ยวพี่จะเล่าให้ฟังว่า DNSSEC, DoH, Dot มันช่วยแก้ปัญหายังไง
DNS คือระบบที่แปลงชื่อ domain name (เช่น google.com) เป็น IP address (เช่น 142.250.184.78) เพื่อให้คอมพิวเตอร์สามารถค้นหาและเชื่อมต่อกับ server ที่ host เว็บไซต์นั้นๆ ได้ สมัยก่อนเวลาจะเข้าเว็บอะไรต้องจำ IP address เอา ซึ่งมันลำบากมาก DNS เลยเข้ามาช่วยแก้ปัญหานี้
DNS เดิมๆ มีปัญหาหลักๆ คือ "ไม่มีการเข้ารหัส" และ "ไม่มีการตรวจสอบความถูกต้องของข้อมูล" ทำให้ hacker สามารถดักจับข้อมูล DNS ที่ส่งผ่านไปมา แล้วแก้ไขข้อมูลให้ชี้ไปยัง server ปลอมได้ (DNS Spoofing) หรือที่เรียกว่า "ฟิชชิ่ง" นั่นแหละ
DNSSEC (DNS Security Extensions) ช่วยแก้ปัญหาเรื่อง "การตรวจสอบความถูกต้องของข้อมูล" โดยการเพิ่มลายเซ็นดิจิทัลให้กับข้อมูล DNS ทำให้ผู้ใช้งานสามารถตรวจสอบได้ว่า ข้อมูล DNS ที่ได้รับมานั้น ถูกต้องและไม่ได้ถูกแก้ไขระหว่างทาง
DoH (DNS over HTTPS) และ Dot (DNS over TLS) ช่วยแก้ปัญหาเรื่อง "การเข้ารหัส" โดยการเข้ารหัสข้อมูล DNS ที่ส่งผ่านไปมา ทำให้ hacker ไม่สามารถดักจับและอ่านข้อมูล DNS ได้
การใช้งาน DNSSEC, DoH, Dot ไม่ได้ยากอย่างที่คิด แต่ก็ต้องเข้าใจขั้นตอนและมีเครื่องมือที่เหมาะสม สมัยนี้มีหลาย options ให้เลือกใช้ ทั้งแบบที่ทำเองได้ และแบบที่ใช้บริการจากผู้ให้บริการ
พี่จะแนะนำวิธีการใช้งานแบบง่ายๆ ที่น้องๆ สามารถลองทำตามได้เลย
วิธีที่ง่ายที่สุดในการใช้งาน DoH คือการตั้งค่าใน web browser ของเรา Browser สมัยใหม่ส่วนใหญ่รองรับ DoH อยู่แล้ว
ตัวอย่างเช่น ใน Google Chrome:
แค่นี้ browser ของน้องก็จะใช้ DoH ในการ resolve domain name แล้ว
หลังจากตั้งค่า DoH แล้ว เราสามารถตรวจสอบได้ว่า browser ของเราใช้งาน DoH จริงหรือไม่ โดยเข้าไปที่เว็บไซต์ Cloudflare's 1.1.1.1 Help ถ้าทุกอย่างถูกต้อง จะมีข้อความแสดงว่า "Using DNS over HTTPS (DoH): Yes"
สำหรับผู้ที่ดูแลระบบ DNS เอง การเปิดใช้งาน DNSSEC จะซับซ้อนกว่าเล็กน้อย ต้องทำการสร้าง key pair สำหรับ signing DNS records และ publish public key ลงใน domain registrar
ตัวอย่างการสร้าง key pair โดยใช้ `dnssec-keygen`:
dnssec-keygen -a RSASHA256 -b 2048 -n ZONE example.com
จากนั้นก็ต้องทำการ sign DNS zone file ด้วย private key และ publish public key (DS record) ลงใน domain registrar น้องๆ สามารถอ่านรายละเอียดเพิ่มเติมได้ที่ SiamCafe Blog
นอกจาก DNSSEC, DoH, Dot แล้ว ยังมีทางเลือกอื่นๆ ในการเพิ่มความปลอดภัยให้กับ DNS อีก เช่น VPN (Virtual Private Network) หรือ DNSCrypt แต่ละทางเลือกก็มีข้อดีข้อเสียแตกต่างกัน
| Technology | ข้อดี | ข้อเสีย | เหมาะสำหรับ |
|---|---|---|---|
| DNSSEC | ตรวจสอบความถูกต้องของข้อมูล DNS | ซับซ้อนในการติดตั้งและดูแลรักษา | ผู้ดูแลระบบ DNS ที่ต้องการความปลอดภัยสูงสุด |
| DoH | เข้ารหัสข้อมูล DNS ป้องกันการดักจับ | อาจทำให้ browser ช้าลงเล็กน้อย | ผู้ใช้งานทั่วไปที่ต้องการความเป็นส่วนตัว |
| Dot | เข้ารหัสข้อมูล DNS ป้องกันการดักจับ | ต้องตั้งค่าในระบบปฏิบัติการ | ผู้ใช้งานที่ต้องการควบคุมการตั้งค่า DNS เอง |
| VPN | เข้ารหัสข้อมูลทั้งหมดที่ส่งผ่านอินเทอร์เน็ต | อาจทำให้ความเร็วอินเทอร์เน็ตช้าลง | ผู้ที่ต้องการความเป็นส่วนตัวและความปลอดภัยสูงสุด |
สรุปแล้ว การเลือกใช้ technology ใด ก็ขึ้นอยู่กับความต้องการและงบประมาณของแต่ละคน ไม่มีวิธีไหนที่ดีที่สุดเสมอไป สิ่งสำคัญคือการทำความเข้าใจความเสี่ยงและเลือกวิธีที่เหมาะสมกับเราที่สุด
สมัยผมทำร้านเน็ต ก็ต้องคอย update ความรู้ด้าน security อยู่เสมอ เพราะภัยคุกคามมันเปลี่ยนแปลงไปตลอดเวลา น้องๆ ก็เหมือนกัน ต้องหมั่นศึกษาหาความรู้ใหม่ๆ อยู่เสมอ จะได้ไม่ตกเป็นเหยื่อของ hacker นะ
เอาล่ะน้องๆ มาถึงตรงนี้แล้ว หวังว่าจะพอเห็นภาพรวมของ DNS Security กันบ้างนะ ทีนี้มาดู Best Practices หรือเคล็ดลับที่พี่บอมใช้จริงๆ ในสมัยทำร้านเน็ต SiamCafe กันดีกว่า บอกเลยว่าแต่ละข้อนี่เจ็บจริง จ่ายจริง!
สมัยก่อน Hacker มันไม่ได้ซับซ้อนแบบสมัยนี้นะ แค่เปลี่ยน DNS Server ใน Router ลูกค้าให้ไปชี้ที่ Server ตัวเอง ก็จบข่าวแล้ว ขโมย Username Password กันง่ายๆ เลย
อันนี้เบสิคสุดๆ แต่สำคัญมาก! สมัยก่อน Windows มันง่าย ใครๆ ก็เปลี่ยน DNS ได้ วิธีแก้คือเข้าไปแก้ Registry เลยครับ
[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters]
"DhcpNameServer"="8.8.8.8,8.8.4.4" ; Google DNS
"NameServer"="8.8.8.8,8.8.4.4" ; Google DNS
คือเราเซ็ต DNS Server ไว้ตายตัวเลย เปลี่ยนไม่ได้ ถึงแม้ลูกค้าจะพยายามเปลี่ยนเองก็ตาม อันนี้ช่วยป้องกันพวกมือบอนได้เยอะ
สมัยนี้มันมีเครื่องมือดีๆ เยอะแยะ พี่แนะนำให้ใช้ DNSCrypt หรือ DoH เลยครับ มันจะเข้ารหัส Query DNS ทำให้คนดักฟังกลางทาง (Man-in-the-Middle) อ่านข้อมูลไม่ได้
ถ้าใช้ Windows พี่แนะนำ Simple DNSCrypt เลย ใช้งานง่าย แถมฟรีด้วย!
อันนี้อาจจะดู Advance ขึ้นมาหน่อย แต่คุ้มค่าแน่นอน Firewall ช่วยป้องกัน Traffic ที่ไม่พึงประสงค์ ส่วน IDS ช่วยตรวจจับความผิดปกติ เช่น มีคนพยายาม Query DNS แปลกๆ
สมัยก่อนพี่ใช้ Smoothwall Express เป็น Firewall ฟรี Open Source ที่ใช้งานง่ายมาก แถมมี IDS ในตัวด้วย
ข้อนี้สำคัญมาก! เราต้องคอยดู Log DNS Server ของเราอยู่เสมอ ว่ามีอะไรผิดปกติไหม มีใครพยายาม Query Domain แปลกๆ หรือเปล่า
สมัยก่อนพี่ใช้โปรแกรมง่ายๆ เขียนเองด้วย Perl ดึง Log มาวิเคราะห์ หา Pattern ที่ผิดปกติ ถ้าเจอก็แจ้งเตือนทาง Email
เพราะ DNS เป็นเหมือนสมุดหน้าเหลืองของ Internet ถ้า DNS ถูก Hack ก็เหมือนเราหลงทางใน Internet เลยครับ ข้อมูลส่วนตัวอาจจะถูกขโมย หรือโดน Redirect ไปเว็บปลอมได้
เกี่ยวสิ! Hacker สามารถใช้ DNS Server เป็นเครื่องมือในการทำ DDoS Attack ได้ (DNS Amplification Attack) โดยการส่ง Query ขนาดเล็กๆ ไปที่ DNS Server แล้วให้ DNS Server ตอบกลับด้วยข้อมูลขนาดใหญ่ ทำให้ Server เป้าหมายรับข้อมูลไม่ทัน
DNSSEC ช่วยป้องกันการปลอมแปลงข้อมูล DNS (DNS Spoofing) ทำให้เรามั่นใจได้ว่าข้อมูลที่เราได้รับจาก DNS Server นั้นถูกต้อง ไม่ถูกแก้ไข
DoH (DNS over HTTPS) คือการส่ง Query DNS ผ่าน Protocol HTTPS ส่วน DoT (DNS over TLS) คือการส่ง Query DNS ผ่าน Protocol TLS ทั้งสองอย่างเข้ารหัสข้อมูลเหมือนกัน แต่ DoH นิยมใช้ใน Browser ส่วน DoT นิยมใช้ใน Operating System
DNS Security ไม่ใช่เรื่องยากอย่างที่คิด เริ่มจากเรื่องง่ายๆ ก่อน เช่น ล็อค DNS Server ที่เครื่องลูก ใช้ DNSCrypt หรือ DoH แล้วค่อยๆ พัฒนาไปใช้ Firewall, IDS และ Monitoring DNS Logs
อย่าลืมว่าความปลอดภัยเป็นเรื่องที่ต้องทำตลอดเวลา ไม่ใช่ทำครั้งเดียวแล้วจบ iCafeForex ก็เหมือนกัน ต้องคอยอัพเดทและปรับปรุงอยู่เสมอ
หวังว่าบทความนี้จะเป็นประโยชน์กับน้องๆ นะครับ ถ้ามีคำถามอะไรเพิ่มเติม ถามมาได้เลย ยินดีตอบเสมอ ไปติดตาม SiamCafe Blog กันได้นะ มีบทความดีๆ อีกเยอะเลย!