Samba
เป็นซอฟต์แวร์ที่ช่วยให้สามารถแชร์ไฟล์และเครื่องพิมพ์บนลินุกซ์ให้กับระบบ
ปฏิบัติการวินโดวส์ 95, 98, 2000, NT รวมทั้ง smbclient อื่น เช่น linux,
unix อื่นๆ ได้ การทำงานของ Samba ประกอบไปด้วยส่วนประกอบหลักๆ ดังนี้
- smbd เป็น daemon ที่ช่วยในการแชร์ไฟล์และเครื่องพิมพ์ให้กับ smbclient ต่างๆ โดยมีไฟล์ configuration ที่สำคัญคือ /etc/samba/smb.conf ซึ่งทำหน้าที่ควบคุมการทำงานของ Smbd
- nmbd รับผิดชอบกระบวนการที่เกี่ยวข้องกับ name resolution และ browsing service ซึ่งเกี่ยวข้องกับ NetBIOS name (รายละเอียดเกี่ยวกับ NetBIOS สามารถอ่านได้ที่ http://thaicert.nectec.or.th/paper/basic/netbios.php)
- smbclient เป็นโปรแกรมที่ทำหน้าที่เชื่อมต่อไปยัง Samba server หรือ Microsoft Windows ที่ได้แชร์ไฟล์ไว้ โดยจะมีลักษณะการใช้งานเหมือนกับคำสั่ง ftp ทั่วไป (interactive program)
- smbmount ใช้สำหรับ mount ไปยัง shared directory
- testparm เป็นโปรแกรมที่ใช้ตรวจสอบ configuration จากไฟล์ /etc/samba/smb.conf ว่าถูกต้องหรือไม่
- smbstatus ใช้สำหรับแสดง status ของ Smbd Server
รูปที่ 1 แสดงรูปแบบทั่วไปในการใช้งาน Samba server
โดยทั่วไปไฟล์ configuration ของ
samba จะถูกเก็บไว้ที่ /etc/samba/smb.conf
ไฟล์นี้จะเป็นตัวควบคุมการทำงานทั้งหมดของ samba ดังนั้นการแก้ไขใดๆ
จึงควรกระทำด้วยความระมัดระวัง
เพราะหากเกิดความผิดพลาดอาจจะทำให้เกิดการรั่วไหลของข้อมูลได้ เช่น
การอนุญาตให้ผู้ใช้สามารถเข้าใช้งานได้โดยไม่ต้องใส่ username และ
password
การแก้ไข configuration ของ samba
นั้นสามารถทำได้ 2 วิธีคือ แก้ไขไฟล์โดยตรงที่ /etc/samba/smb.conf
หรือติดตั้ง SWAT ซึ่งจะช่วยให้สามารถแก้ไข configuration
ผ่านทางเว็บได้ (default port = 901/tcp) ซึ่งหากมีการใช้งาน SWAT
ควรจำกัดการเข้าถึงเฉพาะผู้ดูแลระบบเท่านั้น เช่น
ควบคุมให้เข้าถึงได้เฉพาะจากไอพีที่ระบุไว้ หรือยกเลิกการใช้งาน SWAT
เมื่อเสร็จสิ้นการแก้ไข configuration
หมายเหตุ:
- การแก้ไข configuration จะยังไม่มีผลต่อการทำงานของ samba ในทันที ผู้ดูแลระบบจะต้องเริ่มการทำงานของ samba ใหม่เท่านั้น โดยใช้คำสั่ง /etc/rc.d/init.d/smb restart หรืออาจจะใช้คำสั่ง kill -SIGHUP pid (pid = process number ของ smb)
- การแก้ไข configuration ในส่วนของ global จะมีผลต่อทุกๆ ส่วน (หรือทุกๆ แชร์)
configuration ของ Samba
นั้นมีรายละเอียดค่อนข้างมาก
เอกสารฉบับนี้จะนำเสนอออปชันในส่วนที่เกี่ยวข้องกับความปลอดภัยเท่านั้น
ซึ่งมีรายละเอียดดังต่อไปนี้
1. Authentication Security
เมื่อ Samba แชร์ไฟล์หรือเครื่องพิมพ์ให้แก่ผู้ใช้และไม่อนุญาตให้ guest เข้ามาใช้งาน ผู้ใช้จะต้องทำการยืนยันตัวตนกับ Samba ซึ่ง Samba มีวิธีในการเลือกการยืนยันตัวตนผ่านทางออปชัน security ซึ่งสามารถเลือกได้ 4 แบบดังนี้
เมื่อ Samba แชร์ไฟล์หรือเครื่องพิมพ์ให้แก่ผู้ใช้และไม่อนุญาตให้ guest เข้ามาใช้งาน ผู้ใช้จะต้องทำการยืนยันตัวตนกับ Samba ซึ่ง Samba มีวิธีในการเลือกการยืนยันตัวตนผ่านทางออปชัน security ซึ่งสามารถเลือกได้ 4 แบบดังนี้
- security = share : samba จะแจ้งแก่ client ให้ส่งค่ารหัสผ่านอย่างเดียวเท่านั้น ดังนั้นหากผู้ใช้ทราบรหัสผ่านของผู้ใช้คนใดคนหนึ่งก็ตามก็สามารถเข้าใช้งาน ในระบบได้
- security = user : samba จะแจ้งแก่ client ให้ส่งค่า username และรหัสผ่านมาเพื่อทำการตรวจสอบตัวตนผู้ใช้ ซึ่งในกรณีนี้จะเหมาะสำหรับผู้ที่ใช้ระบบปฏิบัติการวินโดวส์ NT/2000 เป็น client และใช้ username และรหัสผ่านเป็นชุดเดียวกันกับที่ Samba server
- security = server :
มีรูปแบบการทำงานคล้ายกับแบบ user เพียงแต่ Samba server จะใช้ SMB
server อื่นเป็นตัวทำหน้าที่ตรวจสอบ username และรหัสผ่านแทน
- security = domain : Samba สามารถเป็นสมาชิกของ Windows Domain ได้ ดังนั้นเมื่อผู้ใช้ทำการยืนยันตัวตนกับ primary domain controller (PDC) แล้ว ก็จะสามารถเข้าใช้งานแชร์ที่อยู่บน Samba server ได้ (เป็นคุณสมบัติอย่างหนึ่งของระบบโดเมน)
หมายเหตุ:
หากมีการระบุออปชั่น Public = yes หรือ Guest ok = yes ใน
/etc/samba/smbd.conf แล้ว และไม่ว่าจะระบุ security เป็นออปชันใด
Samba ก็จะไม่ทำการตรวจสอบรหัสผ่านที่ส่งมาจากไคลเอ็นต์ (client)
แต่อย่างใด
2. Passwords
การที่ผู้ใช้จะสามารถเข้าถึงไดเรกทอรีหรือ เครื่องพิมพ์ที่แชร์ไว้ได้นั้น ผู้ใช้จะต้องมี unix account บนเครื่องเซิร์ฟเวอร์ที่ให้บริการ Samba เสียก่อน โดยปกติ Samba สนับสนุนการตรวจสอบตัวตนผู้ใช้ทั้งในแบบที่มีการเข้ารหัส (Encrypted) และไม่มีการเข้ารหัส (Non-encrypted) โดยการตั้งค่า
การที่ผู้ใช้จะสามารถเข้าถึงไดเรกทอรีหรือ เครื่องพิมพ์ที่แชร์ไว้ได้นั้น ผู้ใช้จะต้องมี unix account บนเครื่องเซิร์ฟเวอร์ที่ให้บริการ Samba เสียก่อน โดยปกติ Samba สนับสนุนการตรวจสอบตัวตนผู้ใช้ทั้งในแบบที่มีการเข้ารหัส (Encrypted) และไม่มีการเข้ารหัส (Non-encrypted) โดยการตั้งค่า
encrypt passwords = [yes|no]
โดยหากมีค่าเป็น no ตัว Samba
จะทำการตรวจสอบรหัสผ่าน(และ username) จากไฟล์ /etc/passwd
แต่หากมีค่าเป็น yes ตัว Samba จะทำการตรวจสอบรหัสผ่าน(และ username)
จากไฟล์ /etc/samba/smbpasswd แทน ทั้งนี้หากไฟล์ /etc/samba/smbpasswd
ไม่มีอยู่จริง
ก็จะทำให้ไม่มีผู้ใช้รายใดสามารถเข้าใช้งานแชร์ทั้งหมดได้
(โดยปกติจะไม่มีไฟล์นี้อยู่ ผู้ดูแลระบบจะต้องสร้างไฟล์นี้ขึ้นเอง
ซึ่งจะกล่าวถึงรายละเอียดในลำดับต่อไป)
การใช้งานออปชัน encrypt passwords
นั้น จะขึ้นอยู่กับความสามารถของระบบปฎิบัติการที่เป็นไคลเอนต์ว่า
สนับสนุนการเข้ารหัสหรือไม่ ดังนี้
ตารางที่ 1 แสดงระบบปฏิบัติการต่างๆ กับความสามารถในการส่งรหัสผ่านแบบเข้ารหัส
Operating System | Encrypted or Non-encrypted |
---|---|
Windows 95 | Non-encrypted |
Windows 95 with SMB Update | Encrypted |
Windows 98 | Encrypted |
Windows NT 3. x | Non-encrypted |
Windows NT 4.0 before SP 3 | Non-encrypted |
Windows NT 4.0 after SP 3 | Encrypted |
ในกรณีที่ตั้งค่า encrypt
passwords = no ซึ่งหมายถึง Samba
จะต้องทำการตรวจสอบรหัสผ่านและรายชื่อผู้ใช้จากไฟล์ /etc/passwd
ผู้ดูแลระบบจะสังเกตได้ว่าในไฟล์ /etc/passwd นั้นมี default account
อยู่จำนวนมาก เช่น root, bin, daemon, shutdown ซึ่งหมายความว่า
account ที่ติดมากับระบบดังกล่าว สามารถเป็นผู้ใช้ที่ถูกต้องในระบบของ
Samba ได้ด้วย ดังนั้นจึงขอแนะนำให้ทำการยกเลิกการใช้งาน account
ที่ติดมากับระบบ โดยการตั้งค่าออปชัน invalid users ไว้ที่ส่วน
[global] ดังเช่น
[global]
invalid users = root bin daemon adm sync shutdown \
halt mail news uucp operator gopher \
nobody mailnull rpm ntp
อย่างไรก็ตาม Samba
ได้แนะนำให้ใช้ออปชัน encrypt passwords = yes
แทนเพราะจะทำให้มีความปลอดภัยมากกว่า
ทั้งนี้ผู้ดูแลระบบจำเป็นต้องสร้างไฟล์ /etc/samba/smbpasswd ขึ้นมา
เพื่อรองรับการทำงานในโหมดดังกล่าว ซึ่งสามารถทำได้ 2 วิธีด้วยกันคือ
- ใช้คำสั่ง touch /etc/samba/smbpasswd เพื่อสร้างไฟล์เปล่าขึ้นมา
- ใช้คำสั่ง smbpasswd -a lersak เพื่อเพิ่ม account lersak ขึ้นมาในระบบของ Samba (account lersak จะต้องมีรายชื่อเป็นผู้ใช้ในระบบเสียก่อน โดยตรวจสอบในไฟล์ /etc/passwd จึงจะสามารถใช้คำสั่งดังกล่าวได้)
- หาก lersak ต้องการเปลี่ยนรหัสผ่านสำหรับเข้าใช้บริการของ Samba ก็สามารถใช้คำสั่ง smbpasswd lersak เพื่อทำการเปลี่ยนรหัสผ่านได้
- หรือใช้สคริปต์ mksmbpasswd.sh เพื่อให้ samba สร้างไฟล์ passwd ของ samba เอง ด้วยคำสั่งต่อไปนี้
cat /etc/passwd | /usr/bin/mksmbpasswd.sh > /etc/samba/smbpasswd
- คำสั่งด้านบนนี้จะทำการคัดลอกข้อมูลผู้ใช้ทั้ง หมดในไฟล์ /etc/passwd ไปสร้างเป็นผู้ใช้ในระบบของ Samba ดังนั้นหากตรวจสอบไฟล์ /etc/samba/smbpasswd ดู จะพบว่ามี account ที่เป็นดีฟอลต์ติดมาด้วย ดังนั้นผู้ดูแลระบบจะต้องลบ account ที่ไม่ต้องการดังกล่าวออกจากระบบของ Samba ด้วยการเข้าไปแก้ไขไฟล์ /etc/samba/smbpasswd โดยตรงหรือใช้คำสั่ง smbpasswd -x username สำหรับ username ที่ไม่จำเป็น
- ใช้คำสั่ง smbpasswd สำหรับสร้าง Samba account หรือเปลี่ยนรหัสผ่านได้ตามต้องการ
สำหรับระบบที่ให้บริการ Samba
service และใช้ออปชัน encrypt passwords = yes ซึ่งจำเป็นต้องสร้าง
account ของระบบขึ้นมาก่อนนั้น ในบางครั้ง account
ดังกล่าวไม่ต้องการใช้งาน shell ในระบบเลย
มีการใช้งานเฉพาะในส่วนของการขอใช้บริการของ Samba server เท่านั้น
ดังนั้นผู้ดูแลระบบควรทำการยกเลิกการใช้งาน account ของระบบดังกล่าว
โดยแก้ไขไฟล์ /etc/passwd แล้วเพิ่มเครื่องหมาย colon (:)
ไปที่ต้นบรรทัดของบรรทัดที่ระบุชื่อ account
ที่ไม่ต้องการให้เข้าใช้งานในระบบ เช่น
:lersak:x:503:500::/home/lersak:/bin/bash
นอกจากนี้การที่ Samba
สร้างไฟล์รหัสผ่านของตัวเองแยกออกมาจากของระบบทำให้ผู้ใช้สามารถมีรหัสผ่าน
ที่แตกต่างกันได้ อย่างไรก็ตามเพื่อป้องกันไม่ให้ผู้ใช้ของ Samba
ทำการตั้งรหัสผ่านเป็น null (ไม่มีค่าใดๆ) ผู้ดูแลระบบควรตั้งค่าออปชัน
null passwords = no เพื่อป้องกันเหตุการณ์ดังกล่าวได้
นอกจากนั้น ผู้ดูแลระบบที่ตั้งค่า
encrypt passwords = yes จำเป็นอย่างยิ่งที่จะต้องตั้งค่า permission
ของไฟล์ /etc/samba/smbpasswd ให้มีค่าเป็น 0600 เพื่อป้องกันการ crack
password จากไฟล์ดังกล่าว
3. Networking Options
มี configuration ที่เกี่ยวข้องกับเครือข่ายที่ควรพิจารณาแก้ไขดังต่อไปนี้
มี configuration ที่เกี่ยวข้องกับเครือข่ายที่ควรพิจารณาแก้ไขดังต่อไปนี้
- แก้ไขออปชันของ hosts allow, hosts deny ให้ตรงกับความต้องการ ซึ่งควรตั้งค่าให้สามารถใช้งานได้เฉพาะเครื่องที่จำเป็นต้องใช้งานเท่านั้น เช่น
hosts allow = 192.168.1.
hosts deny = 192.168.1.226/255.255.255.255
โดยค่าที่สามารถระบุได้ใน hosts allow, hosts deny คือ
อย่างไรก็ตาม Samba มีกฎในการนำค่า configuration ของ host allow, hosts deny ไปใช้งานดังนี้
- hostname เช่น hosts allow = example.nectec.or.th
- ip address เช่น hosts allow = 192.168.1.22
- domain เช่น hosts allow = .nectec.or.th exact.nectec.or.th
(.nectec.or.th หมายถึง ทุกเครื่องที่อยู่ภายใต้โดเมน nectec.or.th)- netgroup โดยปกติใช้ได้กับเครือข่ายที่ติดตั้ง NIS, NIS+ เท่านั้น เช่น hosts allow = @localnet
- subnet เช่น hosts allow = 192.168.1. (192.168.1. หมายถึง 192.168.1.0/24)
- ALL ซึ่งหมายถึง ip ใดก็ได้
- EXCEPT เป็นการยกเว้นค่าที่ต้องการ เช่น hosts deny = ALL EXCEPT 192.168.1.
- ถ้าไม่มีการระบุ hosts allow หรือ hosts deny ตัว Samba จะถือว่าเป็นการอนุญาตให้ใช้งานได้อย่างอิสระ (เสมือน hosts allow = ALL)
- ถ้ามีการระบุ hosts allow, hosts deny ใน [global] ค่าดังกล่าวจะมีผลกับทุกๆ แชร์ แม้ว่าจะมีการระบุ hosts allow, deny ในแต่ละแชร์ซึ่งการระบุในแต่ละแชร์ดังกล่าวจะถือว่าไม่มีผลแต่อย่างใด
- ถ้ามีการระบุ hosts allow แต่ไม่ได้ระบุ hosts deny จะถือว่า ค่าที่นอกเหนือจากที่ระบุใน hosts allow จะมีสถานะเป็น deny โดยอัตโนมัติ
- ในทำนองเดียวกัน ถ้ามีการระบุ hosts deny แต่ไม่ได้ระบุ hosts allow จะถือว่า ค่าที่นอกเหนือจากที่ระบุใน hosts deny จะมีสถานะเป็น allow โดยอัตโนมัติ
- ถ้ามีค่า เช่น ip address หรือ subnet ถูกระบุในทั้ง hosts allow และใน hosts deny จะถือว่าค่าดังกล่าวมีสถานะเป็น deny
4. Filesystem Options
configuration ในส่วนนี้จะเกี่ยวข้อง filesystem ซึ่งผู้ดูแลระบบจำเป็นต้องเข้าใจและนำไปใช้ให้เหมาะสมกับระบบของตน
configuration ในส่วนนี้จะเกี่ยวข้อง filesystem ซึ่งผู้ดูแลระบบจำเป็นต้องเข้าใจและนำไปใช้ให้เหมาะสมกับระบบของตน
- ตั้งค่าให้ซ่อนไฟล์ (attribute = hidden) สำหรับชื่อไฟล์ที่ขึ้นด้วยเครื่องหมาย dot (.) ด้วยออปชัน hide dot files = yes
อย่างไรก็ตามหากผู้ใช้ระบบปฏิบัติการวินโดวส์ที่ตั้งค่าให้สามารถ view hidden files ผ่านทาง windows explorer ได้ก็จะสามารถมองเห็นไฟล์ดังกล่าวได้ด้วยดังรูปที่ 2
- ในการแชร์ไฟล์ใดๆ ก็ตาม ผู้ดูแลระบบสามารถกำหนดให้บางไฟล์มีแอตทริบิวต์เป็น hidden ได้ โดยการตั้งค่าดังตัวอย่างนี้
รูปที่ 2 การแสดงผลใน windows explorer เมื่อใช้ออปชัน hide dot files = yes
- หากผู้ดูแลระบบไม่ต้องการให้ผู้ใช้มองเห็นไฟล์ บางไฟล์ได้จริง (ดังรูปที่ 4) ต้องใช้ออปชัน veto files ในการตั้งค่า ซึ่งมีรูปแบบการใช้งานเหมือนกับออปชัน hide files เช่น
- อย่างไรก็ตาม เมื่อผู้ใช้ไม่ทราบว่ามีไฟล์ที่ถูกซ่อนอยู่ (โดยใช้ออปชัน veto files) จึงมีความเป็นไปได้ที่ผู้ใช้จะทำการลบไดเรกทอรีที่บรรจุ veto file ดังกล่าวอยู่ ผู้ดูแลระบบสามารถกำหนดได้ว่าจะอนุญาตให้ลบไฟล์ที่เป็น veto file ได้หรือไม่ด้วยออปชัน delete veto files = yes หรือ no ตามความต้องการ
- ผู้ดูแลระบบสามารถกำหนดให้ผู้ใช้สามารถมองเห็น บางไดเรกทอรีได้ แต่ไม่สามารถมองเห็นข้อมูลไฟล์ใดๆ ในไดเรกทอรีดังกล่าวได้ รวมทั้งไม่สามารถสร้างไฟล์หรือไดเรกทอรีภายใต้ไดเรกทอรีดังกล่าวได้อีกด้วย โดยใช้ออปชัน dont descend เช่น
- มีออปชันที่เกี่ยวข้องกับ link file ที่จะกล่าวถึงคือ follow symlinks = [yes|no] ซึ่งหากระบุเป็น no ก็เป็นการสั่งให้ Samba ไม่ค้นหาไฟล์ที่เป็นต้นฉบับที่แท้จริง หากมีการเรียกใช้ไฟล์ที่เป็น symbolic link ผู้ใช้ก็จะได้รับ error message ดังรูป 5
- ในกรณีที่ระบุ follow symlinks = yes และไฟล์ดังกล่าวลิงค์ไปยังต้นฉบับที่อยู่นอกไดเรกทอรีที่แชร์ไว้ ผู้ดูแลระบบสามารถกำหนดได้ว่าจะให้ผู้ใช้ใช้งานไฟล์ต้นฉบับดังกล่าวได้หรือ ไม่ด้วยออปชัน wide links = [yes|no]
- ออปชัน create mask ใช้กำหนดค่า default permission สูงสุด สำหรับไฟล์ที่สร้างขึ้นมาใหม่ เช่น create mask = 0640
- ออปชัน directory mask ใช้กำหนดค่า default permission สูงสุด สำหรับไดเรกทอรีที่สร้างขึ้นมาใหม่ เช่น directory mask = 750
[data]
path = /home/samba/data
browseable = yes
guest ok = no
writeable = yes
case sensitive = no
hide files = /*.java/*README*/![]()
รูปที่ 3 การแสดงผลใน windows explorer เมื่อใช้ออปชัน hide files
โดยการกำหนดชื่อไฟล์ที่ต้องการซ่อนนั้นสามารถใช้ pattern matching ได้ อย่างไรก็ตามหากผู้ใช้ระบบปฏิบัติการวินโดวส์ที่ตั้งค่าให้สามารถ view hidden files ผ่านทาง windows explorer ได้ก็จะสามารถมองเห็นไฟล์ดังกล่าวได้ด้วยดังรูปที่ 3
[data]
path = /home/samba/data
browseable = yes
guest ok = no
writeable = yes
case sensitive = no
veto files = /*.java/*README*/
![]()
รูปที่ 4 การแสดงผลใน windows explorer เมื่อใช้ออปชัน veto files
[data]
path = /home/samba/data
browseable = yes
guest ok = no
writeable = yes
case sensitive = no
dont descend = folder1 folder2
![]()
รูปที่ 5 การแสดงผลใน windows explorer เมื่อใช้ออปชัน follow symlinks = no
5. File Permissions and Attributes
6. การควบคุมการเข้าถึงแชร์
ผู้ดูแลระบบควรจำกัดการเข้าถึงแชร์ใดๆ ให้ใช้งานได้เฉพาะผู้ที่สมควรได้รับสิทธิ์เท่านั้น โดยมีออปชันที่เกี่ยวข้องดังนี้valid users = myuid, lersak, @staff
ระบุให้เฉพาะผู้ใช้ที่มีชื่อในรายการนี้เท่านั้น จึงจะสามารถเข้าถึงดิสก์ที่แชร์ไว้ได้ (ใช้ @ สำหรับทั้ง group)
** หากรายชื่อผู้ใช้ที่กำหนดไว้ใน valid users ไปปรากฏซ้ำกับรายชื่อใน invalid users ก็จะถือว่าผู้ใช้รายนั้นถูกจัดในกลุ่ม invalid users
invalid users = kitisak, @guest
แสดงรายชื่อผู้ใช้ที่ไม่มีสิทธิ์เข้าใช้งานแชร์
writable = yes
writeable = yes
write ok = yes
read only = no
ออปชันทั้งสี่แบบด้านบนนี้ให้ผลลัพธ์เหมือนกัน คืออนุญาตให้ผู้ใช้สามารถสร้างไฟล์หรือไดเร็กทอรีขึ้นมาใหม่ได้
read list = choawalit, kitisak
แสดงรายชื่อผู้ใช้ที่มีสิทธิ์ใช้งานแชร์แบบอ่านเท่านั้น ไม่สามารถทำการแก้ไขใดๆ ได้ หากว่าผู้ใช้ใน read list มีชื่อใน list อื่น เช่น write list, read only, writeable ก็จะถือว่าผู้ใช้นั้นมีสิทธิ์เป็น read only เท่านั้น
write list = lersak, phuwadon, siriwan
เป็นการให้สิทธิ์ write แก่ผู้ใช้ที่มีชื่อในรายการนี้ แม้ว่าจะมีการระบุว่า read only = yes ก็ตาม
public = no
guest ok = no
ออปชัน public และ guest ok สามารถใช้แทนกันได้ ซึ่งหากกำหนดค่าเป็น yes ก็จะทำให้สามารถเข้าใช้งานดิสก์ที่แชร์ไว้โดยไม่ต้องล็อกอิน
hosts equiv =
เป็นออปชันที่เป็นอันตรายอย่างยิ่ง ผู้ดูแลระบบควรตรวจสอบให้แน่ใจว่าไม่มีการระบุออปชันนี้ในไฟล์ /etc/samba/smb.conf เป็นอันขาด เพราะในออปชัน hosts equiv ดังกล่าวจะกำหนดรายชื่อผู้ใช้และโฮสต์ที่สามารถเข้าใช้งานดิสก์ที่แชร์ไว้ โดยไม่ต้องใช้รหัสผ่าน (คล้ายกับไฟล์ hosts.equiv ของ Unix)
7. คำแนะนำเกี่ยวกับความปลอดภัยอื่นๆ
ผู้ดูแลระบบจะต้องระมัดระวังในการให้ write permission ของไฟล์ /etc/samba/smb.conf แก่ผู้ใช้รายอื่น เพราะหากผู้ใช้สามารถแก้ไขข้อมูลในไฟล์ smb.conf ได้ เช่น อาจจะเพิ่มออปชัน root preexec = , root postexec = ซึ่งเป็นการระบุให้รันคำสั่งที่ต้องการด้วยสิทธิ์ของ root ผู้ใช้รายดังกล่าวก็สามารถครอบครองระบบได้โดยง่ายดังนั้นจึงควรแก้ไขค่า permission ของไฟล์ /etc/samba/smb.conf ดังนี้chown root.root /etc/samba/smb.conf
chmod 600 /etc/samba/smb.conf
อย่างไรก็ตามผู้ดูแลระบบควรระมัด ระวังเมื่อติดตั้ง SWAT เวอร์ชั่นที่ติดมากับ Red Hat linux version ที่ต่ำกว่า 7.0 เพราะ SWAT จะทำการแก้ไข permission ของไฟล์ /etc/samba/smb.conf เป็น 664 แตกต่างจาก SWAT ที่ติดมากับ Red Hat 7.0 ขึ้นไปนั้นไม่มีช่องโหว่ดังกล่าวแล้ว แต่ผู้บุกรุกยังสามารถติดตั้ง SWAT เวอร์ชันที่มีช่องโหว่เองได้สิ่งที่สำคัญคือ ผู้ดูแลระบบจะต้องตั้งค่าออปชันดังต่อไปนี้ในทุกๆ แชร์ เพื่อกำหนดสิทธิ์ให้ชัดเจนว่า ผู้ใช้รายใดจะสามารถเข้ามาใช้งานได้และสามารถใช้งานในระดับใดได้บ้างvalid users =
writeable =
read list =
write list =
hosts allow =
hosts deny =
หมายเหตุ :
**พอร์ตที่เกี่ยวข้องกับการทำงานของ samba server คือ 137/udp, 138/udp, 139/tcp
**ผู้ดูแลระบบควรตรวจสอบการใช้งานของผู้ใช้อย่างสม่ำเสมอ ด้วยคำสั่ง smbstatus
อ้างอิงข้อมูลจาก http://www.thaicert.org
0 ความคิดเห็น:
แสดงความคิดเห็น