การทำงานของระบบ DNS และการติดตั้ง พร้อมตัวอย่างการใช้งาน
จาก Research 2549, สารานุกรมฟรี
(นนร. คลิก edit แล้ว copy ทั้งส่วนนี้ลงไปในหน้า ของหัวข้อของตนเอง แล้วขยายความต่อไป)
กลับไป คำแนะนำการเขียนรายงาน
เรื่อง การทำงานของระบบ DNS และการติดตั้ง พร้อมตัวอย่างการใช้งาน
ชื่อผู้จัดทำ นนร.อดิเรก วสันต์สกุล เลขที่ 9 สาขา เทคโนโลยีสารสนเทศ
สารบัญ |
บทคัดย่อ
- ในปัจจุบันมีผู้ที่สนใจหันมาใช้ระบบปฏิบัติการแบบ Open Source กันอย่างแพร่หลาย อย่างเช่น ระบบปฏิบัติการ linux เนื่องจากมีข้อดีหลายอย่าง เช่น ระบบมีความเสถียร หรือปลอดภัยจากไวรัสคอมพิวเตอร์มากกว่า แต่ส่วนใหญ่แล้วการใช้งานต่างๆ ของระบบปฏิบัติการ linux นี้มีออกมาเป็นหนังสือเพื่อให้ศึกษาน้อยมาก และหาซื้อได้ยากตามร้านขายหนังสือทั่วไป คนทั่วไปจึงไม่ค่อยทราบเกี่ยวกับการติดตั้งฟังก์ชันต่างๆ ของระบบปฏิบัติการนี้ ระบบ DNS ก็เช่นกัน ในระบบปฏิบัติการ Windows ผู้ใช้ส่วนใหญ่สามารถที่จะเข้าใจและปฏิบัติได้ง่าย เพราะศึกษาได้จากหนังสือที่มีวางขายทั่วไปตามร้านหนังสือ แต่สำหรับ DNS ของระบบปฏิบัติการ linux ค่อนข้างที่จะหาหนังสือมาศึกษาได้ยาก ดังนั้นคนทั่วไปจึงคิดว่าการติดตั้งฟังก์ชันต่างๆ ของระบบปฏิบัติการ linux นั้นยุ่งยากและซับซ้อน แต่จริงๆ แล้ว การติดตั้งฟังก์ชันต่างๆ นั้นไม่ยากอย่างที่คิด หากได้ศึกษาตามที่ผู้จัดทำได้รวบรวมเรื่องการทำงานและการติดตั้งของระบบ DNS มาให้ผู้ที่สนใจได้ศึกษา และคุณจะรู้ว่าการติดตั้งระบบ DNS ของระบบปฏิบัติการ linux นั้นไม่ยุ่งยากและซับซ้อนอย่างที่คุณคิด และคุณก็สามารถทำได้ด้วยตัวเองเช่นกัน
บทนำ
- DNS ย่อมาจาก Domain Name System เป็นระบบที่ต้องใช้อยู่ตลอดเวลาที่มีการใช้งานเกี่ยวกับ Internet อย่างเช่น การใช้งาน Browser , Telnet , FTP , E-mail เนื่องจาก ชื่อ website หรือ server ที่เราจะเข้าไปใช้บริการ ตามปรกติ เราอ้างอิงเป็นตัวอักษร เพื่อให้เกิดการจำได้ง่าย เช่น เวลาที่เข้าไปที่ website ของ thailinux.com ก็จะป้อนข้อมูลที่ browser เป็น http://thailinux.com แต่ว่าเวลา computer จะรับส่งข้อมูลกัน จะใช้ตัวเลข IP address ของเครื่อง computer ปลายทางเป็นตัว บอกจุดหมายปลายทาง เพื่อให้อุปกรณ์ใน network เช่น router สามารถใช้ข้อมูลตัวเลข IP address ในการส่งข้อมูลต่อกันไปเป็น ทอดๆ ซึ่งจากเครื่องของคุณ ไปยังเครื่องของ thailinux.com
- DNS เป็นส่วนที่สำคัญมากบน Internet แต่คนที่ใช้ Internet น้อยคนนักที่จะเข้าใจการทำงานที่แท้จริงของ DNS ชื่อ software ที่ทำงานด้าน DNS ที่นิยมใช้กันในเครื่องตะกูล UNIX และ linux จะมีชื่อว่า BIND ซึ่งย่อมาจาก Berkley Internet Name Domain software โดยเครื่องส่วนใหญ่ ที่ทำหน้าที่เป็น name server มักจะใช้ software ตัวนี้ในการจัดการ ระบบ DNS ซึ่งปัจจุบันที่ใช้กันอยู่ จะมีอยู่ หลาย version คือ version 4, 8 และ 9
- ผู้จัดทำได้รวบรวมความรู้เกี่ยวกับการทำงานของระบบ DNS และการติดตั้งพร้อมตัวอย่างในการใช้งาน เพื่อให้ผู้ที่ทำการศึกษาได้เกิดความเข้าใจ และสามารถนำความรู้ที่ได้ไปใช้ได้จริง และคุณจะรู้ว่าการติดตั้ง DNS ของ linux นั้นไม่ยากอย่างที่คิด
ทฤษฏีพื้นฐานที่เกี่ยวข้อง
- การทำงานของ DNS ถูกออกแบบมาให้ทำงานในลักษณะของ Client – Server ซึ่ง DNS Server จะเก็บข้อมูลในลักษณะจับคู่ระหว่างชื่อคอมพิวเตอร์ (Domain Name) กับ IP Address และให้ DNS Client สามารถสอบถาม หาชื่อคอมพิวเตอร์ (Domain Name) ที่ต้องการได้ สิ่งที่ DNS ทำคือการจับคู่ระหว่างชื่อของคอมพิวเตอร์ (Domain Name หรือ Web Address) กับ IP Address ของคอมพิวเตอร์เครื่องนั้น ซึ่งเราเรียกการจับคู่นี้ว่า Name Resolution โดยเก็บเป็นแบบโครงสร้างต้นไม้ ซึ่ง DNS Server จะทำงานสัมพันธ์กับ DNS Client ขั้นตอนต่อไปนี้ Resolver (หรือเครื่องที่เป็น Client) จะส่ง IP Address เพื่อสอบถามชื่อคอมพิวเตอร์ (หรือส่ง Domain Name เพื่อสอบถาม IP Address) ไปยัง DNS Server ในเครือข่ายของตน ถ้า DNS Server ในเครือข่ายหาชื่อที่คู่กับ IP Address ที่ส่งมาไม่เจอ ก็จะส่งผ่าน IP Address นั้นไปถามหาชื่อยัง DNS Server ตัวอื่นๆ ต่อไปให้
เนื้อเรื่อง (การทำงาน/วิธีติดตั้งและตัวอย่างการใช้งาน)
- DNS ถือได้ว่าเป็นองค์ประกอบหลักอย่างหนึ่งของการติดต่อสื่อสารของอินเทอร์เน็ตในปัจจุบัน หน้าที่หลักของ DNS คือการแปลงหมายเลขไอพีให้เป็นชื่อโดเมน หรือแปลงชื่อโดเมนให้เป็นหมายเลขไอพี โปรแกรม Bind เป็นโปรแกรมที่นิยมใช้สำหรับการติดตั้ง DNS กันมากที่สุด
- การติดตั้ง DNS
การติดตั้ง DNS ด้วยวิธีง่ายๆ คือการติดตั้งโดยใช้ bind9 แบบ 2-in-1
ติดตั้ง dns
- apt-get install bind9
ไปที่ไดเรคทอรี่ของการปรับตั้ง
- cd /etc/bind
สมมุติว่าเน็ตเวิร์คเราเป็น 192.168.1.0/24 มีโดเมนเป็น example.com และเครื่องที่ทำหน้าที่ name server มีชื่อว่า ns1.example.com ไอพีเป็น 192.168.1.1
มีเครื่องในวงเครื่องอื่น ๆ ดังนี้ server1 = 192.168.1.1 ns1 = 192.168.1.1 (สมมุติว่าเป็นเครื่องเดียวกันกับ server1) ns2 = 192.168.1.2 client1 = 192.168.1.101 client2 = 192.168.1.102 client3 = 192.168.1.103
เริ่มสร้างโซนไฟล์ ให้ชื่อว่า example.com.zone
zone "example.com" {
type master;
file "/etc/bind/db.example.com";
};
มีเนื้อไฟล์ดังนี้ Code:
$TTL 86400
@ IN SOA server1.example.com. root.server1.example.com. (
51 ; serial (d. adams)
3H ; refresh
15M ; retry
1W ; expiry
1D ) ; minimum
@ IN NS ns1.example.com. ; primary NS
@ IN NS ns2.example.com. ; secondary NS
ns1 IN CNAME server1
; append or edit host ip here
server1 IN A 192.168.1.1
ns2 IN A 192.168.1.2
client1 IN A 192.168.1.101
client2 IN A 192.168.1.102
client3 IN A 192.168.1.103
สร้างรีเวิร์สไฟล์ ให้ชื่อว่า example.com.reverse มีเนื้อไฟล์ดังนี้
Code:
$TTL 86400
@ IN SOA server1.example.com. root.server1.example.com. (
51 ; serial (d. adams)
3H ; refresh
15M ; retry
1W ; expiry
1D ) ; minimum
@ IN NS ns1.example.com. ; primary NS
@ IN NS ns2.example.com. ; secondary NS
; append or edit host ip here
1 IN PTR server1.example.com.
2 IN PTR ns2.example.com.
101 IN PTR client1.example.com.
102 IN PTR client2.example.com.
103 IN PTR client3.example.com.
สร้างคอนฟิกไฟล์สำหรับโซน example.com ให้ชื่อว่า example.com.conf มีเนื้อไฟล์ดังนี้
Code:
zone "example.com" IN {
type master;
file "/etc/bind/example.com.zone";
allow-update { none; };
};
zone "1.168.192.in-addr.arpa" IN {
type master;
file "/etc/bind/example.com.reverse";
allow-update { none; };
};
เปลี่ยนเจ้าของไฟล์
- chown bind:bind example.com.*
บอกให้ bind9 เอาไฟล์ของเราไปใช้งาน โดยการเพิ่มลงในไฟล์ named.conf.local ดังนี้ Code:
include "/etc/bind/example.com.conf";
เสร็จแล้วก็สั่งเริ่ม bind9 ใหม่
- /etc/init.d/bind9 restart
ถ้ามีข้อผิดพลาด ให้ดูที่ /etc/log/syslog
ทดสอบโดย
# nslookup server1.example.com
จะแสดงผลเป็น 192.168.1.1
#nslookup 192.168.1.1
จะแสดงผลเป็น server1.example.com
- เลขซีเรียลตามตัวอย่างเป็น 51 แต่ส่วนใหญ่นิยมใช้วันที่ เช่น 2006030401 เป็นต้น
- ในเนื้อไฟล์ของโซนไฟล์และริเวิร์สไฟล์ เวลาพิมพ์ระวังอยาลืมเครื่องหมายจุด ท้ายชื่อโฮสต์
สรุป
การศึกษาการทำงานของระบบ DNS สามารถที่จะทำให้เราเข้าใจในการทำงานของระบบเน็ตเวิร์คและสามารถที่จะจัดการระบบเน็ตเวิร์คได้ สำหรับการติดตั้ง DNS ด้วย bind9 เป็นวิธีที่ง่ายและนิยมแพร่หลายกันมากที่สุด แต่ก็มีข้อเสีย ก็คือโปรแกรม bind9 นี้ยังมีจุดอ่อนหรือช่องโหว่อยู่ สำหรับวิธีการแก้ไขจุดอ่อนหรือช่องโหว่นี้ ทางผู้จัดทำได้นำมานำเสนอไว้แล้ว
- ช่องโหว่ของระบบ Domain Name System (DNS) ที่ใช้โปรแกรม BIND
วิเคราะห์ปัญหาช่องโหว่
BIND ย่อมาจาก "Berkeley Internet Name Domain" เป็นโปรแกรม DNS Server ที่มีผู้ใช้มากที่สุดในโลก แต่ก็มีช่องโหว่อยู่จำนวนมากเช่นกัน ตัวอย่างเช่น ช่องโหว่ที่ทำให้ BIND Service ไม่ทำงาน เรียกว่าเกิดอาการ Denial of Service (DoS) Attacks เป็นต้น
ถ้าระบบ DNS ล่ม การ Resolve URL Request จาก URL เป็น IP Address ก็จะเกิดปัญหาตามมาทำให้ทุกระบบที่ต่อเชื่อมกับอินเทอร์เน็ตนั้นไม่สามารถเข้าถึงได้ นับว่าเป็นปัญหาใหญ่ที่ไม่ควรมองข้าม นอกจากนี้ยังมีช่องโหว่ Buffer Overflow และ Cache Poisoning ที่ถูกแฮกเกอร์ยิง Exploit เข้ามายัง DNS Server อยู่บ่อยๆ DNS Server จำนวนมากในอินเทอร์เน็ตยังคงมีช่องโหว่ดังที่กล่าวมาแล้ว ทำให้แฮกเกอร์ฉวยโอกาสเจาะระบบได้อย่างไม่ยากเย็นนัก
ช่องโหว่นี้เกิดขึ้นทั้งระบบปฎิบัติการ UNIX และ Linux ที่ใช้โปรแกรม BIND ทำงานเป็น DNS Server
- วิธีการแก้ปัญหา
ทางแก้ปัญหาที่ง่ายที่สุดเลยก็คือ การเลิกใช้โปรแกรม BIND แล้วหันไปใช้โปรแกรม DNS Server ตัวอื่นแทน เพราะโปรแกรม BIND มักเกิดช่องโหว่อยู่เป็นประจำ การปิด Service BIND Daemon หรือ named ก็เป็นทางออกที่ดี ในกรณีที่ไม่ได้ใช้งาน DNS Server การติดตั้ง Patch ให้กับ BIND กลายเป็นเรื่องจำเป็นในทุกครั้งที่มีคนค้นพบช่องโหว่ของ โปรแกรม BIND การป้องกันการทำ "Zone Transfer" สามารถตั้งค่าได้ในไฟล์ "named.conf" การติดตั้งให้ BIND Service ทำงานอยู่เฉพาะในพื้นที่ที่จำกัดเฉพาะ BIND เท่านั้น เราเรียกวิธีนี้ว่า "Jail" ถ้าหาก BIND Service ถูกยึดโดยแฮกเกอร์ แฮกเกอร์ก็ยังไม่สามารถเจาะเข้าสู่แกนกลางหรือ Kernel ของระบบได้ เพราะถูกขังอยู่ในคุก (Jail) ที่เราออกแบบไว้นั่นเอง การปฏิบัติตามขั้นตอน Hardening BIND Checklist ก็เป็นสิ่งที่ควรทำก่อนที่จะ Online ระบบ DNS Server
- ข้อมูลอ้างอิงจาก : ACIS
