Pages - Menu
▼
 
  
 
 
 
ชี้ 10 จุดตาย..ระบบปฏิบัติการลินุกซ์
เราต่างทราบกันดีว่า 
ซอฟต์แวร์ทุกชนิดล้วนมีข้อบกพร่องให้โปรแกรมเมอร์ต้องแก้ไข ปรับปรุง 
พัฒนากันไม่รู้จบ 
โชคดีที่ระบบปฏิบัติการลีนุกซ์ถูกสร้างขึ้นโดยอาศัยโมเดลการพัฒนาซอฟต์แวร์
โอเพ่นซอร์ส ทำให้ได้รับการปรับปรุงแก้ไขต่อเนื่องไม่มีวันจบสิ้น 
แต่ถึงอย่างไรก็ตามในโลกนี้ใม่มีอะไรที่จะสมบูรณ์แบบไปทั้งหมด 
แม้แต่ระบบปฏิบัติการลีนุกซ์เองก็ยังคงมี “จุดอ่อน” 
ที่เมื่อสะกิดโดนเมื่อใดก็ถือเป็น “จุดตาย” ได้ทันที 
ด้วยการทำความเข้าใจอย่างลึกซึ้งเท่านั้นจึงจะเป็น “เกราะป้องกัน” 
ได้อย่างดีที่สุด  
“จุดตาย” ที่ผู้เขียนนำมาเสนอนี้ มีจุดประสงค์เพื่อบอกเล่าประสบการณ์ 
และเป็นแนวทางให้แก่ผู้สนใจ 
ศึกษาระบบปฏิบัติการลีนุกซ์ได้นำไปวางแผนป้องกัน 
เพิ่มความระมัดระวังในการปฏิบัติงาน 
รวมไปถึงช่วยให้เข้าใจการทำงานของระบบปฏิบัติการลีนุกซ์มากยิ่งขึ้นในโอกาส
ต่อไป มาเริ่มกันเลยนะครับ

จุดตายที่ 1 MBR
MBR ย่อมาจาก Master Boot Record 
เป็นจุดเริ่มต้นของระบบปฏิบัติการทุกชนิดที่บูตด้วยฮาร์ดดิสก์ 
พื้นที่ขนาดจิ๋วแค่ 512 ไบต์ที่อยู่บริเวณส่วนแรกสุดของฮาร์ดดิสก์นี้เอง 
เป็นที่เก็บโปรแกรมประเภท Boot Loader ไว้ 
สำหรับระบบปฏิบัติการลินุกซ์รุ่นปัจจุบันนิยมใช้กันก็คือโปรแกรมชื่อ GRUB 
นั่นเอง ซึ่งโปรแกรม GRUB 
นี้มีหน้าที่เริ่มต้นโหลดเคอร์เนลลินุกซ์เข้าสู่หน่วยความจำของเครื่องพีซี 
อันเป็นขั้นตอนสำคัญที่สุดของการเริ่มต้นระบบเลยก็ว่าได้ 
ส่วนของโปรแกรม GRUB ที่ติดตั้งอยู่ที่ MBR นี้ 
ไม่ใช่ตัวโปรแกรมทั้งหมด หากแต่เป็นเพียงเฉพาะส่วนหนึ่งที่เรียกกันว่า 
Stage 1 ของ GRUB เท่านั้น ซึ่งมันจะค้นหา Stage 1.5 
ของตัวมันเองไล่ลำดับไปจนถึงเคอร์เนลในที่สุด จากความสำคัญดังกล่าวมานี้ 
จะเห็นได้ว่าหาก MBR และ GRUB 
ที่ฝังอยู่ในส่วนต้นของฮาร์ดดิสก์ได้รับความเสียหายย่อมส่งผลให้ระบบไม่
สามารถทำงานได้ นั่นคือ 
ระบบปฏิบัติการลินุกซ์ของเราจะบูตไม่ขึ้นอย่างแน่นอน 
และถือว่าเป็นจุดตายที่พบค่อนข้างบ่อยมากอาการหนึ่ง
แนวทางป้องกัน “จุดตายที่ 1” ทำได้โดยสำรอง MBR ไว้ในแผ่นดิสก์ 
โดยใช้คำสั่งหรือโปรแกรมสำเร็จรูปก็ได้ 
และในกรณีที่ต้องการใช้หลายระบบปฏิบัติการในเครื่องเดียวกันควรติดตั้งระบบ
ปฏิบัติการวินโดวส์ “ก่อน” ลีนุกซ์เสมอ 
เพราะการติดตั้งวินโดวส์จะเขียนข้อมูลทับ GRUB Stage 1 ให้เสียหายได้ 
ส่วนการแก้ไขปัญหากรณีที่ GRUB Stage 1 โดนทำลายไปแล้ว 
จะต้องใช้แผ่นบูตของลีนุกซ์บูตแทนฮาร์ดดิสก์ หรือใช้เทคนิคที่เรียกว่า 
Linux Rescue ก็ได้เช่นกัน
จุดตายที่ 2 คอนฟิกของ GRUB
เราได้ทราบถึงความสำคัญของโปรแกรม GRUB ไปพอสมควรแล้ว และทราบแล้วว่า 
GRUB ไม่ได้อยู่ที่ MBR เท่านั้น แต่ยังมีส่วนประกอบอื่นๆ อีกในไดเร็คทอรี่
 /boot/grub เรียกว่าเป็นคอนฟิกทั้งหมดของ GRUB ก็ได้ 
ในพื้นที่นี้มีไฟล์สำคัญๆ ได้แก่ grub.conf  stage1  e2fs_stage1_5 และ 
stage2 
โดยเฉพาะไฟล์ grub.conf นั้น มีรายละเอียดการทำงานระบุไว้ภายใน 
ทั้งยังเป็นไฟล์ข้อความธรรมดาอีกด้วย 
จึงมีความเสี่ยงสูงมากที่จะถูกเปลี่ยนแปลงแก้ไข 
จนมีผลทำให้ระบบไม่สามารถบูตได้ตามปรกติ 
หรือมีโอกาสที่ผู้ที่บุกรุกเข้าสู่ระบบจะทำการแก้ไขคอนฟิกเพื่อให้เคอร์เนล 
(ซึ่ง GRUB เป็นผู้กระตุ้นให้ทำงาน) 
มีการทำงานที่เอื้อต่อการเปิดช่องโหว่ขึ้น 
ซึ่งอาจนำไปสู่หายนะที่ร้ายแรงยิ่งขึ้นสำหรับเซิร์ฟเวอร์ในระบบอินเตอร์เน็ต
แนวทางการป้องกัน “จุดตายที่ 2” คือ ควรใช้เซ็ต immutable bit 
เพื่อป้องกันการแก้ไขไฟล์โดยไม่ตั้งใจ และ 
ควรกำหนดพารามิเตอร์ในการเม้าต์พื้นที่นี้เป็นแบบอ่านได้เท่านั้น (Read 
Only) 
สำหรับการแบ๊คอัพคอนฟิกไว้คงไม่ต้องกล่าวให้เปลืองเวลาเพราะเป็นภารกิจปรกติ
ของผู้ดูแลระบบที่ทราบกันดีอยู่แล้ว
จุดตายที่ 3 เคอร์เนลและไฟล์ประกอบทั้งหมด
คงปฏิเสธไม่ได้ว่า เคอร์เนล คือ หัวใจสำคัญของระบบปฏิบัติการลีนุกซ์ 
“จุดตายที่ 3” จึงตกอยู่ที่ /boot 
ซึ่งเป็นไดเร็คทอรี่ที่จัดเก็บไฟล์เคอร์เนลรวมทั้งไฟล์อื่นๆ 
ที่ร่วมกันทำงานกับเคอร์เนล 
โดยเฉพาะในขั้นตอนของการบูตระบบในครั้งแรกที่เปิดเครื่อง 
เราไม่อาจย้ายตำแหน่งที่เก็บเคอร์เนลไปที่อื่นได้ 
เหตุผลเนื่องมาจากข้อจำกัดของโปรแกรมประเภท Boot Loader (เช่น GRUB) 
จะต้องสามารถค้นหาและโหลดไฟล์เคอร์เนลได้ง่ายที่สุดนั่นเอง  
ไดเร็คทอรี่ /boot จึงกลายเป็น “เป้านิ่ง” 
ให้ผู้ไม่หวังดีโจมตีได้ง่ายมาก 
โดยเฉพาะเมื่อโปรแกรมแอปพลิเคชั่นที่กำลังทำงานอยู่มีช่องโหว่ด้านความ
ปลอดภัยทางเครือข่าย ประเด็นสำคัญอีกข้อก็คือ 
เนื่องจากไฟล์เคอร์เนลและไฟล์ประกอบทั้งหลายใน /boot 
นี้ไม่ใช่ไฟล์ข้อความธรรมดา การโจมตีจึงเป็นลักษณะ “เช็คบิล” ล้วนๆ คือ 
ทำลายให้เสียหายเท่านั้น ผลลัพธ์คือ บูตไม่ได้นั่นเอง
สำหรับแนวทางการป้องกัน ยังคงเหมือนกับ /boot/grub ที่ได้กล่าวไปแล้ว 
เพราะทั้งสองพื้นที่นี้อยู่ร่วมกัน การแยกเม้าต์เฉพาะ /boot 
และทำให้เม้าต์แบบ Read Only 
จึงเป็นวิธีการที่เหมาะสมที่สุดสำหรับทั้งจุดตายที่ 2 และจุดตายที่ 3
จุดตายที่ 4 SELinux
SELinux ย่อมาจาก Security Enhanced Linux 
เป็นคุณสมบัติด้านการรักษาความปลอดภัยที่เพิ่มเติมขึ้นในเคอร์เนลลีนุกซ์
รุ่นใหม่ตั้งแต่ 2.6 ขึ้นไปก็จะมีรวมไว้เสมอ 
ซึ่งมีความซับซ้อนในการบริหารจัดการอยู่พอสมควร 
และยังถือว่าเป็นของใหม่สำหรับหลายๆ ท่านอยู่ในเวลานี้ 
ดังนั้นคุณสมบัตินี้จึงถูกออกแบบให้ผู้ใช้งานสามารถเลือกโหมดในการทำงานและ
สามารถเปิดปิดการทำงานได้ตามความต้องการ 
มีข้อดีอย่างนี้แล้ว SELinux จะเป็น “จุดตายที่ 4” ได้อย่างไร 
ดังที่ได้กล่าวไปแล้วว่า SELinux มีความสัมพันธ์ใกล้ชิดกับเคอร์เนลมาก คือ 
เป็นส่วนหนึ่งในเคอร์เนลเลยทีเดียว 
ดังนั้นเมื่อมีความผิดปรกติใดก็ตามเกี่ยวกับ SELinux 
ย่อมทำให้การทำงานของเคอร์เนลผิดปรกติไปด้วยอย่างหลีกเลี่ยงไม่ได้
ตัวอย่างหนึ่งก็คือ ไฟล์คอนฟิกของ SELinux ที่มีปรากฏในลีนุกซ์ตระกูล 
Red Hat ทั้งหมด ได้แก่ Red Hat Enterprise Linux ,Fedora Core ,CentOS  
จะมีไฟล์ชื่อ /etc/sysconfig/selinux 
ซึ่งใช้ในการกำหนดการทำงานให้แก่เคอร์เนลในเรื่องเกี่ยวกับ SELinux 
หากไฟล์นี้ถูกแก้ไขผิดเพี้ยนไป ผลลัพธ์ที่เกิดขึ้นคือ บูตไม่ขึ้นครับ 
อาการที่ปรากฏก็คือ ถึงกับ Kernel Panic เลยทีเดียว 
เพราะฉะนั้นจึงใคร่ขอแนะนำว่า 
การที่จะไปแก้ไขคอนฟิกไฟล์โดยตรงด้วยโปรแกรมแก้ไขข้อความ ( vim หรือ nano )
 เป็นทางเลือกที่ต้องระมัดระวัง 
หากสามารถใช้โปรแกรมคำสั่งที่กำหนดให้ใช้ก็จะปลอดภัยกว่า 
แต่ถ้าถนัดที่จะแก้ไขโดยตรงเองก็ต้องเพิ่มความละเอียดรอบคอบมากยิ่งขึ้น 
สรุปแล้ว “จุดตายที่ 4” นี้ เป็นตัวอย่างหนึ่งของสิ่งที่เราเรียกกันว่า “Admin Error” ก็คงไม่ผิด
จุดตายที่ 5 ไฟล์ธรรมดา..ที่ไม่ธรรมดา
จุดตายที่ 5 นี้ อันที่จริงยังไม่ถึงขั้นร้ายแรงนัก เรียกว่า 
แค่เอ๋อ..ยังไม่ถึงตาย ไฟล์คอนฟิกบางไฟล์นั้น ดูเผินๆ 
ก็เป็นแค่ไฟล์ธรรมดาที่คุ้นๆ กันอยู่ (ผ่านไปผ่านมา..ไม่เคยสนใจ) 
แต่อาจจะสร้างความผิดปรกติให้ระบบได้อย่างคาดไม่ถึง 
และมีอำนาจมากพอจะเปลี่ยนให้ “แอดมินผู้เชี่ยวชาญ” ให้กลายเป็น 
“แอดมึนผู้มืดมน” ไปได้ง่ายๆ
ยกตัวอย่างเช่นไฟล์ /etc/hosts 
ซึ่งเป็นไฟล์ที่มีปรากฏในโฮสต์ทุกระบบปฏิบัติการที่ทำงานกับระบบเครือข่าย 
TCP/IP 
โดยหน้าที่แล้วไฟล์นี้ใช้เก็บรายชื่อโฮสต์จับคู่กับหมายเลขไอพีไว้เท่านั้น
เอง ไม่ว่าเมื่อใดก็ตามที่มีการติดต่อกับโฮสต์ต่างๆ 
แม้แต่การติดต่อกับโฮสต์ตัวเองก็จะต้องเปิดไฟล์นี้เพื่ออ้างอิงชื่อและหมาย
เลขไอพีที่ถูกต้อง แล้วเพราะเหตุใดจึงนับว่าเป็น “จุดตาย”
ประเด็นอยู่ตรงที่โปรแกรมแอปพลิเคชั่นทุกๆ 
โปรแกรมที่ทำงานเกี่ยวข้องกับชื่อโฮสต์ จะต้องสามารถอ้างอิงถึง “ตัวเอง” 
ได้ เช่น localhost หรือชื่อใดๆ ที่ตั้งขึ้นก็ตาม 
เพื่อให้วงจรของการสื่อสารดำเนินไปอย่างถูกต้อง ดังนั้นหากชื่อโฮสต์ของ 
“ตัวเอง” ที่ระบุไว้ในไฟล์นี้ ไม่ถูกต้องแล้ว 
ผลก็คือจะทำให้โฮสต์ของเราไม่รู้จัก “ตัวเอง” ว่าชื่ออะไรกันแน่
ผลที่เกิดขึ้นจะทำให้ระบบของเราเกิดอาการ “เอ๋อ” 
ได้อย่างไม่ต้องแปลกใจ เช่น โฮสต์ของเราชื่อ nomnam.example.com 
เมื่อได้รับอีเมล์ที่ส่งมาถึง user@nomnam.example.com 
โฮสต์ของเราก็ไปมองในไฟล์ /etc/hosts ปรากฏว่าระบุไว้เป็นชื่ออื่น 
โฮสต์ของเราก็จะปฏิเสธ (reject) อีเมล์ฉบับนั้นไปซะนี่ 
แทนที่จะรับไว้ให้แก่ user ซึ่งมันคงคิดไปว่า “ฉันไม่ได้ชื่อ 
nomnam.example.com ซะหน่อย..นี่ไม่ใช่อีเมล์ของฉัน..” 
เพราะฉะนั้นโปรดอย่ามองข้ามจุดเล็กๆ น้อยๆ มิฉะนั้นมันอาจกลายเป็น “จุดตาย”
 ขึ้นมาก็ได้
จุดตายที่ 6 เข้าเกียร์ไม่ได้..ก็จอดสนิท
ลีนุกซ์ทุกสายพันธุ์จะมีศูนย์กลางของการควบคุมการทำงานของโปรเซสที่รับ
ช่วงต่อจากเคอร์เนลที่เหมือนกันหมด คือ โปรแกรม init 
และไฟล์คอนฟิกที่ทำงานคู่กันก็คือไฟล์ /etc/inittab 
เปรียบเสมือนฟันเฟืองชิ้นเล็กๆ ที่ใช้ควบคุมการส่งกำลังของรถยนต์ 
ไฟล์ทั้งสองนี้มีหน้าที่ควบคุมการบูตเข้าสู่การทำงานในโหมดต่างๆ 
ของระบบปฏิบัติการลีนุกซ์ไปจนถึงการปิดเครื่องหรือการรีบูตเครื่อง 
ซึ่งโหมดต่างๆ เหล่านี้เราเรียกว่า Run Level 
โดยใช้ค่าตัวเลขในการแทนความหมาย เช่น runlevel 0 หมายถึงการปิดเครื่อง 
(halt) เป็นต้น
จากความสำคัญที่กล่าวมา จึงทำให้เราค้นพบ “จุดตาย” อีกจุดหนึ่ง 
ซึ่งโอกาสที่ /sbin/init จะถูกโจมตีในลักษณะ Rootkits ก็มีปรากฏมาแล้ว 
(ถูกดัดแปลงโค๊ดภายในจนกลายเป็นเครื่องมือของแฮกเกอร์) ไฟล์ /etc/inittab 
ที่มีสภาพเป็นไฟล์ข้อความธรรมดาย่อมถูก “รบกวน” ได้ไม่ยากเลย 
แม้กระทั่งความผิดพลาดของผู้ดูแลระบบเองก็ทำให้ถึงกับ “จอดสนิท” ได้เช่นกัน
ไม่เพียงเท่านั้น ภายใต้การทำงานของโปรแกรม init ยังมีไฟล์ย่อยๆ 
อีกจำนวนมาก ที่รวมกันทำงานเพื่อควบคุมการเริ่มต้นทำงานของระบบปฏิบัติการ 
คือ /etc/rc.d/rc.sysinit และ /etc/rc.d/rc 
ซึ่งมีหน้าที่ควบคุมระบบย่อยที่เรียกว่า System Services แบบ SysV 
เพื่อเริ่มต้นการทำงานหรือยุติการทำงานของโปรแกรมบริการ (เช่น 
บรรดาเซิร์ฟเวอร์ต่างๆ) ทั้งหมดในระบบอีกด้วย
หนทางป้องกัน “จุดตายที่ 6” นี้ คงหนีไม่พ้น “immutable bit” เท่านั้น
 เนื่องจากทุกส่วนที่เกี่ยวข้องกับเรื่องนี้อยู่ร่วมกันในเม้าต์พอยต์ “/” 
ทั้งสิ้น เรียกว่า One Problem One Solution จริงๆ 
(ไม่เช่นนั้นคงไม่เรียกว่า “จุดตาย” จริงไหมครับ)
จุดตายที่ 7 ร่างกาย..ขาดรุ่งริ่ง
โครงสร้างของทุกสรรพสิ่งในโลกของเรา เกิดจากส่วนประกอบย่อยๆ 
นำมาประกอบเข้าด้วยกัน การที่ระบบปฏิบัติการจะรวมกันและทำงานได้นั้น 
จำเป็นต้องมี “ข้อต่อ” ที่ช่วยยึดส่วนต่างๆ เช่นเดียวกัน 
ศูนย์กลางของการเชื่อมโยงดิสก์พาร์ทิชั่นทั้งหลายของระบบปฏิบัติการลีนุกซ์ 
ก็คือ “จุดตาย” ที่จะกล่าวถึง ในที่นี้ก็คือไฟล์ /etc/fstab ซึ่งเป็น 
“ผู้ให้ข้อมูล” 
เกี่ยวกับการเชื่อมโยงดิสก์พาร์ทิชั่นทั้งหมดของระบบปฏิบัติการลีนุกซ์เข้า
ด้วยกัน ทั้งระบบไฟล์ที่เชื่อมโยง (mount) แบบถาวร 
และระบบไฟล์ของอุปกรณ์ประเภทถอดเปลี่ยนได้ (Removable Data Storage) 
ไฟล์ /etc/fstab เป็นไฟล์ข้อความธรรมดา จึงมีปัญหาที่คล้ายกับ 
“จุดตาย” อื่นๆ ที่ได้กล่าวมาแล้ว มันถูกเปลี่ยนแปลงข้อความภายในได้ง่าย 
สิ่งที่อยู่ภายในมีความสำคัญต่อการเชื่อมโยงระบบไฟล์ทั้งหมดเข้าด้วยกัน 
แล้วจะมีอะไรที่ “เสี่ยง” มากไปกว่านี้อีก
ในเบื้องลึกไฟล์ /etc/fstab ไม่ได้ทำงานอย่างเอกเทศ 
แต่มันยังมีส่วนประกอบอื่นๆ ที่ “ยากต่อการป้องกัน” อีกด้วย 
ตั้งแต่โปรแกรมคำสั่ง /bin/mount ซึ่งทำหน้าที่ในการเชื่อมโยงระบบไฟล์ต่างๆ
 เข้าด้วยกัน โดยอ้างอิงข้อมูลจาก /etc/fstab อีกที 
แถมโบนัสความเสี่ยงด้วยการที่มีการกำหนดสิทธิแบบพิเศษเป็น SUID อีกต่างหาก 
ซึ่งทำให้ผู้ที่รันโปรแกรม mount นี้จะมีสิทธิ์สูงเทียบเท่า root 
เลยทีเดียว ลองคิดดูสิครับว่าอะไรจะเกิดขึ้นถ้าไฟล์ mount นี้ถูกสวมรอยโดย 
Rootkits ...???
นอกจากนี้ในกระบวนการ mount อันเป็นสิ่งปรกติในระบบปฏิบัติการลีนุกซ์ 
ยังมีส่วนประกอบที่คุณไม่สามารถ “ป้องกันการเขียน” (Write Protect) 
ได้อีกด้วย นั่นคือไฟล์ /etc/mtab 
ซึ่งคล้ายกับกระดาษทดที่ใช้ตลอดเวลาที่มีการ mount เกิดขึ้น 
ถ้าไฟล์นี้เสียหายหรือเปลี่ยนแปลงไประบบย่อมเพี้ยนไปอย่างแน่นอน
จุดตายที่ 8 แหล่งกบดาน..ของวายร้าย
ถ้าสิ่งที่กล่าวมานี้เป็นฝันร้ายแล้วล่ะก็... 
คุณคงจะต้องนิยามความหมายของคำว่าฝันร้ายใหม่ซะแล้ว เพราะ “จุดตาย” 
ที่จะชึ้ให้เห็นต่อไปนี้เป็นเสมือนแหล่งซ่อนตัวหรือกบดานของเหล่าวายร้ายที่
จะแฝงเข้ามาอาศัยในเซิร์ฟเวอร์ของเรา 
แล้วจากนั้นจะใช้เครื่องของเราเป็นฐานในการโจมตีผ่านเครือข่ายไปยังโฮสต์
อื่นๆ ต่อไป ซึ่งพฤติกรรมเช่นนี้จะคุ้นเคยกันในชื่อต่างๆ เช่น Backdoor 
หรือTrojans นอกจากนี้ยังเป็นช่องทางที่เหล่าวายร้ายจะนำสิ่งที่เรียกว่า 
Shell Code มาฝังไว้ได้ 
โดยจะทยอยส่งโค๊ดเข้ามาทีละเล็กทีละน้อยจนกลายเป็นโปรแกรมใหญ่มากพอที่จะทำ
งานได้ตามที่ต้องการ
แน่นอนว่าพื้นที่เหล่านี้จะต้องมีช่องโหว่มากพอที่ใครก็ตามสามารถ 
“เขียน” ข้อมูลลงไปได้ คือ มี Permission Mode เป็น w (write) ตามมาด้วย 
Permission Mode เป็น x (Execute) ซึ่งจะทำให้โค๊ดที่ผ่านการ “ประกอบร่าง” 
สำเร็จแล้วสามารถรันได้อีกด้วย
“จุดตายที่ 8” นี้ มีอยู่ทั่วไปในระบบปฏิบัติการลีนุกซ์ 
ที่เห็นได้ชัดเจนว่ามี Permission Mode สูงพอสำหรับการ “เขียน” และการ 
“รัน” ( ค่าของ Permission Mode สูงประมาณ 755 ขึ้นไป) ได้แก่ /tmp 
,/var/tmp และ /dev/shm ทั้งสามจุดนี้มี Permission Mode เป็น drwxrwxrwt 
หรือ 1777 
การป้องกันทำได้โดยแยก mount point ออกไปจาก mount point “/” กำหนด 
option ของการเม้าต์ไม่อนุญาตให้สามารถรันโปรแกรมได้ และใช้โปรแกรมประเภท 
Local IDS ต่างๆ มาช่วยในการเฝ้าระวัง 
(ถึงแม้จะได้แค่เฝ้าระวังก็ยังดีกว่าไม่รู้ว่าเกิดอะไรขึ้นบ้าง) 
สิ่งสำคัญที่ต้องเตือนให้ทราบไว้ก็คือ กรุณาอย่าคิดว่าจะไปเปลี่ยน 
Permission Mode ของ “จุดตาย” เหล่านี้ให้น้อยลงนะครับ 
เพราะจะส่งผลกระทบต่อระบบและโปรแกรมต่างๆ ทำให้ทำงานผิดปรกติได้ เท่ากับไป 
“วางยา” ตัวเองเสียอีก
จุดตายที่ 9 ไม่ขาด..แต่เกินก็มีปัญหาได้
เป็นที่เข้าใจกันดีอยู่แล้วว่า ถ้าส่วนประกอบของระบบสูญหายไป 
ย่อมทำให้ระบบทำงานไม่ได้หรือเกิดความผิดปรกติขึ้น เช่น 
ไฟล์คอนฟิกสำคัญหายไป หรือข้อความภายในผิดเพี้ยนไป เป็นต้น แต่ในทางกลับกัน
 ถ้ามีไฟล์แปลกปลอมหลงเข้าไปในระบบบ้างล่ะ จะเกิดปัญหาได้หรือไม่
“จุดตายที่ 9” นี้ เป็น พื้นที่ไดเร็คทอรี่ที่มีความอ่อนไหวเป็นพิเศษ 
ส่วนใหญ่แล้วจะเป็นพื้นที่เก็บคอนฟิกไฟล์ของโปรแกรมต่างๆ 
ทั้งส่วนที่เกี่ยวข้องกับตัวระบบปฏิบัติการมากๆ 
ไปจนถึงส่วนเฉพาะโปรแกรมบริการบางโปรแกรม ที่มีข้อจำกัดในด้านการทำงานมากๆ 
ถ้ามีไฟล์ “ส่วนเกิน” หลงเข้าไปแล้วล่ะก็จะไม่สามารถทำงานต่อไปได้ 
ความเปราะบางเช่นนี้พิจารณาดูดีๆ แล้ว น่าจะจัดว่าเป็น “ข้อบกพร่อง” (Bug) 
ของโปรแกรมก็คงไม่ผิด
ยกตัวอย่างเช่น พื้นที่ /etc/xinetd.d/ 
ที่ไดเร็คทอรี่นี้จะเป็นที่เก็บไฟล์คอนฟิกย่อยๆ ของ Xinetd ซึ่งเป็น Super 
Server ที่ให้บริการด้านระบบเครือข่ายต่างๆ 
เนื่องจากรูปแบบของไฟล์คอนฟิกย่อยๆ เหล่านี้จะต้องมีไวยกรณ์ต่างๆ 
ตรงตามกำหนดไว้เท่านั้น ผิดเพี้ยนแม้แต่น้อยก็จะทำให้ Super Server 
หรือลูกพี่ใหญ่เริ่มต้นทำงานไม่ได้เลย 
ดังนั้นหากมีไฟล์อะไรก็ตามหลงเข้ามาปะปนในพื้นที่นี้ 
การแปลความหมายก็จะเข้าใจว่าเป็นไวยกรณ์ที่ผิดปรกติ 
และส่งผลให้ไม่สามารถทำงานต่อไปได้ในที่สุด 
บริการเซิร์ฟเวอร์ทั้งหลายภายใต้ Xinetd 
ก็พลอยได้รับผลกระทบตามไปด้วยนั่นเอง
กรณีปัญหาที่เกิดจากไฟล์ “ขาดหาย” ไม่ครบตามปรกติคงเป็นปัญหาที่แสนธรรมดามากเมื่อเทียบกับปัญหาที่มีไฟล์ “เกิน” เข้ามาในระบบเช่นนี้
จุดตายที่ 10 ยังไม่ถึงตาย...แค่หายใจติดขัด
ปัญหาบางลักษณะที่เกิดขึ้นกับเซิร์ฟเวอร์ลีนุกซ์ของเรา 
บางครั้งจะไม่ถึงขนาดที่รุนแรงนัก เพียงแต่สร้างความไม่ปรกติให้เห็นได้ 
หรือส่งผลกระทบกับบางเรื่องเท่านั้น 
แต่ถ้าไม่เตรียมการป้องกันไว้ก็จะเกิดปัญหาขึ้นบ่อยๆ 
หรือหากเกิดปัญหาขึ้นก็จำเป็นต้องเร่งแก้ไขอยู่ดี 
ดังนั้นหากจะนับรวมเป็นอีกหนึ่ง “จุดตาย” ก็คงไม่ผิดกติกา
ตัวอย่างของอาการปัญหาประเภทนี้ ได้แก่ ปัญหาเนื้อที่ดิสก์เต็ม (Disk 
Full) ในบางจุด โดยเฉพาะที่พบบ่อยมากๆ คือ พื้นที่ /tmp และ /var 
เนื่องจากโปรแกรมบางตัวไม่มีระบบป้องกันตัวเองเมื่อพื้นที่จัดเก็บข้อมูล
เกิดความขัดข้อง ทำให้ไม่สามารถบันทึกหรือเขียนข้อมูลได้ เช่น 
โปรแกรมประเภทเว็บที่เขียนด้วยภาษา PHP หรือโปรแกรมในกลุ่มฐานข้อมูล 
อาจจะออกแบบให้พักข้อมูลที่ /tmp 
เมื่อใดก็ตามที่พื้นที่นี้เต็มหรือไม่สามารถเขียนข้อมูลลงไปได้ 
ก็จะมีอาการผิดปรกติขึ้นทันที และเป็นเช่นนั้นไปจนกว่าจะได้รับการแก้ไข
ปัญหาทำนองเดียวกันนี้จะพบได้ในเรื่องของการจัดเก็บบันทึกไฟล์สถานะ
หรือ Log ต่างๆ อีกด้วย เช่น พื้นที่ /var/log 
เกิดอาการเต็มขึ้นมาระบบจะไม่สามารถบันทึก log ต่อไปได้ 
อาจมีผลทำให้โปรแกรมต่างๆ หยุดทำงานได้เช่นกัน
หนทางป้องกันก็คือ 
ควรตรวจดูว่าแต่ละโปรแกรมที่เราใช้งานนั้นมีการพักข้อมูลที่ใดบ้าง 
ควรจัดสรรให้มีเนื้อที่เพียงพอต่อการทำงานของระบบและโปรแกรมต่างๆ ทั้งหมด 
บางโปรแกรมจะสามารถกำหนดค่าในคอนฟิกได้ว่าจะย้ายไปใช้พื้นที่อื่นๆ หรือไม่ 
ซึ่งมีประโยชน์มากเมื่อต้องการเปลี่ยนแปลงในภายหลัง 
หรือขยับมิให้โปรแกรมหลายๆ โปรแกรมมาใช้พื้นที่เดียวกันมากจนเกินไป 
และสมควรเป็นอย่างยิ่งที่จะนำโปรแกรมที่ช่วยบริหารจัดการดิสก์ 
ระบบจัดการเกี่ยวกับบันทึก Log File ได้แก่ Log watch ,Log Rotate และ 
SysLOG มาช่วยจัดการก็จะลดภาระผู้ดูแลระบบไปได้มาก
ถึงเวลา..สำรวจจุดตาย
ผู้เขียนได้ชี้ “จุดตาย” ในระบบปฏิบัติการลีนุกซ์ให้ได้ทราบกันแล้วถึง
 10 จุด พร้อมเสนอแนะแนวทางการป้องกัน ตลอดจนเครื่องมือที่เกี่ยวข้อง 
ในทางปฏิบัติแล้วผู้ดูแลระบบควรตั้งอยู่บนความไม่ประมาท ควรศึกษาหาความรู้ 
และมีกำหนดการที่จะตรวจตราดูสภาพการทำงานของระบบทั้งหมดอย่างสม่ำเสมอ 
อย่าปล่อยให้เซิร์ฟเวอร์ลีนุกซ์ของเราต้องตกอยู่ในสภาพ “เฉียดตาย” 
แล้วจึงจะหาทางแก้ปัญหา เพราะเมื่อถึงเวลานั้นมันอาจจะสายเกินไปแล้วก็ได้
 
 
 
 
 
 
  
 
 
 
 
 
 
 
 
 
 
 
ไม่มีความคิดเห็น:
แสดงความคิดเห็น