2009-03-03

Linux Security Checklist

กล่าวนำ

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

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

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



--------------------------------------------------------------------------------

1. ก่อนทำการติดตั้งระบบปฏิบัติการ ได้ทำการถอดสาย LAN ออกหรือไม่

คำตอบ : ก่อนทำการติดตั้งระบบปฏิบัติการ ควรถอดสาย LAN ออกก่อนเพื่อป้องกันปัญหา ได้แก่ ไวรัสหรือหนอนเครือข่ายที่แพร่กระจายอยู่ ผู้ไม่ประสงค์ดีที่อาจใช้ความพยายามที่จะเข้าถึงระบบในขณะที่ระบบยังไม่ได้รับการปรับแต่งให้แข็งแกร่งและสมบูรณ์

2. การติดตั้งได้เลือกเฉพาะแพ็กเกจเท่าที่จำเป็นต้องใช้งานหรือไม่

คำตอบ : ให้เลือกติดตั้งแพ็กเกจเฉพาะเท่าที่จำเป็นเนื่องจากการติดตั้งแพ็กเกจอื่นๆ ที่ไม่จำเป็น ได้แก่ โปรแกรมและไลบรารี่ของระบบ X windows โปรแกรมคอมไพเลอร์ที่ไม่มีความจำเป็นต้องใช้ แพ็กเก็จสำหรับบางเซิร์ฟเวอร์ที่ไม่มีความจำเป็น อาจจะทำให้เกิดเป็นช่องโหว่เกิดขึ้นได้ในระบบได้

3. การติดตั้งได้พิจารณาแบ่งพาร์ทิชันให้เหมาะสมต่อการใช้งานหรือไม่

คำตอบ : ให้ทำการแบ่งพาร์ทิชันให้เหมาะสมต่อการใช้งาน ดูรายระเอียดเพิ่มเติมในหัวข้อ Define Partitions จากเว็บ http://thaicert.nectec.or.th/paper/unix_linux/Linux_Installation.php การไม่แบ่งพาร์ทิชันเลยหรือมีเพียงพาร์ทิชันเดียวอาจทำให้พาร์ทิชันนั้นเต็มได้ เช่น โดยการที่ผู้บุกรุกทำการส่งอี-เมล์เข้ามาเป็นจำนวนมากจนทำให้พาร์ทิชันนั้นเต็ม ซึ่งส่งผลให้ระบบไม่สามารถให้บริการได้

4. มีวิธีการเพื่อตรวจสอบรหัสผ่านของ root และผู้ใช้อื่นๆ ในระบบเพื่อให้ยากต่อการเดาหรือไม่ รวมทั้งได้กำหนดให้มีการเปลี่ยนรหัสผ่านอย่างสม่ำเสมอหรือไม่

คำตอบ : ต้องตั้งรหัสผ่านให้ยากต่อการเดา เช่น มีความยาวอย่างน้อย 6 ตัวอักษร ไม่ใช้คำที่มาจากพจนานุกรม ใช้ตัวอักษรที่หลากหลายทั้งตัวพิมพ์ใหญ่ ตัวพิมพ์เล็ก ตัวเลข และสัญลักษณ์ต่างๆ ไม่ใช้ชื่อเฉพาะ ชื่อเพื่อน หรือชื่อสัตว์เลี้ยง รวมทั้งควรเปลี่ยนรหัสผ่านทุกๆ 3 เดือน

5. ได้มีการจัดเตรียมดิสก์เก็ตไว้สำหรับทำการบูตระบบหรือไม่

คำตอบ : เมื่อระบบเกิดปัญหาไม่สามารถบูตได้ จะได้ใช้แผ่นดิสก์เก็ตเพื่อทำการบูตระบบได้

6. ได้มีการใช้รหัสผ่านเพื่อป้องกันบูตโหลดเดอร์หรือไม่

คำตอบ : บูตโหลดเดอร์เป็นโปรแกรมที่ใช้สำหรับทำการบูตเครื่อง ควรทำการตั้งรหัสผ่านเพื่อให้เมื่อเริ่มทำการบูตขึ้นมาจะต้องมีการใส่รหัสผ่านให้ถูกต้องก่อนที่จะดำเนินการบูตต่อไป
ให้ดูการกำหนดรหัสผ่านในหัวข้อ Password protect LILO boots จากเว็บ http://thaicert.nectec.or.th/paper/unix_linux/Linux_Installation.php ให้สังเกตที่บรรทัด password และ restricted หรือ grub ดังนี้

#grub
grub>md5crypt
password ****
$1$ntbLIO$ZlzWu30CZCud0/ydxMQwt1
จากนั้นไปที่ไฟล์ /etc/grub.conf แล้วเพิ่ม
Password --md5 $1$ntbLIO$ZlzWu30CZCud0/ydxMQwt1

7. ได้ทำการตรวจสอบ default user เช่น bin lp mail uucp เป็นต้น หรือเป็น user ที่เกิดจากการติดตั้งเซิร์ฟเวอร์ เช่น www เป็นต้น ให้ไม่สามารถล็อกอินเข้าสู่ระบบแล้วหรือไม่

คำตอบ : ให้ตรวจสอบ default user ต่างๆ ให้ไม่สามารถล็อกอินเข้าสู่ระบบได้ วิธีการคือ
ในไฟล์ /etc/passwd แก้ไขฟิลด์สุดท้ายของ user ที่ต้องการให้เป็น /bin/nologin เช่น


bin:x:1:1:bin:/bin:/sbin/nologin

8. ได้ทำการลบ guest user หรือ user ที่สร้างขึ้นมาเพื่อใช้งานชั่วคราว ซึ่งไม่มีความจำเป็นต้องใช้งานอีกต่อไปแล้วหรือไม่

คำตอบ : ให้ตรวจสอบและลบ user ดังกล่าวจากไฟล์ /etc/passwd ทิ้งไป

9. ได้ทำการตรวจสอบว่าไม่มี user คนใดในระบบที่มี UID เท่ากับ 0 แล้วหรือไม่

คำตอบ : user ที่มี UID เท่ากับ 0 ต้องเป็น root เท่านั้น ให้ใช้คำสั่งดังนี้

#cat /etc/passwd | awk -F: '$3==0 {print $1}'
เพื่อตรวจสอบว่ามี user คนใดในไฟล์ /etc/passwd ที่มี UID เท่ากับ 0 (ยกเว้น root)

10. ได้กำหนดค่าของ umask ไว้อย่างเหมาะสมแล้วหรือไม่

คำตอบ : umask ใช้สำหรับกำหนดเลขฐานแปด เช่น โดยปกติ จะมีค่า 0022 เมื่อนำค่านี้ไป xor กับไฟล์ที่สร้างขึ้นมาใหม่จะได้เป็นสิทธิในการเข้าถึงไฟล์ดังกล่าว ให้กำหนดค่า umask ให้เหมาะสม เช่น ไฟล์โดยปกติเมื่อแรกสร้างขึ้นมาจะมีสิทธิการใช้งานเป็น 0666 หรือ -rw-rw-rw- และเมื่อนำไป xor กับ umask ที่มีค่า 0022 จะได้สิทธิการใช้งานเป็น 0644 หรือ -rw-r--r- ซึ่งหมายถึงว่าเฉพาะเจ้าของเท่านั้นที่สามารถเขียนและอ่านไฟล์นี้ได้ ส่วนผู้อื่นจะสามารถอ่านได้อย่างเดียว หากกำหนดค่า umask ไว้อย่างไม่เหมาะสม ไฟล์ที่สร้างขึ้นมาอาจจะมีสิทธิการใช้งานที่ไม่เหมาะสมได้

11. ได้ทำการอัพเดตโปรแกรมอุดช่องโหว่ (patch) เพื่อปิดช่องโหว่ของระบบอย่างสม่ำเสมอหรือไม่

คำตอบ : ให้ทำการอัพเดตโปรแกรมอุดช่องโหว่อย่างสม่ำเสมอเพื่อปิดช่องโหว่ใหม่ๆ ของระบบ เช่น ในกรณีของลินุกซ์ Red Hat ให้รันโปรแกรม up2date เพื่อตรวจสอบ ดาวน์โหลด และติดตั้งโปรแกรมอุดช่องโหว่ที่จำเป็น ให้ดูรายละเอียดการใช้งานโปรแกรมนี้ที่ http://thaicert.nectec.or.th/paper/unix_linux/up2date.php

12. ได้ทำการค้นหาโปรแกรมหรือไฟล์ที่มี SUID และ SGID อย่างสม่ำเสมอหรือไม่

คำตอบ : โปรแกรมที่มี SUID หรือ SGID หมายถึงโปรแกรมที่เมื่อทำงานสามารถใช้สิทธิของ root เพื่อดำเนินการต่างๆ ได้ ตัวอย่างเช่น โปรแกรม passwd ซึ่งผู้ใช้สามารถใช้เพื่อทำการแก้ไขรหัสผ่านในไฟล์ /etc/passwd และ /etc/shadow (ไฟล์ทั้งสองนี้ สิทธิการเขียนข้อมูลเป็นของ root เท่านั้น ผู้ใช้ทั่วไปไม่สามารถเขียนข้อมูลลงไปที่ไฟล์นี้ได้) โปรแกรมประเภทนี้จึงมีความเสี่ยงต่อการใช้งาน จึงควรที่จะจำกัดทางด้านจำนวนให้ไม่เพิ่มขึ้นหรือเพิ่มเป็นจำนวนน้อยที่สุด ถ้าจำเป็นต้องพัฒนาโปรแกรมเหล่านี้ขึ้นมา ต้องไม่เขียนเป็นเชลล์สคริปต์ และให้ทำการตรวจสอบตัวโปรแกรมโดยละเอียดก่อนที่จะนำไปสู่การใช้งานจริงโดยผู้ใช้
วิธีการค้นหาโปรแกรมเหล่านี้ทำได้โดยใช้คำสั่ง

#find / \( -perm -4000 -o -perm -2000 \) -print

13. ได้ทำการตรวจสอบหรือมีกลไกในการตรวจสอบว่ามีผู้ใช้บางคนที่ไม่ได้กำหนดรหัสผ่านของตนหรือไม่

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

#cat /etc/shadow | awk -F: 'length($2)<1 {print $1}'

14. ได้มีการใช้บริการ syslog ตรวจสอบการปรับแต่งค่าของ syslog รวมทั้งได้ตรวจสอบข้อมูลล็อกของ syslog อย่างสม่ำเสมอหรือไม่

คำตอบ : บริการ syslog เป็นบริการสำคัญที่ใช้บันทึกข้อมูลล็อกซึ่งเป็นสิ่งที่ช่วยบอกได้ว่ามีใครมาทำอะไรกับระบบของเราบ้าง ให้ทำการปรับแต่งค่าพารามิเตอร์ของ syslog ให้เหมาะสมก่อนการใช้งาน ให้ดูการปรับแต่งได้ที่เว็บ http://thaicert.nectec.or.th/paper/unix_linux/linux_syslog.php
สำหรับผู้ดูแลระบบที่สนใจการบันทึกล็อกที่มีขีดความสามารถสูงขึ้น ให้ศึกษา syslog-ng (syslog new generation) ได้จาก http://thaicert.nectec.or.th/paper/unix_linux/syslog-ng.php
รวมทั้งยังมีโปรแกรมเสริมเพื่อช่วยในการบริหารและจัดการข้อมูลล็อก ได้แก่
โปรแกรม swatch ให้ดูรายละเอียดการใช้งานที่ http://thaicert.nectec.or.th/paper/unix_linux/swatch.php

15. ได้ตรวจสอบและปิดการใช้งานบริการเครือข่ายที่ไม่มีความจำเป็นต้องใช้งานหรือไม่ รวมทั้งต้องตรวจสอบอย่างสม่ำเสมอด้วย

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


#netstat -tuan

สำหรับวิธีการปิดบริการเครือข่าย เช่น บนลินุกซ์ Red Hat ให้ดูข้อมูลได้จาก http://thaicert.nectec.or.th/paper/unix_linux/disable_system_services.php

16. ได้จัดทำแบนเนอร์ภายหลังการล็อกอินเพื่อแจ้งเตือนนโยบายการใช้งานระบบ หรือไม่

คำตอบ : แบนเนอร์คือข้อความที่แสดงขึ้นมาภายหลังจากที่ผู้ใช้ได้ทำการล็อกอินสำเร็จแล้ว
ให้จัดทำแบนเนอร์เพื่อแจ้งเตือนให้ผู้ใช้ทราบถึงนโยบายการใช้งานระบบ แบนเนอร์สามารถกำหนดไว้ในไฟล์ /etc/motd ตัวอย่างของแบนเนอร์ ได้แก่
"ระบบที่ใช้งานนี้เป็นระบบที่อนุญาตให้ใช้งานได้เฉพาะผู้ที่มีสิทธิเท่านั้น ห้ามไม่ให้ผู้ไม่มีสิทธิใช้งานระบบนี้อย่างเด็ดขาด การใช้งานระบบนี้จะอยู่ภายใต้เงื่อนไขที่ว่ากิจกรรมการใช้งานทั้งหมดจะได้รับการเฝ้าดูอย่างต่อเนื่อง การใช้งานโดยที่ผู้ใช้ไม่มีสิทธิหรือใช้ผิดวัตถุประสงค์อาจจะถูกฟ้องร้องหรือดำเนินการทางกฎหมาย"
แบนเนอร์ในลักษณะนี้ เมื่อผู้บุกรุกได้เห็น อาจเกิดความรู้สึกเกรงกลัวและออกจากระบบไปโดยที่ไม่ทำให้ระบบได้รับความเสียหาย

17. เมื่อทำการติดตั้งโปรแกรมหรือแพ็กเก็จใหม่ ได้ทำการตรวจสอบว่าเป็นโปรแกรมที่เป็นของแท้ก่อนหรือไม่


คำตอบ : การไม่ตรวจสอบโปรแกรมก่อนอาจเป็นผลให้ได้รับโปรแกรมที่ไม่ใช่เป็นของแท้และอาจแฝงมาด้วยม้าโทรจัน ซึ่งอาจส่งผลข้างเคียงอื่นๆ ได้ การตรวจสอบมีวิธีการที่ทำได้หลายวิธี เช่น ใช้การตรวจสอบผลรวมด้วย md5sum หรือ gpg เพื่อทำการตรวจสอบว่าไฟล์ที่ได้รับของเราตรงกับที่ผู้ผลิตหรือพัฒนาโปรแกรมได้ประกาศไว้หรือไม่ ตัวอย่างเช่น ในเว็บไซต์ของผู้ผลิตโปรแกรม อาจให้ข้อมูลไว้ว่าเมื่อทำการตรวจสอบโปรแกรม xxx.tar.gz ด้วย md5sum จะได้ผลลัพธ์ดังนี้

#md5sum xxx.tar.gz
466c63bb71b710d20a5c353df8c1a19c
หรือตรวจสอบด้วย gpg
#gpg--import KEYS
#gpg --verify xxx.tar.gz.asc
จะมีข้อความบอกให้สังเกตบรรทัดที่มีคำว่า
gpg: Good signature from "Pong Asa " {แสดงว่าไฟล์สมบูรณ์}
หรือ
gpg: BAD signature from "Pong Asa " {แสดงว่าไฟล์ไม่สมบูรณ์}
ดังนั้นผู้ดูแลระบบควรจะได้ตรวจสอบว่าโปรแกรม xxx.tar.gz ที่ตนได้รับเมื่อรันผ่าน md5sum ต้องได้ค่าที่เป็นผลลัพธ์เดียวกันหรือผ่าน gpg จะต้องเป็น Good signature

18. ได้ดำเนินการสร้างความแข็งแกร่งให้กับบริการเครือข่ายต่างๆ เช่น Apache MySQL FTP DNS SMTP หรืออื่นๆ ที่ใช้งานอยู่บนระบบปฏิบัติการนั้นหรือไม่

คำตอบ : การสร้างความแข็งแกร่งให้กับบริการที่ใช้งาน เช่น Apache MySQL FTP DNS SMTP หรืออื่นๆ จะสามารถช่วยลดความเสี่ยงที่ระบบจะถูกบุกรุกได้ เช่น การอุดช่องโหว่ในบริการเหล่านั้น เป็นต้น
การสร้างความแข็งแกร่งให้กับบริการ Apache สามารถดูรายละเอียดได้จาก
http://thaicert.nectec.or.th/paper/unix_linux/apache_chklist.php และ http://thaicert.nectec.or.th/paper/unix_linux/harden_apache.php
สำหรับบริการ MySQL สามารถดูรายละเอียดได้จาก http://thaicert.nectec.or.th/paper/unix_linux/mysql.php
สำหรับบริการ FTP สามารถดูรายละเอียดได้จาก http://thaicert.nectec.or.th/paper/unix_linux/wuftp.php
สำหรับบริการ DNS สามารถดูรายละเอียดได้จาก http://thaicert.nectec.or.th/paper/unix_linux/dns-sec-part1.php
สำหรับบริการ SMTP สามารถดูรายละเอียดได้จาก http://thaicert.nectec.or.th/paper/unix_linux/sendmail.php

19. ในกรณีที่ระบบที่ติดตั้งระบบปฏิบัติการลินุกซ์นี้จำเป็นต้องให้บริการเครือข่าย เช่น Apache SSH หรือ FTP ได้มีการจำกัดการเข้าใช้บริการหรือไม่

คำตอบ : เพื่อลดความเสี่ยงในการบุกรุกระบบ ให้จำกัดการเข้าใช้บริการเครือข่ายโดยอนุญาตให้เฉพาะผู้ที่มีสิทธิหรือไซต์ที่ได้รับอนุญาตเท่านั้นจึงจะสามารถเข้าใช้บริการได้ วิธีการในการจำกัด ได้แก่ การใช้บริการ xinetd (ดูรายละเอียดเพิ่มเติมจาก http://thaicert.nectec.or.th/paper/unix_linux/xinetd.php) หรือใช้ไฟร์วอลล์
เช่น iptables (ดูรายละเอียดเพิ่มที่ http://thaicert.nectec.or.th/paper/firewall/iptables.php)

20. สำหรับระบบที่ต้องการความปลอดภัยสูง ได้อนุญาตให้ root สามารถล็อกอินเข้าใช้งานจากทางไกลหรือไม่

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

21. ได้สร้างความปลอดภัยทางกายภาพให้กับระบบอย่างพอเพียงหรือไม่

คำตอบ : ให้สร้างความปลอดภัยทางกายภาพให้กับระบบอย่างพอเพียง ได้แก่ การควบคุมการเข้าใช้งาน console ของระบบ มีกุญแจสำหรับล็อกเครื่อง อาจมีห้องเพื่อควบคุมการเข้าออก มีระบบสำรองไฟ UPS เป็นต้น ดูแนวทางการป้องกันทางกายภาพเพิ่มเติมจาก http://thaicert.nectec.or.th/paper/basic/physical_security.php

22. ได้กำหนดรหัสผ่านที่ BIOS เพื่อป้องกันไม่ให้ผู้ไม่ประสงค์ดีเข้าไปทำการปรับเปลี่ยนค่าพารามิเตอร์ต่างๆ หรือไม่

คำตอบ : เนื่องจาก BIOS มีความสำคัญต่อโปรแกรมที่ใช้บูตเข้าระบบ ให้กำหนดรหัสผ่านที่ BIOS เพื่อป้องกันการเข้าไปปรับเปลี่ยนค่าต่างๆ โดยผู้ไม่ประสงค์ดีหรือด้วยความไม่ตั้งใจก็ตาม

23. ได้ตรวจสอบการกำหนดสิทธิการใช้งานของไฟล์ระบบที่สำคัญๆ อย่างสม่ำเสมอหรือไม่

คำตอบ : การกำหนดสิทธิการใช้งานของไฟล์สำคัญๆ ในระบบอย่างไม่ถูกต้อง อาจทำให้ผู้ไม่ประสงค์ดีสามารถเขียนทับไฟล์ของระบบ แก้ไขหรือสามารถลบบางไฟล์ทิ้งไปได้ จึงต้องกำหนดสิทธิการใช้งานของไฟล์ให้เหมาะสม ให้ทำการศึกษาเรื่องการกำหนดสิทธิได้จาก http://thaicert.nectec.or.th/paper/unix_linux/file_permission.php


ตัวอย่างการกำหนดสิทธิการใช้งานไฟล์ของระบบให้เหมาะสม ได้แก่

/etc/login.defs มีค่า 600
/etc/cron.d มีค่า 600
/etc/xinetd.conf มีค่า 600
/etc/security มีค่า 600
/etc/services มีค่า 644
/etc/utmp มีค่า 644
/etc/adm/wtmp มีค่า 644
/etc/motd มีค่า 644
/etc/mtab มีค่า 644
/etc/syslog.pid มีค่า 644

24. ได้ใช้ SSH สำหรับการเข้าถึงระบบจากทางไกลหรือไม่ (แทนการใช้งาน telnet rlogin, rsh, ftp, rcp)

คำตอบ : SSH เป็นโปรแกรมสำหรับการเข้าถึงระบบจากทางไกลโดยข้อมูลที่มีการส่งผ่านไปมาระหว่างโปรแกรม (เครื่องลูกข่าย) กับระบบ (เครื่องแม่ข่าย) จะได้รับการเข้ารหัส ซึ่งทำให้เป็นการยากที่ผู้ไม่ประสงค์ดีจะนำข้อมูลเหล่านั้นไปใช้ประโยชน์ได้
ถ้าระบบในปัจจุบันยังใช้งานซอฟต์แวร์ประเภท telnet rlogin rsh ftp rcp ในการเข้าถึงเครือข่ายจากทางไกล ให้เปลี่ยนมาใช้ SSH (http://www.openssh.org) แทน ทั้งนี้เพื่อความปลอดภัยของระบบ (ดูรายละเอียดเพิ่มที่ http://thaicert.nectec.or.th/paper/basic/Secure_Shell.php)


25. ได้ทำการสำรองข้อมูลที่สำคัญๆ อย่างสม่ำเสมอหรือไม่

คำตอบ : ให้ทำการสำรองข้อมูลที่สำคัญๆ อย่างสม่ำเสมอ เพราะเมื่อข้อมูลหลักเกิดความเสียหายจะได้สามารถนำเอาข้อมูลที่สำรองไว้กลับมาใช้งานได้อย่างรวดเร็วและลดการสูญเสียข้อมูลทั้งหมด

26. ได้ติดตามข่าวสารเกี่ยวกับความปลอดภัยของระบบที่ใช้งานอย่างสม่ำเสมอหรือไม่

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

27. ได้เคยใช้ซอฟต์แวร์เพื่อช่วยตรวจสอบและแก้ไขความไม่ปลอดภัยของระบบภายหลังการติดตั้งหรือไม่

คำตอบ : เพื่อเป็นการตรวจสอบระบบอีกครั้งเพื่อความมั่นใจ มีซอฟต์แวร์แพ็กเก็จเป็นจำนวนมาก อาทิ Bastille (ให้ดูรายละเอียดเพิ่มเติมได้ที่ http://thaicert.nectec.or.th/paper/unix_linux/bastille2.php) ซึ่งสามารถช่วยค้นหาจุดต่างๆ ที่อาจเป็นจุดอ่อนหรือควรได้รับการปรับแต่งเพื่อให้มีความปลอดภัยที่ดีขึ้น

28. ได้ตรวจสอบว่าโมดูล PAM (Pluggable Authentication Modules) ซึ่งใช้ในการพิสูจน์ตัวตนก่อนที่จะอนุญาตให้ผู้ใช้เข้าสู่ระบบ ได้ถูกใช้งานโดยบริการที่จำเป็นต้องมีการพิสูจน์ตัวตน เช่น บริการ SSH samba chsh reboot smtp แล้วหรือไม่

คำตอบ : ให้ตรวจสอบว่าบริการที่ใช้งาน เช่น SSH (sshd) ใช้งานโมดูล PAM หรือไม่โดยสามารถตรวจสอบได้ดังนี้

#ldd /user/sbin/sshd
libpam.so.0 => /lib/libpam.so.0 (0x40020000)
libdl.so.2 => /lib/libdl.so.2 (0x40029000)
libresolv.so.2 => /lib/libresolv.so.2 (0x4002c000

ให้สังเกตในบรรทัด libpam.so.0 => /lib/libpam.so.0 (0x40020000) ซึ่งจะเห็นได้ว่าได้มีการใช้งาน PAM กับบริการ SSH แล้ว
รวมทั้งให้ตรวจสอบไฟล์ในไดเร็คทอรี่ /etc/pam.d (หรือ /etc/pam.d สำหรับบางระบบปฏิบัติการ) ว่าถูกเปลี่ยนแปลงแก้ไขหรือไม่ ไฟล์ทั้งหมดในไดเร็คทอรี่นี้โดยปกตินับตั้งแต่ติดตั้งระบบเสร็จเรียบร้อยแล้ว ไม่ควรที่จะถูกเปลี่ยนแปลงแก้ไขใดๆ สำหรับวิธีการตรวจสอบการเปลี่ยนแปลงแก้ไขไฟล์ในระบบ ให้ดูข้อมูลได้จาก http://thaicert.nectec.or.th/paper/ids/tripwire.php

29. ได้ทำการตรวจสอบและแก้ไขไฟล์ /etc/login.defs เพื่อกำหนดนโยบายการล็อกอินเข้าสู่ระบบที่มีความปลอดภัยแล้วหรือไม่ เช่น ต้องมีการเปลี่ยนรหัสผ่านตามระยะเวลาที่เหมะสม ความยาวของรหัสผ่านต้องมีความยาวอย่างน้อยตามที่กำหนดไว้ เป็นต้น

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

PASS_MAX_DAYS 90 #คือการให้เปลี่ยนรหัสผ่านทุกๆ 90 วัน
PASS_MIN_LEN 8 #คือความยาวน้อยที่สุดของรหัสผ่าน

และค่าพารามิเตอร์อื่นๆ ที่ควรได้รับการปรับแต่งให้มีความปลอดภัยที่สูงขึ้น

30. ได้กำหนดสิทธิการใช้งานคำสั่ง su เพื่อแปลงผู้ใช้ที่ไม่ได้เป็น root และใช้คำสั่งนี้ให้กลายเป็น root โดยให้สิทธิเฉพาะผู้ใช้บางกลุ่มในระบบเท่านั้นแล้วหรือไม่

คำตอบ : ให้ตรวจสอบและแก้ไขไฟล์ /etc/pam.d/su สมมติว่าต้องการให้กลุ่ม pong เท่านั้นที่สามารถ su มาเป็น root ได้ ให้แก้ไขดังนี้

auth sufficient /lib/security/pam_rootok.so debug
auth required /lib/security/pam_wheel.so group=pong

31. ได้ตรวจสอบการเปลี่ยนแปลงแก้ไขไฟล์ในระบบที่สำคัญ ๆ อย่างสม่ำเสมอหรือไม่เช่น ไฟล์ที่เป็นไบนารี่ ไฟล์คอนฟิกต่างๆ ไฟล์ที่อยู่ในไลบรารี่ เป็นต้น ซึ่งไม่สมควรถูกเปลี่ยนแปลงแก้ไขเป็นอย่างยิ่ง เว้นไว้แต่ว่าผู้ดูแลระบบเป็นผู้ดำเนินการเอง

คำตอบ : การบุกรุกระบบที่เกิดขึ้นแล้วหลายๆ ครั้ง ผู้บุกรุกมักจะทำการติดตั้งโปรแกรมประเภทประตูลับ (Backdoor) เอาไว้ เพื่อที่จะสามารถหวนคืนกลับเข้ามาสู่ระบบได้อีก การตรวจสอบการเปลี่ยนแปลงแก้ไขไฟล์อย่างสม่ำเสมอโดยผู้ดูแลระบบอาจจะทำให้พบว่า ณ ขณะนี้ไฟล์บางไฟล์ถูกเปลี่ยนแปลงแก้ไขโดยไม่ได้รับอนุญาต ซึ่งอาจหมายถึงว่าได้มีการบุกรุกเกิดขึ้นแล้ว
สำหรับวิธีการตรวจสอบการเปลี่ยนแปลงแก้ไขไฟล์ในระบบ ให้ดูข้อมูลได้จาก http://thaicert.nectec.or.th/paper/ids/tripwire.php


--------------------------------------------------------------------------------

แหล่งข้อมูลอ้างอิง

http://thaicert.nectec.or.th/paper/unix_linux/Linux_Installation.php
http://thaicert.nectec.or.th/paper/unix_linux/up2date.php
http://thaicert.nectec.or.th/paper/unix_linux/linux_syslog.php
http://thaicert.nectec.or.th/paper/unix_linux/syslog-ng.php
http://thaicert.nectec.or.th/paper/unix_linux/swatch.php
http://thaicert.nectec.or.th/paper/unix_linux/disable_system_services.php
http://thaicert.nectec.or.th/paper/unix_linux/apache_chklist.php
http://thaicert.nectec.or.th/paper/unix_linux/harden_apache.php
http://thaicert.nectec.or.th/paper/unix_linux/mysql.php
http://thaicert.nectec.or.th/paper/unix_linux/wuftp.php
http://thaicert.nectec.or.th/paper/unix_linux/dns-sec-part1.php
http://thaicert.nectec.or.th/paper/unix_linux/sendmail.php
http://thaicert.nectec.or.th/paper/unix_linux/xinetd.php
http://thaicert.nectec.or.th/paper/firewall/iptables.php
http://thaicert.nectec.or.th/paper/basic/physical_security.php
http://thaicert.nectec.or.th/paper/unix_linux/file_permission.php
http://thaicert.nectec.or.th/paper/basic/Secure_Shell.php
http://thaicert.nectec.or.th/paper/unix_linux/bastille2.php
http://thaicert.nectec.or.th/paper/unix_linux/disable_system_services.php
http://thaicert.nectec.or.th/paper/ids/tripwire.php

No comments: