็†ฑ้–€ๅˆ†้กž
 ่ผ‰ๅ…ฅไธญ…
็›ฎ้Œ„

๐Ÿ” PowerShell ๅปบ็ซ‹ไผๆฅญๆช”ๆกˆๅˆ†ไบซ็’ฐๅขƒ:ACL、็พค็ต„ๅŒ–็ฎก็†、ๅญ˜ๅ–็จฝๆ ธ่ˆ‡้˜ฒๆญข่ณ‡ๆ–™ๅค–ๆดฉ

    ๐Ÿ” PowerShell ๅปบ็ซ‹ไผๆฅญๆช”ๆกˆๅˆ†ไบซ็’ฐๅขƒ:ACL、็พค็ต„ๅŒ–็ฎก็†、ๅญ˜ๅ–็จฝๆ ธ่ˆ‡้˜ฒๆญข่ณ‡ๆ–™ๅค–ๆดฉ

    ๅœจไผๆฅญไธญๅปบ็ฝฎๆช”ๆกˆไผบๆœๅ™จ(File Server),ๆœ€ๆ ธๅฟƒ็š„ๆŠ€่ก“ๅœจๆ–ผๅˆ†ไบซ่จญๅฎš(SMB Share)NTFS ๆฌŠ้™(ACL)็พค็ต„ๅŒ–็ฎก็†、ไปฅๅŠๅญ˜ๅ–็จฝๆ ธ(Audit)。 ่‹ฅ่ƒฝ้€้Ž PowerShell ่‡ชๅ‹•ๅŒ–้€™ไบ›ๆต็จ‹,ไธๅƒ…่ƒฝๆถˆ้™คๆ‰‹ๅ‹•่จญๅฎš้Œฏ่ชค,ไนŸ่ฎ“ๅคšๅฐไผบๆœๅ™จ็š„้ƒจ็ฝฒๆ›ดไธ€่‡ดๅŒ–。

    ๆœฌ็ฏ‡ๆทฑๅบฆๅฎŒๆ•ด่งฃๆž Windows ๆช”ๆกˆไผบๆœๅ™จๅปบ็ฝฎๆต็จ‹,ๅŒ…ๅซ:

    • ๐Ÿ“Œ ๅฎ‰่ฃ File Server ่ง’่‰ฒ
    • ๐Ÿ“Œ ๅปบ็ซ‹่ณ‡ๆ–™ๅคพๆžถๆง‹:้ƒจ้–€ / ๅฐˆๆกˆ / ๅ…ฌ็”จ
    • ๐Ÿ“Œ ไฝฟ็”จ PowerShell ๅปบ็ซ‹ SMB Share
    • ๐Ÿ“Œ ไปฅ็พค็ต„็‚บไธญๅฟƒ็š„ NTFS ACL ๆฌŠ้™ๆจกๅž‹
    • ๐Ÿ“Œ ๅ•Ÿ็”จ็จฝๆ ธ่ˆ‡ Log ๅˆ†ๆž
    • ๐Ÿ“Œ ้˜ฒๆญข่ณ‡ๆ–™ๅค–ๆดฉ็š„่จญๅฎš(Access-Based Enumeration、้˜ปๆ“‹ๅฑ้šชๆช”ๆกˆ)

    ๐Ÿงฑ Part 1:ๅฎ‰่ฃ File Server ่ง’่‰ฒ

    ๅœจ Windows Server ไธญ,File Server ่ง’่‰ฒๅฏไปฅ้€้Ž GUI ๆˆ– PowerShell ๅฎ‰่ฃ。่‹ฅ่ฆ่…ณๆœฌ่‡ชๅ‹•ๅŒ–,่ซ‹ไฝฟ็”จ:

    
    # ๅฎ‰่ฃ File Server ่ง’่‰ฒ
    Install-WindowsFeature -Name FS-FileServer -IncludeManagementTools
      

    ็ขบ่ช่ง’่‰ฒๅทฒๅฎ‰่ฃ:

    
    Get-WindowsFeature FS-FileServer
      

    ๐Ÿ—‚ Part 2:ไผๆฅญ่ณ‡ๆ–™ๅคพๆžถๆง‹(ๅปบ่ญฐ)

    
    D:\FileShares\
     ├── Public\
     ├── HR\
     ├── Finance\
     ├── IT\
     └── Project\
          ├── P001\
          ├── P002\
          └── P003\
      

    ๅปบ็ซ‹่ณ‡ๆ–™ๅคพ:

    
    New-Item -Path "D:\FileShares\Public" -ItemType Directory
    New-Item -Path "D:\FileShares\HR" -ItemType Directory
    New-Item -Path "D:\FileShares\Finance" -ItemType Directory
      

    ๐Ÿ‘ฅ Part 3:ไผๆฅญ็ดš AD ็พค็ต„ๆฌŠ้™ๆจกๅž‹

    ๅคงๅž‹ไผๆฅญๆŽก็”จ「AGDLP ๆจกๅž‹」:

    • Accounts(ไบบๅ“ก)
    • Global Groups(้ƒจ้–€็พค็ต„)
    • Domain Local Groups(ๆฌŠ้™็พค็ต„)
    • Permissions(ACL ๅฅ—็”จ)

    ๅปบ็ซ‹็พค็ต„(็ฏ„ไพ‹):

    
    # ๅปบ็ซ‹้ƒจ้–€็พค็ต„
    New-ADGroup -Name "GG-HR" -GroupScope Global -Path "OU=Groups,DC=corp,DC=local"
    New-ADGroup -Name "GG-Finance" -GroupScope Global -Path "OU=Groups,DC=corp,DC=local"
    
    # ๅปบ็ซ‹ๆฌŠ้™็พค็ต„
    New-ADGroup -Name "DL-HR-Modify" -GroupScope DomainLocal -Path "OU=Groups,DC=corp,DC=local"
    New-ADGroup -Name "DL-FIN-Read" -GroupScope DomainLocal -Path "OU=Groups,DC=corp,DC=local"
    
    # ๅฐ‡ GG ๅŠ ๅ…ฅ DL
    Add-ADGroupMember -Identity "DL-HR-Modify" -Members "GG-HR"
    Add-ADGroupMember -Identity "DL-FIN-Read" -Members "GG-Finance"
      

    ๐Ÿ“ Part 4:ๅปบ็ซ‹ SMB Share(ๅซ Access-Based Enumeration)

    ๅปบ็ซ‹ HR ่ณ‡ๆ–™ๅคพ็š„ๅ…ฑไบซ:

    
    New-SmbShare -Name "HR" -Path "D:\FileShares\HR" -FullAccess "DL-HR-Modify" -ReadAccess "DL-HR-Read" -EncryptData $true
      

    ๅ•Ÿ็”จ Access-Based Enumeration(ๆœชๆŽˆๆฌŠ่€…็œ‹ไธๅˆฐ่ณ‡ๆ–™ๅคพๅ็จฑ):

    
    Set-SmbShare -Name "HR" -FolderEnumerationMode AccessBased
      

    ็ขบ่ช่จญๅฎšๆˆๅŠŸ:

    
    Get-SmbShare -Name "HR" | fl *
      

    ๐Ÿ” Part 5:่จญๅฎš NTFS ๆฌŠ้™(ACL)

    ๅฐ‡ๆฌŠ้™ๆŽˆไบˆ DL ็พค็ต„:

    
    # ๅ–ๅพ—็›ฎๅ‰ ACL
    $acl = Get-Acl "D:\FileShares\HR"
    
    # ่จญๅฎšๅญ˜ๅ–่ฆๅ‰‡(Modify ๆฌŠ้™)
    $rule = New-Object System.Security.AccessControl.FileSystemAccessRule("DL-HR-Modify","Modify","ContainerInherit,ObjectInherit","None","Allow")
    
    # ๅฅ—็”จ
    $acl.AddAccessRule($rule)
    Set-Acl -Path "D:\FileShares\HR" -AclObject $acl
      

    ็ตฆไบˆ Read ๆฌŠ้™:

    
    $acl = Get-Acl "D:\FileShares\Finance"
    $rule = New-Object System.Security.AccessControl.FileSystemAccessRule("DL-FIN-Read","ReadAndExecute","ContainerInherit,ObjectInherit","None","Allow")
    $acl.AddAccessRule($rule)
    Set-Acl "D:\FileShares\Finance" $acl
      

    ๐Ÿ•ต️ Part 6:ๅ•Ÿ็”จ็จฝๆ ธ(Audit)่ฟฝ่นค่ชฐ่ฎ€/ๅฏซ่ณ‡ๆ–™

    ็ฌฌไธ€ๆญฅ:ๅ•Ÿ็”จๆœฌๆฉŸ็จฝๆ ธ็ญ–็•ฅ Auditing:

    
    auditpol /set /subcategory:"File System" /success:enable /failure:enable
      

    ็ฌฌไบŒๆญฅ:ๅœจ HR ่ณ‡ๆ–™ๅคพไธŠๅŠ ไธŠ็จฝๆ ธ่ฆๅ‰‡:

    
    $acl = Get-Acl "D:\FileShares\HR"
    $auditRule = New-Object System.Security.AccessControl.FileSystemAuditRule("GG-HR","Write","ContainerInherit,ObjectInherit","None","Success")
    $acl.AddAuditRule($auditRule)
    Set-Acl "D:\FileShares\HR" $acl
      

    ้€™ๆจฃๅณๅฏๅœจ Security Log ็œ‹ๅˆฐ:่ชฐๆ–ฐๅขž、ไฟฎๆ”น、ๅˆช้™คๆช”ๆกˆ。


    ๐Ÿšซ Part 7:้˜ฒๆญข่ณ‡ๆ–™ๅค–ๆดฉ(DLP ๅŸบ็คŽ)

    • Access-Based Enumeration:ๆœชๆŽˆๆฌŠ็š„่ณ‡ๆ–™ๅคพ็›ดๆŽฅ้šฑ่—。
    • ้˜ปๆ“‹ๅฑ้šชๅ‰ฏๆช”ๅไธ‹่ผ‰(ๅฆ‚ exe、bat、ps1)
    • ๅผทๅˆถ SMB ๅŠ ๅฏ†(้ฟๅ…็ถฒ่ทฏๅฐๅŒ…็ซŠ่ฝ)
    • ไฝฟ็”จ File Screening(FSRM)้˜ปๆ“‹็‰นๅฎšๆช”ๆกˆ้กžๅž‹

    ๅ•Ÿ็”จ SMB ๅŠ ๅฏ†:

    
    Set-SmbServerConfiguration -EncryptData $true -Force
      

    ้˜ปๆ“‹ๅฏๅŸท่กŒๆช”(FSRM):

    
    Import-Module FileServerResourceManager
    
    New-FsrmFileGroup -Name "BlockExe" -IncludePattern @("*.exe","*.bat","*.ps1")
    New-FsrmFileScreen -Path "D:\FileShares\Public" -FileGroup "BlockExe" -Active:$true
      

    ๐Ÿ ็ต่ชž

    PowerShell ่ƒฝๅฐ‡ๆ•ดๅ€‹ไผๆฅญๆช”ๆกˆไผบๆœๅ™จ็š„ๅปบ็ฝฎๆต็จ‹่‡ชๅ‹•ๅŒ–,้ฟๅ…ๆ‰‹ๅ‹•่จญๅฎš้Œฏ่ชค,ไนŸ่ฎ“ๆฌŠ้™็ฎก็†ๆ›ดไธ€่‡ด่ˆ‡ๅฎ‰ๅ…จ。 ๆœฌ็ฏ‡ๆถต่“‹SMB Share、NTFS ACL、็พค็ต„ๅŒ–็ฎก็†、็จฝๆ ธ、ๅค–ๆดฉ้˜ฒ่ญท็ญ‰ไผๆฅญๆœ€ๅธธไฝฟ็”จ็š„้…็ฝฎๆ–นๆณ•, ๅฏไฝœ็‚บไผๆฅญ IT、MIS ่ˆ‡็ณป็ตฑ็ฎก็†ๅ“ก้ƒจ็ฝฒ Windows File Server ็š„ๆจ™ๆบ–่—ๅœ–。

    ๐Ÿ”— ๅˆ†ไบซ้€™็ฏ‡ LINE Facebook X

    ๆฒ’ๆœ‰็•™่จ€:

    ๅผต่ฒผ็•™่จ€

    ๅญ—็ดš