สารพัน UNIX ตอน SA กับการรักษาความปลอดภัยข้อมูล

ระบบคอมพิวเตอร์ที่ให้บริการแก่ผู้ใช้งานหลาย ๆ คนพร้อมกัน เช่น ยูนิกซ์ หรือระบบใดก็ตาม ถ้าปล่อยให้ผู้ใช้งานภายในระบบทุกคนสามารถจัดการกับระบบได้ตามใจชอบของแต่ละคนแล้ว ความยุ่งยากและปัญหาต่าง ๆ ย่อมตามมาไม่หยุดหย่อนเป็นแน่ ดังนั้นในระบบดังกล่าวจึงต้องมีกรรมวิธีการป้องกันปัญหาที่จะเกิดขึ้นนี้ ระบบยูนิกซ์ได้มีการกำหนดสิทธิต่าง ๆ ในการดำเนินการของผู้ใช้ทุกคนในระบบให้เป็นไปตามความเหมาะสม โดยแบ่งระดับความสำคัญของผู้ใช้งานเป็น 2 หรือหลายระดับ ก็แล้วแต่ระบบซึ่งก็มีข้อได้เปรียบและเสียเปรียบแตกต่างกันไป และกำหนดให้ SA ซึ่งมีชื่อเต็ม ๆ ว่า System Administrator ที่หลาย ๆ คนเรียกว่า root หรือ superuser เป็นผู้ที่มีสิทธิพิเศษสามารถดำเนินการจัดการระบบได้สูงสุดให้คอยควบคุมดูแลให้ระบบทำงานอย่างเป็นระเบียบและมีความคล่องตัว

บริการคืองานของ SA

ตามความหมายโดยตรงชื่อของ SA ก็บอกอยู่แล้วว่าเป็นผู้บริหารระบบ ดังนั้นลักษณะหน้าที่หลัก ๆ ของ SA ก็คือการจัดการบริหารให้ระบบสามารถสนองความต้องการของผู้ใช้ได้มากที่สุดเท่าที่เป็นไปได้ โดยลักษณะของงานสามารถแบ่งออกเป็นลักษณะใหญ่ ๆ ได้ดังนี้
- เกี่ยวกับผู้ใช้งานภายในระบบ ผู้ใช้งานทุกคนในระบบจะสามารถเข้าใช้งานระบบได้ จะต้องได้รับความเห็นชอบหรือผ่านการพิจารณาของ SA เสียก่อนว่าสมควรหรือไม่ ดังนั้นหน้าที่หลักอย่างหนึ่งของ SA ก็คือ การกำหนดชื่อและรหัสผ่านเริ่มต้นให้กับผู้ใช้ใหม่ พร้อมทั้งกำหนดความสามารถในการใช้ทรัพยากรต่าง ๆ ของผู้ใช้ด้วย ในทางตรงข้ามกันก็ต้องลบหรือปลดผู้ใช้ออกจากระบบ อีกทั้งจะต้องให้คำปรึกษาและไขข้อข้องใจของผู้ใช้งานด้วย
- การติดตั้งซอฟต์แวร์และฮาร์ดแวร์เข้าสู่ระบบ จุดเด่นของโอเอสแบบมัลติทาสกิง คือการนำทรัพยากรต่าง ๆ ที่มีอยู่มาใช้ร่วมกัน และทรัพยากรที่จะใช้นั้นจะแปรผันกับจำนวนผู้ใช้งาน และความแตกต่างของลักษณะงานนั้น ๆ ด้วย การติดตั้งทรัพยากรต่าง ๆ จึงเป็นสิ่งที่หลีกเลี่ยงไม่ได้เช่นกัน SA จะต้องเป็นผู้ติดตั้งหรือควบคุมการติดตั้งอีกที ไม่ว่าจะเป็นซอฟต์แวร์ใหม่ หรือส่วนฮาร์ดแวร์ที่เพิ่มเติมจากเดิ
- การสำรองข้อมูล เป็นการเก็บข้อมูลสำรองไว้เพื่อใช้ทดแทนข้อมูลบนระบบ ในกรณีที่ข้อมูลบนระบบเกิดความเสียหายขึ้น การสำรองข้อมูลถ้ามีการทำบ่อยหรือถี่เท่าไร ข้อมูลที่สำรองกับข้อมูลจริงบนระบบก็มีความใกล้เคียงกันมากกว่านั้น แต่ในการสำรองข้อมูลนั้นจะสูญเสียประสิทธิภาพของระบบไปส่วนหนึ่ง และต้องใช้เวลาพอสมควรจึงเป็นหน้าที่ของ SA ในการตัดสินใจว่าจะมีการสำรองข้อมูลใหม่ให้มีความถี่เท่าไหร่ และกระทำในช่วงเวลาไหน แล้วต้องสำรองไฟล์อะไรบ้าง
- วิเคราะห์และแก้ปัญหาต่าง ๆ ที่เกิดขึ้นภายในระบบทั้งซอฟต์แวร์ และฮาร์ดแวร์
- ดูแลรักษาความปลอดภัยของข้อมูลและระบบ ซึ่งจะกล่าวถึงรายละเอียดต่อไป

ใครบ้างสมควรเป็น SA

เมื่อมองถึงระดับความสำคัญแล้วจะเห็นได้ว่า SA เป็นผู้ที่มีความสำคัญสูงสุดเลยทีเดียว เพราะผู้เป็น SA นั้นจะสามารถดำเนินการได้ทุกอย่างในระบบได้ตามใจชอบ ดังนั้นการเลือกสรรผู้ใดมารับบทบาทของ SA นั้นจะต้องมีความพิถีพิถันเป็นพิเศษ โดยทั่ว ๆ ไปแล้วลักษณะเด่น ๆ ของผู้ที่จะมาเป็น SA ก็คือ
1. เป็นผู้ที่มีความรู้ความเข้าใจถึงการทำงานของระบบ ไม่ว่าจะเป็นส่วนของโอเอสเอง, ซอฟต์แวร์, ฮาร์ดแวร์ และต้องสามารถวิเคราะห์พร้อมกับแก้ปัญหาที่เกิดขึ้น
2. มีความรอบคอบละเอียดอ่อน เพราะหาก SA กระทำสิ่งใดก็ตามผิดพลาดบางครั้งจะมีผลต่อระบบโดยรวม
3. เป็นผู้ที่มีความรับผิดชอบสูง และเป็นผู้เก็บความลับได้ดี
4. เป็นผู้ที่มีคุณธรรมประจำใจ SA สามารถเข้าไปมีส่วนรับรู้และแก้ไขเปลี่ยนแปลงข้อมูลทุกอย่างในระบบได้ไม่ว่าข้อมูลนั้นจะเป็นของใครก็ตาม ดังนั้นคุณธรรมจึงเป็นสิ่งสำคัญที่ SA ทุกคนต้องมี (SA ต้องเป็นคนดีครับ)
5. เป็นบุคคลที่มีคุณสมบัติตามข้อ 1-4

ความปลอดภัยข้อมูล

ทุกคนต้องการความเป็นส่วนตัวในการทำงาน หลายสิ่งหลายอย่างเป็นความลับไม่อยากให้คนอื่นรับรู้ เมื่อยูนิกซ์เป็นโอเอสแบบหลายผู้ใช้ ถ้าผู้หนึ่งผู้ใดสามารถเข้าไปก้าวก่ายในการทำงานของผู้อื่นแล้วย่อมไม่ดีแน่ หรือการกระทำของบุคคลใดบุคคลหนึ่งแล้วส่งผลกระทบถึงผู้อื่นก็ไม่ดีเช่นกัน ดังนั้นโอเอสประเภทหลายผู้ใช้ต้องออกแบบ และมีมาตรการในการรักษาความปลอดภัยข้อมูลในระบบด้วย

รักษาความปลอดภัยข้อมูลเพื่ออะไร

สุดยอดแห่งการรักษาความปลอดภัยข้อมูลในระบบคอมพิวเตอร์ใด ๆ ก็ตาม คือสามารถรักษาคุณสมบัติหลัก ๆ ได้ดังนี้ ก็นับได้ว่าการรักษาความปลอดภัยข้อมูลนั้นประสบความสำเร็จแล้ว
1. รักษาความลับ (Security) ซึ่งรวมถึงทุกสิ่งทุกอย่างในระบบ เช่นอุปกรณ์ต่าง ๆ หรือบรรดาแฟ้มข้อมูลจะสามารถเข้าถึงได้เฉพาะบุคคลที่ได้รับสิทธิเท่านั้น
2. รักษาความปลอดภัยเป็นหนึ่งเดียว (Integrity) ข้อมูลต่าง ๆ จะมีการแก้ไขหรือเปลี่ยนแปลงได้เพียงบุคคลที่ได้รับสิทธิเท่านั้น ผู้อื่นจะทำการเปลี่ยนแปลงไม่ได้
3. รักษาความสมดุล (Avilability) ข้อมูลและอุปกรณ์ต่าง ๆ ภายในระบบจะต้องเข้าถึงได้เสมอ เมื่อต้องการใช้ โดยมีเงื่อนไขว่าผู้ใช้จะต้องเป็นผู้มีสิทธิในอุปกรณ์หรือข้อมูลต่าง ๆ นั้น

สิ่งที่ต้องคำนึง

การออกแบบรักษาความปลอดภัยข้อมูลเป็นสิ่งที่ยากมาก เพราะหากมีการควบคุมอย่างจุกจิก หยุมหยิม ยุ่งยาก จนก่อความวุ่นวายแล้ว การทำงานจะต้องใช้ความระมัดระวังอย่างมาก คงจะลำบากใจก็พอดูทีเดียว ระบบการรักษาความปลอดภัยข้อมูลที่ดี นอกจากจะต้องคำนึงถึงหลักการต่าง ๆ แล้วสิ่งที่จะมองข้ามไม่ได้คือ ความรู้สึกของผู้ใช้งานระบบโดยหลักง่าย ๆ คือ
1. ระบบรักษาความปลอดภัยต้องง่ายและตรงไปตรงมา
2. ให้สิทธิกับผู้ใช้น้อยที่สุดเท่าที่จะทำงานได้
3. ทำการตรวจสอบระบบอย่างรอบคอบในการเข้าถึงหรือการทำงานทุกอย่าง
4. กำหนดสิทธิแบบเจาะจงว่ามีสิทธิใดบ้างในข้อมูลและอุปกรณ์ต่าง ๆ
5. กลไกการรักษาความปลอดภัยต้องใช้ง่าย เพราะหากยุ่งากแล้วผู้ใช้ส่วนใหญ่จะละเลยเสีย

ใครบ้างจะทำลายข้อมูล

ก่อนที่จะกล่าวถึงหลักการป้องกันและการรักษาความปลอดภัยข้อมูล มาดูซิว่าบุคคลกลุ่มใดบ้างที่จะก่อให้เกิดความเสียหายกับระบบบ้าง ซึ่งบุคคลบางกลุ่มนี้ หลายต่อลหายคนอาจจะมองข้ามไปก็ได้

ผู้ใช้งานภายในระบบเองแต่มีความรู้ไม่เพียงพอ

บุคคลในกลุ่มนี้จัดว่าอันตรายมาก และส่วนใหญ่จะนึกไม่ถึง อันตรายที่จะเกิดจากกลุ่มนี้ส่วนใหญ่เป็นการกระทำที่ไม่มีเจตนาร้าย แต่จะเกิดจากการใช้คำสั่งโดยรู้เท่าไม่ถึงการณ์ เช่น ใช้คำสั่ง rm ลบไฟล์สำคัญ ๆ ไป

พวกสอดรู้สอดเห็นหรืออยากลองวิชา (Hacker)

บุคคลกลุ่มนี้ส่วนใหญ่จะเป็นนักคอมพิวเตอร์ที่มีความสามารถ (แต่บางคนขาดสามัญสำนึกที่ดี) ชอบชอนไชเจาะระบบที่มีการรักษาความปลอดภัย โดยส่วนใหญ่แล้วบุคคลกลุ่มนี้เมื่อสามารถเจาะเข้าระบบได้แล้วก็จะเพียงประกาศจุดอ่อนของระบบให้ผู้ดูแลระบบนั้นทราบ หรือไม่ก็อาจจะนำโปรแกรมที่สามารถทำให้ประสิทธิภาพโดยรวมของระบบลดลง เช่น โปรแกรมลักษณะลูป เพื่อแกล้งระบบเล่นซะในช่วงเวลาหนึ่ง แต่ก็มีไม่น้อยที่เข้าไปแล้วทำลายข้อมูล บุคคลกลุ่มนี้การป้องกันจะทำได้ยากกว่ากลุ่มอื่น

พวกสอดแนมล้วงความลับข้อมูล

พวกนี้จะมีเจตนาร้ายโดยจะล้วงความลับข้อมูล โดยเฉพาะอย่างยิ่งข้อมูลทางธุรกิจ ซึ่งถือว่าเป็นความลับสุดยอดของแต่ละบริษัท

ผู้ใช้ที่ต้องการทำลายเอง

มีจำนวนไม่น้อยที่ปัญหาเกี่ยวกับการรักษาความปลอดภัยข้อมูลเกิดจากผู้ใช้ภายในระบบเองที่อาจจะไม่พอใจอะไรบางอย่าง เช่น ไม่พอใจความยุ่งยากของมาตรการต่าง ๆ เลยหาทางออกระบายออกโดยการทำลายระบบรักษาความปลอดภัยของข้อมูลซะเอง

มีวิธีเข้าทำลายข้อมูลอย่างไร

ในที่นี้ผมคงจะไม่ชี้ลงไปถึงจุดอ่อนของระบบว่าส่วนไหน หรือไฟล์ไหนที่เป็นจุดอ่อนที่สามารถเจาะเข้าไปได้นะครับ เพราะคิดว่าคงไม่เหมาะเท่าไหร่ แต่สิ่งที่จะกล่าวคือกลวิธีพื้นฐานที่ทำกัน เพื่อจะได้ระมัดระวังยิ่งขึ้น
1. แอบดูรหัสผ่านขณะพิมพ์ ซึ่งส่วนใหญ่จะเป็นบุคคลที่รู้จักกัน
2. ใช้เครื่องมือวัดที่เรียกว่า เครื่องวิเคราะห์โปรโตคอล (Protocal Analyzer) ไปดักจับทางสายสื่อ
3. ม้าโทรจัน (Trojan horse) เป็นการเขียนโปรแกรมหรือสคริปต์ โดยจะทำการสร้างจอภาพให้เหมือนกับจอภาพตอนเริ่ม (login) เข้าสู่ระบบทุกประการ โดยโปรแกรมหรือสคริปต์นั้น จะรอให้ผู้ใช้ที่ไม่ระวังพิมพ์ชื่อและรหัสผ่านเข้าสู่โปรแกรมแล้วทำการส่งผ่านชื่อและรหัสผ่านของผู้ใช้ไปยังตัวเอง หรืออาจจะเก็บในชื่อไฟล์ใดไฟล์หนึ่งก็ได้ ซึ่งไม่เป็นที่สะดุดตา หลังจากนั้นโปรแกรมก็จะเรียกเชลล์ของ login แท้จริงออกมา ดังตัวอย่างที่ 1 เป็นการสร้าง SU ปลอมขึ้นมา
การทำงานของสคริปต์หรือโปรแกรมนี้เกิดขึ้นเนื่องจากลำดับการค้นหาในไดเรคทอรี โดยได้กำหนดการค้นหาที่ไดเรคทอรีตัวเองก่อน ไดเรคทอรีของระบบ เช่น กำหนด PATH เป็น :/bin:/usr/bin แทนที่จะเป็น /bin:/usr/bin:: ในส่วนนี้สามารถกำหนดค่าขึ้นใหม่เองได้โดยจะนำไปเก็บไว้ที่ .profile
4. ประตูกล (trap door) เป็นการเขียนโปรแกรมเล็ก ๆ ขึ้นมาทิ้งไว้ โดยโปรแกรมนี้จะอาศัยหลักการอยู่ที่การเปลี่ยนค่าบิต setuid เมื่อไหร่ที่บิตนี้ทำงานโปรแกรมจะทำการเปลี่ยนค่าได้ user id เป็น 0 (คือ root) ชั่วคราว แล้วหากเขียนโปรแกรมที่สามารถสร้างเชลล์ขึ้นมาใหม่ในขณะนั้นได้ก็จะมีสิทธิเท่าเทียม กับ root ทีเดียว

จะควบคุมและดูแลอย่างไร

การควบคุมและดูแลรักษาความปลอดภัยข้อมูลนั้นจะต้องทำได้ภายนอกและภายในระบบควบคู่กัน
- การควบคุมภายนอกระบบ (Physical Security) เป็นการป้องกันทางกายภาพ โดยไม่ให้ผู้ที่จะมาทำลายข้อมูลกระทำการได้ อาจจะทำได้ เช่น
1. ระมัดระวังบุคคลแปลกปลอมที่จะเข้ามาใช้งานระบบ โดยอาจจะมีการจัดเวรยามคอยดูแล
2. ทำการล็อกอุปกรณ์ที่ใช้งานในระบบ
3. เก็บข้อมูลที่มีความสำคัญลงเทปหรือดิสค์แล้วลบข้อมูลในระบบออก
- การควบคุมภายในระบบ (Logical Security) เป็นการป้องกันภายในตัวระบบเอง โดยจะแบ่งได้เป็น 2 ประการหลัก ๆ คือ
1. ป้องกันเกี่ยวกับการตรวจสอบผู้ใช้
2. ป้องกันเกี่ยวกับระบบไฟล์

การป้องกันเกี่ยวกับผู้ใช้

ในระบบยูนิกซ์ผู้ใช้ทุกคนจะมีชื่อรหัสผ่านและชื่อกลุ่ม โดยการเริ่มต้นเข้าทำงานในระบบจะมีการตรวจสอบชื่อและรหัสผ่านว่าถูกต้องหรือไม่ และจะให้เข้าสู่ระบบได้ในกรณีที่ชื่อและรหัสผ่านตรงกับข้อมูลที่มีอยู่ในระบบ
รหัสผ่านถือว่าเป็นด่านแรกที่มีความสำคัญมากในการเข้าสู่ระบบ ดังนั้นส่วนของไฟล์เก็บข้อมูลผู้ใช้และรหัสผ่านจึงแยกเป็น 2 ไฟล์ โดยไฟล์หนึ่งจะเก็บรหัสแล้วทำการซ่อนไว้พร้อมกำหนดค่าให้ผู้ดูแลระบบเท่านั้นจะอ่านค่าได้ และอีกไฟล์หนึ่งคือ /etc/passwd ซึ่งจะไม่แสดงรหัสผ่านหรืออาจจะแสดงรหัสผ่านแต่ได้เข้ารหัสไว้แล้ว ซึ่งให้ทุกคนสามารถอ่านได้

ทำอย่างไรกับรหัสผ่านดี

1. เก็บรักษารหัสผ่านเป็นความลับ
2. ตั้งรหัสผ่านให้มีทั้งพยัญชนะ ตัวเลข และสัญลักษณ์พิเศษ โดยเป็นรูปแบบของอักขระที่ไม่มีความหมาย เพราะส่วนใหญ่ผู้ใช้จะนำชื่อเล่น ชื่อแฟน เบอร์โทรศัพท์ ชื่อดารา ชื่อตัวละครในนวนิยายมาใช้ ซึ่งทำให้การเดาของบรรดาผู้ต้องการล้วงความลับทำได้ง่า
3. หมั่นเปลี่ยนรหัสผ่าน โดยส่วนนี้ทางผู้ดูแลระบบสามารถกำหนดระยะเวลาที่ผู้ใช้จะต้องทำการเปลี่ยนรหัสผ่านได้ การเปลี่ยนรหัสผ่านใช้คำสั่ง passwd ดังรูปที่ 2

การป้องกันเกี่ยวกับระบบไฟล์

ลักษณะไฟล์ในระบบยูนิกซ์มีลักษณะพิเศษ คือ มีส่วนควบคุมการใช้ไฟล์ โดยมีส่วนกำหนดสิทธิต่าง ๆ ไว้กับไฟล์แต่ละไฟล์เลยทีเดียว ซึ่งส่วนนี้จะเป็นที่ตัดสินว่าใครบ้างจะสามารถใช้ไฟล์ได้ และมากน้อยเพียงใด โดยสิทธิเกี่ยวกับไฟล์จะเป็นการอ่าน เขียนและรัน โดยมีการแบ่งกลุ่มผู้ใช้งานออกเป็น 3 กลุ่ม คือ เจ้าของ (owner) กลุ่มเจ้าของ (group) และผู้ใช้อื่น ๆ (other) นอกจากนี้แล้วในยูนิกซ์บางระบบยังสามารถให้ผู้ใช้ใส่รหัสให้กับไฟล์ได้โดยใช้คำสั่ง crypt (แต่ยูนิกซ์หลายรุ่นที่ใช้นอกประเทศสหรัฐอเมริกาจะไม่พบคำสั่งนี้) แล้วทำการใส่รหัส ซึ่งรหัสนี้จะเป็นส่วนที่ช่วยรักษาความปลอดภัยอีกขึ้นหนึ่งด้วย

สรุป

ผู้ดูแลระบบเป็นบุคคลที่มีหน้าที่ทำให้ระบบทำงานได้อย่างมีประสิทธิภาพให้มากที่สุด และในเรื่องของการดูแลความปลอดภัยข้อมูลก็ถือเป็นสิ่งสำคัญมาก จะต้องมีการวางแผนการดำเนินการที่ดี เพราะหากมาตรการตึงหรือหย่อนเกินไป แล้วย่อมจะก่อให้เกิดความเสียหายแก่ระบบได้ และการรักษาความปลอดภัยที่ดีวิธีหนึ่ง คือการไม่พยายามมีความขัดแย้งหรือปัญหากับผู้ใช้ เพราะส่วนใหญ่ผู้ใช้ระบบมีตั้งแต่ผู้เริ่มต้นไปจนถึงผู้เชี่ยวชาญระบบยิ่งในระบบที่เป็นเครือข่ายยิ่งแล้วใหญ่ หากเกิดปัญหาหรือข้อขัดแย้งเข้าอาจทำให้มีการก่อกวนสร้างปัญหาให้ได้ "สร้างมิตรดีกว่าก่อศัตรูนะครับ" สุภาษิตนี้บรรดาผู้ดูแลระบบควรจำไว้สักนิดนะครับ


เขียนโดย : สมชาย นำประเสริฐชัย
ที่มา : หนังสือไมโครคอมพิวเตอร์ ฉบับเดือนกุมภาพันธ์ 2536
Last update : 17/03/1999