ThaiCERT: Thai Computer Emergency Response Team
ศูนย์ประสานงานการรักษาความปลอดภัยคอมพิวเตอร์ ประเทศไทย 
 
 
 



ชื่อเรื่อง : Set System Access Security Poilcies
เรียบเรียงโดย : เลอศักดิ์ ลิ้มวิวัฒน์กุล
เรียบเรียงเมื่อ : 24 กันยายน 2545

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

  1. บัญชีผู้ใช้ที่ไม่มีรหัสผ่าน
  2. บัญชีผู้ใช้ที่มากับระบบจากการติดตั้งระบบใหม่ หรือที่เรียกว่าดีฟอลต์ยูสเซอร์
  3. บัญชีผู้ใช้ที่ใช้ในการทำงานแบบใช้งานครั้งเดียว
  4. บัญชีผู้ใช้ที่มีรหัสผ่านง่ายต่อการคาดเดา

ผู้ดูแลระบบควรจะพิจารณาลบบัญชีผู้ใช้เหล่านี้ออกจากระบบ

มีบันทึกเกี่ยวกับการใช้งานระบบปฎิบัติการในตระกูลยูนิกซ์ที่รายงานถึงปัญหาของบัญชีผู้ใช้เหล่านี้ เช่น

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

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

มีไฟล์ที่เกี่ยวข้องในเรื่องบัญชีผู้ใช้ของลินุกซ์สามไฟล์คือ

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

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

ผู้ดูแลระบบสามารถค้นหาบัญชีผู้ใช้ในระบบที่ไม่มีรหัสผ่านโดยใช้คำสั่งในการค้นหาได้จาก

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

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

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

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

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

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

จากนั้นจึงพิจารณาว่าเข้าข่ายใดต่อไปนี้หรือไม่

ให้พิจารณาดูบัญชีผู้ใช้และกรุ๊ปในระบบทั้งหมด และพิจารณาลบดีฟอลต์ยูสเซอร์ที่ไม่จำเป็นออก

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

who:x:1000:100::/tmp:/usr/bin/who
date:x:1001:100::/tmp:/bin/date
uptime:x:1002:100::/tmp:/usr/bin/uptime

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

login: who

++++++++++++++++++++++++++++++++++++

Test-Bed For RED HAT Hardenning
Enjoy !!

++++++++++++++++++++++++++++++++++++

who pts/1 Jul 16 11:37 (192.168.97.220)
root pts/0 Jul 16 11:31 (192.168.97.220)


login:

หรือ

login: uptime

++++++++++++++++++++++++++++++++++++

Test-Bed For RED HAT Hardenning
Enjoy !!

++++++++++++++++++++++++++++++++++++

11:37am up 7 min, 2 users, load average: 0.28, 0.21, 0.10

login:

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

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

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

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



Home || เอกสารเผยแพร่ || Unix & Linux

ThaiCERT Disclaimer | Copyright © 2001 ThaiCERT(NECTEC). All rights reserved.