ที่มา : ThaiCERT

ชื่อเรื่อง : Samba Security
เรียบเรียงโดย : ภูวดล ด่านระหาญ
เรียบเรียงเมื่อ : 28 ตุลาคม 2545

กล่าวนำ
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

    Samba-Schema
    รูปที่ 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 แบบดังนี้

    1. security = share : samba จะแจ้งแก่ client ให้ส่งค่ารหัสผ่านอย่างเดียวเท่านั้น ดังนั้นหากผู้ใช้ทราบรหัสผ่านของผู้ใช้คนใดคนหนึ่งก็ตามก็สามารถเข้าใช้งาน ในระบบได้
    2. security = user : samba จะแจ้งแก่ client ให้ส่งค่า username และรหัสผ่านมาเพื่อทำการตรวจสอบตัวตนผู้ใช้ ซึ่งในกรณีนี้จะเหมาะสำหรับผู้ที่ใช้ระบบปฏิบัติการวินโดวส์ NT/2000 เป็น client และใช้ username และรหัสผ่านเป็นชุดเดียวกันกับที่ Samba server
    3. security = server : มีรูปแบบการทำงานคล้ายกับแบบ user เพียงแต่ Samba server จะใช้ SMB server อื่นเป็นตัวทำหน้าที่ตรวจสอบ username และรหัสผ่านแทน
    4. 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) โดยการตั้งค่า

encrypt passwords = [yes|no]

โดยหากมีค่าเป็น no ตัว Samba จะทำการตรวจสอบรหัสผ่าน(และ username) จากไฟล์ /etc/passwd แต่หากมีค่าเป็น yes ตัว Samba จะทำการตรวจสอบรหัสผ่าน(และ username) จากไฟล์ /etc/samba/smbpasswd แทน ทั้งนี้หากไฟล์ /etc/samba/smbpasswd ไม่มีอยู่จริง ก็จะทำให้ไม่มีผู้ใช้รายใดสามารถเข้าใช้งานแชร์ทั้งหมดได้ (โดยปกติจะไม่มีไฟล์นี้อยู่ ผู้ดูแลระบบจะต้องสร้างไฟล์นี้ขึ้นเอง ซึ่งจะกล่าวถึงรายละเอียดในลำดับต่อไป)

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

ตารางที่ 1 แสดงระบบปฏิบัติการต่างๆ กับความสามารถในการส่งรหัสผ่านแบบเข้ารหัส

Samba Security

ในกรณีที่ตั้งค่า 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 วิธีด้วยกันคือ

  1. ใช้คำสั่ง touch /etc/samba/smbpasswd เพื่อสร้างไฟล์เปล่าขึ้นมา
    • ใช้คำสั่ง smbpasswd -a lersak เพื่อเพิ่ม account lersak ขึ้นมาในระบบของ Samba (account lersak จะต้องมีรายชื่อเป็นผู้ใช้ในระบบเสียก่อน โดยตรวจสอบในไฟล์ /etc/passwd จึงจะสามารถใช้คำสั่งดังกล่าวได้)
    • หาก lersak ต้องการเปลี่ยนรหัสผ่านสำหรับเข้าใช้บริการของ Samba ก็สามารถใช้คำสั่ง smbpasswd lersak เพื่อทำการเปลี่ยนรหัสผ่านได้
  2. หรือใช้สคริปต์ 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 ที่เกี่ยวข้องกับเครือข่ายที่ควรพิจารณาแก้ไขดังต่อไปนี้

  • แก้ไขออปชันของ hosts allow, hosts deny ให้ตรงกับความต้องการ ซึ่งควรตั้งค่าให้สามารถใช้งานได้เฉพาะเครื่องที่จำเป็นต้องใช้งานเท่านั้น เช่น

    hosts allow = 192.168.1.
    hosts deny = 192.168.1.226/255.255.255.255

โดยค่าที่สามารถระบุได้ใน hosts 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.

อย่างไรก็ตาม Samba มีกฎในการนำค่า configuration ของ host allow, hosts deny ไปใช้งานดังนี้

  1. ถ้าไม่มีการระบุ hosts allow หรือ hosts deny ตัว Samba จะถือว่าเป็นการอนุญาตให้ใช้งานได้อย่างอิสระ (เสมือน hosts allow = ALL)
  2. ถ้ามีการระบุ hosts allow, hosts deny ใน [global] ค่าดังกล่าวจะมีผลกับทุกๆ แชร์ แม้ว่าจะมีการระบุ hosts allow, deny ในแต่ละแชร์ซึ่งการระบุในแต่ละแชร์ดังกล่าวจะถือว่าไม่มีผลแต่อย่างใด
  3. ถ้ามีการระบุ hosts allow แต่ไม่ได้ระบุ hosts deny จะถือว่า ค่าที่นอกเหนือจากที่ระบุใน hosts allow จะมีสถานะเป็น deny โดยอัตโนมัติ
  4. ในทำนองเดียวกัน ถ้ามีการระบุ hosts deny แต่ไม่ได้ระบุ hosts allow จะถือว่า ค่าที่นอกเหนือจากที่ระบุใน hosts deny จะมีสถานะเป็น allow โดยอัตโนมัติ
  5. ถ้ามีค่า เช่น ip address หรือ subnet ถูกระบุในทั้ง hosts allow และใน hosts deny จะถือว่าค่าดังกล่าวมีสถานะเป็น deny

4. Filesystem Options
configuration ในส่วนนี้จะเกี่ยวข้อง filesystem ซึ่งผู้ดูแลระบบจำเป็นต้องเข้าใจและนำไปใช้ให้เหมาะสมกับระบบของตน

  • ตั้งค่าให้ซ่อนไฟล์ (attribute = hidden) สำหรับชื่อไฟล์ที่ขึ้นด้วยเครื่องหมาย dot (.) ด้วยออปชัน hide dot files = yes
    อย่างไรก็ตามหากผู้ใช้ระบบปฏิบัติการวินโดวส์ที่ตั้งค่าให้สามารถ view hidden files ผ่านทาง windows explorer ได้ก็จะสามารถมองเห็นไฟล์ดังกล่าวได้ด้วยดังรูปที่ 2

    sam.0502
    รูปที่ 2 การแสดงผลใน windows explorer เมื่อใช้ออปชัน hide dot files = yes

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

    [data]
             path = /home/samba/data
             browseable = yes
             guest ok = no
             writeable = yes
             case sensitive = no
    hide files = /*.java/*README*/

    sam.0503
    รูปที่ 3 การแสดงผลใน windows explorer เมื่อใช้ออปชัน hide files

โดยการกำหนดชื่อไฟล์ที่ต้องการซ่อนนั้นสามารถใช้ pattern matching ได้ อย่างไรก็ตามหากผู้ใช้ระบบปฏิบัติการวินโดวส์ที่ตั้งค่าให้สามารถ view hidden files ผ่านทาง windows explorer ได้ก็จะสามารถมองเห็นไฟล์ดังกล่าวได้ด้วยดังรูปที่ 3

  • หากผู้ดูแลระบบไม่ต้องการให้ผู้ใช้มองเห็นไฟล์บางไฟล์ได้จริง (ดังรูปที่ 4) ต้องใช้ออปชัน veto files ในการตั้งค่า ซึ่งมีรูปแบบการใช้งานเหมือนกับออปชัน hide files เช่น

    [data]
             path = /home/samba/data
             browseable = yes
             guest ok = no
             writeable = yes
             case sensitive = no
    veto files = /*.java/*README*/

    sam.0504
    รูปที่ 4 การแสดงผลใน windows explorer เมื่อใช้ออปชัน veto files

  • อย่างไรก็ตาม เมื่อผู้ใช้ไม่ทราบว่ามีไฟล์ที่ถูกซ่อนอยู่ (โดยใช้ออปชัน veto files) จึงมีความเป็นไปได้ที่ผู้ใช้จะทำการลบไดเรกทอรีที่บรรจุ veto file ดังกล่าวอยู่ ผู้ดูแลระบบสามารถกำหนดได้ว่าจะอนุญาตให้ลบไฟล์ที่เป็น veto file ได้หรือไม่ด้วยออปชัน delete veto files = yes หรือ no ตามความต้องการ
  • ผู้ดูแลระบบสามารถกำหนดให้ผู้ใช้สามารถมองเห็นบางไดเรกทอรีได้ แต่ไม่สามารถมองเห็นข้อมูลไฟล์ใดๆ ในไดเรกทอรีดังกล่าวได้ รวมทั้งไม่สามารถสร้างไฟล์หรือไดเรกทอรีภายใต้ไดเรกทอรีดังกล่าวได้อีกด้วย โดยใช้ออปชัน dont descend เช่น

    [data]
             path = /home/samba/data
             browseable = yes
             guest ok = no
             writeable = yes
             case sensitive = no
    dont descend = folder1 folder2

  • มีออปชันที่เกี่ยวข้องกับ link file ที่จะกล่าวถึงคือ follow symlinks = [yes|no] ซึ่งหากระบุเป็น no ก็เป็นการสั่งให้ Samba ไม่ค้นหาไฟล์ที่เป็นต้นฉบับที่แท้จริง หากมีการเรียกใช้ไฟล์ที่เป็น symbolic link ผู้ใช้ก็จะได้รับ error message ดังรูป 5

    sam.0505
    รูปที่ 5 การแสดงผลใน windows explorer เมื่อใช้ออปชัน follow symlinks = no

  • ในกรณีที่ระบุ follow symlinks = yes และไฟล์ดังกล่าวลิงค์ไปยังต้นฉบับที่อยู่นอกไดเรกทอรีที่แชร์ไว้ ผู้ดูแลระบบสามารถกำหนดได้ว่าจะให้ผู้ใช้ใช้งานไฟล์ต้นฉบับดังกล่าวได้หรือไม่ด้วยออปชัน wide links = [yes|no]

5. File Permissions and Attributes

  • ออปชัน create mask ใช้กำหนดค่า default permission สูงสุด สำหรับไฟล์ที่สร้างขึ้นมาใหม่ เช่น create mask = 0640
  • ออปชัน directory mask ใช้กำหนดค่า default permission สูงสุด สำหรับไดเรกทอรีที่สร้างขึ้นมาใหม่ เช่น directory mask = 750

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

    Advertisements