linux training in Thailand
| Home | Articles | Download | Free Linux Tips | Resources | Training | Web Link | Linux Training English|
| Courses | Schedule | Price & Promotion | Map | Customer Ref. | Instructors | Certification | FAQ | Registration Form |
สถาบันฯ ขอแจ้งปิดทำการระหว่างวันที่ 27 -31 กรกฏาคม 2558 และเปิดทำการปกติวันที่ 3 สิงหาคม 2558
We are on vacations 5 days in July 27-31, 2015 Please contract Line ID : nok_fly or e-mail : info@itdestination.com
ITDestination จะปิดปรับปรุงเว็บไซต์ ตั้งแต่วันที่ 7 - 9 มิถุนายน 2556
อาจจะทำให้ใช้งานไม่ได้ในบริการ Webboard Freetips และ E-Learning จึงขออภัยในความไม่สะดวกมา ณ ที่นี้
สถาบันฯ ขอแจ้งปิดทำการวันที่ 22-28 กุมภาพันธ์ 2560 และจะเปิดทำการปกติในวันที่ 1 มีนาคม 2560
กรณีติดต่อส่งข้อความมาที่ Facebook: LinuxITDestination หรือ e-mail: info@itdestination.com ซึ่งจะติดต่อกลับประมาณ 17.00 น.
ผู้ลงทะเบียนอบรมสามารถทำข้อสอบ online ในช่วงที่มาอบรมเพื่อทบทวนความรู้ ทำได้ไม่จำกัดจำนวนครั้ง มีข้อเฉลยที่ถูกต้องแนะนำ
สอบถามรายละเอียดโทร 089 890-5494 >>> อ่านรายละเอียด... คลิ๊ก

รักษาความปลอดภัยที่มีปฏิกริยาตอบสนองต่อการโจมตี

โดย ธีรภัทร มนตรีศาสตร์,RHCE

"เมื่อการรุกรานจากภายนอกเครือข่ายเป็นสิ่งที่หลีกเลี่ยงไม่ได้คงไม่ใช่เรื่องแปลกหากข้าพเจ้าจะขอโต้ตอบกลับไปบ้าง" ในโลกไอทีของเรามีบุคคลอยู่ 2 กลุ่ม กลุ่มแรกมีความเห็นเรื่องระบบความปลอดภัยเป็นเรื่องสนุก มีค่านิยมที่ชอบเก็บเกี่ยวความสนุกสนาน ตื่นเต้น ท้าทายกับการเจาะระบบของผู้อื่น ส่วนอีกกลุ่มหนึ่งกลับต้องใช้ชีวิตด้วยความกังวล ตื่นกลัว และเบื่อหน่ายที่จะต้องเฝ้าระวังให้ระบบที่ตนเองรับผิดชอบอยู่ทำงานได้อย่างราบรื่น รอดพ้นจากผลงานจากฝีมือของคนกลุ่มแรก บางรายถึงกับนอนไม่หลับ ( หรือไม่มีโอกาสได้นอน ) ตามปรกติเลยก็มี ในสภาพที่เราอยู่ท่ามกลางสถานการณ์ที่มีความเสี่ยงเช่นนี้ ภารกิจหน้าที่ของเหล่าผู้ดูแลระบบจะต้องเพิ่มขึ้นอย่างแน่นอน ไม่ว่าระบบเครือข่ายของคุณจะมีขนาดเล็ก กลาง หรือใหญ่ ทุกระบบก็ล้วนอยู่ในฐานะ "เป้านิ่ง" รอให้ผู้ก่อการร้ายเข้าโจมตีได้ทั้งนั้น ความพร้อมที่จะรับมือจากเหตุการณ์ร้าย ๆ ทั้งหลายนั้น เป็นสิ่งที่ผู้ดูแลระบบจะต้องรับผิดชอบ และสร้างมาตรการรองรับไว้ให้รัดกุมที่สุด หากกล่าวถึงการสร้างความเสียหายจากการกระทำของพวกแครกเกอร์ ( Cracker ) แล้ว ขั้นตอนสำคัญอันดับต้น ๆ ที่มักจะเป็นจุดเริ่มต้นก่อนที่จะเจาะเข้าสู่ระบบของเราก็คือ "การรวบรวมข้อมูล และค้นหาช่องโหว่" ซึ่งอาจจะเริ่มต้นจากการสืบค้นข้อมูลจากโดเมนเนมที่เป้าหมายได้จดทะเบียนไว้ แกะรอยไปเรื่อย ๆ ก็จะได้หมายเลขไอพีของโฮสต์ที่สำคัญ ๆ หรือเป็นไปได้ว่าจะสามารถนำมาร่างแผนผังของเครือข่าย ( เกือบ ) ทั้งหมด ซึ่งขั้นตอนเหล่านี้ไม่ได้ยากเย็นอะไรนัก ในด้านการป้องกันการกระทำการในขั้นตอนนี้ จะอยู่ที่ผู้ดูแลระบบจะต้องให้ความสำคัญในการวางโครงสร้างพื้นฐานของระบบเครือข่าย ( Network Infrastructure ) เป็นหัวใจสำคัญ จะอาศัยการจัดการด้านซอฟต์แวร์เพียงอย่างเดียวไม่ได้ ยกเว้นกรณีที่เป็นเครือข่ายขนาดเล็กซึ่งการจัดวางระบบที่ซับซ้อนอาจจะใช้งบประมาณสูงเกินฐานะ ก็คงต้องยอมรับความเสี่ยงดังกล่าวไว้พิจารณา โดยอาจจะจัดวางระบบโดยอาศัยเซิร์ฟเวอร์ที่แข็งแกร่งมีการป้องกันเป็นอย่างดี หรือ Bastion Host เป็นการทดแทน


รูปที่ 1 ตัวอย่างไดอะแกรมของระบบเครือข่ายที่มีระดับความเสี่ยงแตกต่างกัน


ศึกษาอาวุธของศัตรู Port Scanner หลังจากที่แครกเกอร์ได้หมายเลขโฮสต์เป้าหมายมาแล้ว ขั้นตอนถัดไปก็คือ การตรวจสอบเพื่อให้ทราบว่าโฮสต์เหล่านั้นกำลังรันงานบริการ ( Services ) อะไรกันอยู่บ้าง เพื่อที่จะได้ค้นหาช่องโหว่ของงานบริการนั้น ๆ ในรายละเอียดต่อไป ในขั้นตอนนี้เครื่องมือที่เหล่าแครกเกอร์นิยมใช้กันมักจะเป็นโปรแกรมประเภท Port Scanner ได้แก่ โปรแกรม Nmap ( Linux/Win ) ,โปรแกรม SuperScan (Windows) เป็นต้น โปรแกรมพวกนี้จะสร้างแพคเก็ตชนิดต่าง ๆ หลากหลายชนิดแล้วส่งไปยังโฮสต์เป้าหมายโดยมีจุดประสงค์เพื่อรวบรวมรายชื่อพอร์ต ( TCP/UDP port ) ที่โฮสต์นั้นเปิดให้บริการอยู่ ผลลัพธ์ของโปรแกรมจะช่วยให้แครกเกอร์ล่วงรู้ช่องทางที่มีอยู่ทั้งหมด จากนั้นคงไม่ยากนักหากจะเลือกช่องทางที่อ่อนแอ และที่สุดมีโอกาสประสบความสำเร็จมากที่สุด


รูปที่ 2 ผลลัพธ์ของโปรแกรม Port Scanner ( Nmap )


นอกจากการแสกนพอร์ตโดยน้ำมือของบรรดาแครกเกอร์แล้ว ไวรัสหรือหนอนอินเตอร์เน็ตหลายๆ สายพันธุ์ก็มีการทำงานคล้ายกัน แตกต่างกันที่พวกหนอนเหล่านั้นจะมุ่ง หน้าเข้าสู่พอร์ตใดพอร์ตหนึ่งโดยเฉพาะเท่านั้น พฤติกรรมเช่นนี้สามารถควบคุมและป้องกันได้ หากใช้ลีนุกซ์เป็นเกตเวย์หรือพร๊อกซี่ ซึ่งจะได้กล่าวถึงต่อไป กลับมาที่เรื่องของโปรแกรมประเภท Port Scanner ซึ่งเป็นเครื่องมือที่ใช้ตรวจสอบค้นหาช่องทางที่จะติดต่อเข้าสู่โฮสต์ที่เป็นเซิร์ฟเวอร์ได้อย่างง่ายดาย โปรแกรมประเภทนี้ร้ายกาจนักสามารถสร้างแพคเก็ตได้หลากหลายรูปแบบ เพื่อจุดประสงค์หลักคือ ให้ทราบว่ามีการเปิดพอร์ตใดไว้บ้าง ตัวอย่างบางส่วนที่นิยมใช้งานของแพคเก็ตที่โปรแกรม Nmap สามารถสร้างได้มีดังนี้ TCP Sync Scanning : : อาศัยเทคนิคที่เรียกว่า "Half-Open" โดยโปรแกรมจะส่ง SYN Packet ออกไปยังโฮสต์เป้าหมาย ทันทีที่เกิดการคอนเน็คขึ้น โปรแกรมจะยุติการติดต่อทันที ซึ่งเทคนิคเช่นนี้จะทำให้โฮสต์เป้าหมายส่วนใหญ่ยังไม่ทันได้บันทึกเหตุการณ์นี้ไว้ใน Log จึงเป็นการแสกนที่ไม่ทิ้งร่องรอยไว้นั่นเอง TCP connect( ) : วิธีการนี้เป็นวิธีขั้นพื้นฐานที่โปรแกรม Port Scanner ทั่วไปนิยมปฏิบัติกัน ( เช่น โปรแกรม Port Scanner ในกลุ่มวินโดวส์ ) ซึ่งเป็นการจำลองกรกะบวนการร้องขอเพื่อการติดต่อขอใช้บริการจากเครื่องลูกข่ายตามปรกติ วิธีการนี้จึงง่ายต่อการตรวจจับโดยโฮสต์ปลายทางและบันทึกเข้าสู่ Log Stealth FIN , Xmas Tree ,Null Scanning : : เป็นวิธีแสกนพอร์ตที่มีวิธีการที่แตกต่างจาก 2 วิธีแรก เนื่องจากการส่งแพคเก็ต SYN จะถูกปฏิเสธได้โดยไฟร์วอลล์ ดังนั้นจึงอาศัยวิธีส่งแพคเก็ตด้วยแฟล็กชนิดอื่น ๆ หรือไม่มีการเซ็ตแฟลกใด ๆ เลยไปแทน ซึ่งจะมีความเป็นไปได้ว่าจะสามารถเล็ดลอดการตรวจจับและปฏิเสธของไฟร์วอลล์ไปได้ นอกจากนี้ผลการตอบสนองต่อแพคเก็ตเหล่านี้จากระบบปฏิบัติการต่าง ๆ จะมีผลลัพธ์ที่ไม่เหมือนกัน พฤติกรรมที่แตกต่างกันนี้เองจึงเป็นประโยชน์ในทางอ้อมที่ช่วยให้สามารถประเมินได้ว่าโฮสต์เป้าหมายนั้นใช้ระบบปฏิบัติการใดอยู่ นับว่าเป็นข้อมูลที่น่าสนใจอีกประการหนึ่งด้วย UDP Scanning : การแสกนในโหมดนี้จะตรวจสอบเฉพาะพอร์ตที่ให้บริการแบบ UDP ( User Datagram Protocol ) โดยเฉพาะ ซึ่งปรกติแล้ว Nmap จะไม่รายงานเกี่ยวกับพอร์ตชนิดนี้ให้ทราบจนกว่าผู้ใช้จะกำหนดให้ทำงานในโหมดนี้ IP Protocol Scanning : ใช้เพื่อการวิเคราะห์โฮสต์เป้าหมายว่ากำลังใช้ IP Protocol ใดอยู่บ้าง เช่น icmp, igmp ,tcp ,udp ข้อมูลที่ปรากฏขึ้นจะใช้เพื่อการเดา ( Guessing ) ประเภท และหน้าที่ของโฮสต์นั้น ๆ ซึ่งอาจจะไม่ใช่เครื่องเซิร์ฟเวอร์ แต่อาจเป็นอุปกรณ์เครือข่ายบางประเภทก็เป็นได้ สำหรับโปรแกรม Nmap นี้ จะมีให้มาเป็นตัวเลือกในการติดตั้งของ Red Hat Linux อยู่แล้ว หากต้องการทราบวิธีการใช้งานในแบบ command line เพิ่มเติมกรุณาอ่านได้จาก Man Page ของโปรแกรม นอกจากนี้ยังมีโปรแกรม NmapFE เป็น Front End แบบ GUI ให้ใช้งานแบบกราฟฟิกอีกด้วย หรือถ้าต้องการดาวน์โหลดโปรแกรมรุ่นใหม่กว่าที่มาพร้อมกับ Red Hat Linux ก็สามารถไปดาวน์โหลดได้ที่ http://www.insecure.org/nmap ซึ่งมีโปรแกรม NmapWin สำหรับรันในระบบปฏิบัติการวินโดวส์อีกด้วย ขนาดของไฟล์ประมาณ 4.84 MB มีอินเทอร์เฟสเป็นกราฟฟิกใช้งานได้สะดวกเช่นเดียวกัน


รูปที่ 3 Nmap for Window


ไม่ว่าการรุกล้ำเข้ามาของแพคเก็ตแปลกปลอมจะมีที่มาจากมนุษย์ ( Crackers ) หรืออมนุษย์ ( Viruses / Worms ) ก็ตาม ย่อมเป็นพฤติกรรมที่ไม่พึงประสงค์อย่างแน่นอน การป้องกันในเชิงรับเป็นสิ่งแรกที่ผู้ดูแลระบบสมควรพิจารณาหาไฟร์วอลล์ประเภท Packet Filter มาป้องกันระบบของคุณ นอกเหนือจากข้อควรปฏิบัติพื้นฐานทั่วไปที่ทราบกันดีอยู่แล้ว เช่น การปิดงานบริการที่ไม่ได้ใช้งาน กำหนดเงื่อนไขประเภท Host Access Control List ไปจนถึงเรื่องของการอัพเดตซอฟต์แวร์งานบริการที่ใช้งานอยู่ให้ทันสมัยและมีข้อบกพร่องน้อยที่สุด อย่างไรก็ตามการติดตั้งไฟร์วอลล์ไม่ว่าจะเป็นในส่วนของเกตเวย์ หรือการรัน Packet Filter ภายในโฮสต์ที่เป็นเซิร์ฟเวอร์ก็ตาม อาจจะยังไม่คำตอบสุดท้ายก็ได้ เพราะเครื่องมือแสกนพอร์ตและไวรัสยังคงสามารถเจาะเข้ามาได้ในที่สุดอยู่ดี แนวคิดของการหลอกล่อให้คนร้ายปรากฏตัวจึงถูกนำมาใช้ และเป็นที่มาของโปรแกรมรักษาความปลอดภัยที่มีปฏิกริยาตอบสนองต่อการโจมตี Psionic PortSentry โปรแกรม PortSentry เป็นโปรแกรมสำหรับลีนุกซ์และโอเอสตระกูลยูนิกซ์ที่ออกแบบขึ้นเพื่อตรวจสอบการแสกนพอร์ตจากภายนอก และสามารถตอบสนองต่อการกระทำนั้น ๆ ได้หลายรูปแบบ พัฒนาขึ้นโดยเป็นส่วนหนึ่งของ Abacus Project ซึ่งริเริ่มโดย Craig H. Rowland โดยลักษณะแล้วถือว่าเป็นซอฟต์แวร์ประเภท Network based Intrusion Detection ( NIDS ) ซึ่งนอกจากจะมีโหมดการดีเทคการแสกนพอร์ตให้เลือกใช้งานถึง 6 โหมดแล้ว ยังสามารถโต้ตอบการแสกนพอร์ตนั้นได้อีกด้วย ดังนี้
  1. บันทึกข้อมูลของการแสกนพอร์ตที่เกิดขึ้น และรายงานผ่านบริการ syslogd ซึ่งโดยปรกติจะสามารถย้อนตรวจดูเหตุการณ์ย้อนหลังได้ที่ไฟล์ /var/log/messages หรืออาจจะเปลี่ยนไปบันทึกที่ไฟล์อื่นแยกออกไปก็ได้ตามต้องการ



    รูปที่ 4 รายงานการถูกแสกนพอร์ตโดย Syslogd


  2. ปิดกั้นโฮสต์ฝ่ายตรงข้ามโดยอัตโนมัติ หรือ Automatic Real time blocking ด้วย TCP Wrappers โดยจะอัพเดตที่ไฟล์ /etc/hosts.deny ให้เองทันที เช่น เมื่อถูกเครื่อง 203.182.16.1 แสกนเข้ามา ไฟล์ /etc/hosts.deny จะมีข้อความเกิดขึ้นเองดังนี้

    ALL:203.182.16.1


  3. คอนฟิก kernel route table โดยอัตโนมัติ เพื่อตัดการติดต่อกับโฮสต์ฝ่ายตรงกันข้าม



    รูปที่ 5 Kernel Routing Table ภายหลังจากถูกเครื่อง 192.168.0.6 แสกนเข้ามา


  4. ระบบ History เป็นการบันทึกผลการบล๊อกที่ได้กระทำไปแล้ว โดยมีข้อมูลเกี่ยวกับวันเวลาที่มีการแสกนพอร์ตเกิดขึ้น ชื่อและไอพีแอดเดรสของโฮสต์ฝ่ายตรงข้าม ( สามารถกำหนดให้ใช้ระบบ DNS Lookup หรือไม่ใช้ได้ตามต้องการ ) โดยจะเก็บไว้ที่ไฟล์ portsentry.history



    รูปที่ 6 ไฟล์ History ของ PortSentry


  5. Prioritize Response เป็นความสามารถใหม่มีตั้งแต่เวอร์ชั่น 1.1 ขึ้นไป คือ สามารถจัดระดับความสำคัญของการจัดการต่อการแสกนพอร์ตได้ และยังสามารถรันคำสั่งภายนอกได้ตามต้องการ จึงมีประโยชน์มากต่อการสร้างระบบแจ้งเตือน ( Alert and Alarm ) ในรูปแบบที่ผู้ดูแลระบบสามารถกำหนดขึ้นได้เอง
เป็นอย่างไรบ้างครับ สำหรับคุณสมบัติของซอฟต์แวร์ประเภท NIDS ตัวนี้ ไม่น่าเชื่อเลยว่าจะมีขนาดของไฟล์ source code เพียงแค่ 32KB เท่านั้น แน่นอนครับโปรแกรมที่นำมาเสนอนี้จะต้องเป็น Open Source Software เช่นเดิม ( แต่มี License restriction ) สามารถหาดาวน์โหลดได้ที่ http://www.psionic.com ส่วนการติดตั้งก็ทำได้ไม่ยาก เนื่องจากมีไฟล์เอกสาร README.install ให้คำแนะนำในการติดตั้งไว้อย่างตรงไปตรงมาสามารถปฏิบัติตามได้เลย ซึ่งผู้เขียนได้ทดลองนำเวอร์ชั่น 1.0 มาติดตั้งบน Red Hat Linux 9.0 ก็สามารถติดตั้งได้อย่างราบรื่นไม่ติดขัดอะไร หากไม่ได้แก้ไขค่าคอนฟิกใด ๆ ทั้งตัวโปรแกรม ไฟล์คอนฟิก และ ไฟล์ History จะอยู่รวมกันที่
# cd /usr/local/psionic/portsentry
เมื่อต้องการเรียกใช้งานจะใช้คำสั่งดังนี้

# ./portsentry -atcp
จะเป็นการกำหนดให้ PortSentry ทำงานในโหมด Advanced Stealth Detection ซึ่งจะซ่อนการทำงานไว้ได้ แม้แต่ Localhost เองก็ไม่รู้ว่ามีการเปิด Socket จาก PortSentry ไว้ ( โหมดนี้ทำงานได้เฉพาะ Linux Kernel เท่านั้นครับ หากนำไปรันบนระบบอื่น ๆ จะไม่สามารถทำงานได้ ) ส่วนการที่จะให้ PortSentry เริ่มต้นทำงานตั้งแต่เริ่มต้นระบบนั้น ผู้ติดตั้งจะต้องนำคำสั่งไปไว้ในสคริปต์ที่เหมาะสมเอง เช่น อาจจะเพิ่มคำสั่งไว้ที่ไฟล์ /etc/rc.local ก็ได้ อย่าปล่อยให้ Cracker ลอยนวล หลาย ๆ ท่านอาจจะคิดว่าเพียงแค่ติดตั้งไฟร์วอลล์เอาไว้ ก็อาจจะทำให้พวกแครกเกอร์ตัวแสบทั้งหลายเลิกคิดที่จะเข้ามาก่อกวน และเลิกตอแยไปในที่สุด แต่พวกเขาก็จะมองหาเหยื่อรายใหม่ต่อไปอีกเรื่อย ๆ ผู้เขียนเชื่อว่าคนประเภทนี้นอกจากจะเป็นโรคจิตบกพร่องแล้ว ส่วนหนึ่งจะต้องเป็นผู้ที่ทำงานเกี่ยวข้องกับระบบเครือข่ายระดับแบคโบนจึงเที่ยวเจาะระบบคนอื่นเล่นได้ตามอำเภอใจ แต่ด้วยซอฟต์แวร์ที่ผู้เขียนนำเสนอในครั้งนี้คงพอช่วยให้ผู้ดูแลระบบลีนุกซ์เซิร์ฟเวอร์สามารถย้อนรอยไปยังต้นตอที่สร้างปัญหายุ่งยากให้แก่เราได้ อย่างน้อยก็รู้ได้ว่ามีใครประสงค์ร้ายกับเราบ้าง เพื่อจะได้บริหารระบบด้วยความไม่ประมาท และเพิ่มความระมัดระวังให้มากยิ่งขึ้น หากท่านผู้อ่านมีข้อสงสัยหรือต้องการแลกเปลี่ยนประสบการณ์ด้านซอฟต์แวร์โอเพ่นซอร์ส ขอเชิญได้ที่เว็บไซต์ของผู้เขียน http://www.itdestination.com/webboard สวัสดีครับ