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

๐Ÿ” Building an Enterprise File Sharing Server with PowerShell: ACLs, Group-Based Management, Auditing & Data Loss Prevention

    ๐Ÿ” Building an Enterprise File Sharing Server with PowerShell: ACLs, Group-Based Management, Auditing & Data Loss Prevention

    In enterprise environments, the foundation of a secure file sharing infrastructure includes SMB shares, NTFS ACL permissions, group-based access control, and auditing. Automating the deployment of these components using PowerShell ensures consistency, reduces misconfiguration, and enables rapid provisioning across multiple servers.

    This article provides a complete, in-depth, enterprise-level guide including:

    • ๐Ÿ“Œ Installing the File Server role
    • ๐Ÿ“Œ Planning folder structures for departments or projects
    • ๐Ÿ“Œ Creating SMB shares using PowerShell
    • ๐Ÿ“Œ Implementing group-based NTFS permission models
    • ๐Ÿ“Œ Enabling auditing for access tracking
    • ๐Ÿ“Œ Preventing data leakage with enterprise security controls

    ๐Ÿงฑ Part 1: Installing the File Server Role

    Install the File Server role using PowerShell:

    
    Install-WindowsFeature -Name FS-FileServer -IncludeManagementTools
      

    Verify installation:

    
    Get-WindowsFeature FS-FileServer
      

    ๐Ÿ—‚ Part 2: Recommended Enterprise Folder Structure

    
    D:\FileShares\
     ├── Public\
     ├── HR\
     ├── Finance\
     ├── IT\
     └── Projects\
          ├── P001\
          ├── P002\
          └── P003\
      
    
    New-Item "D:\FileShares\Public" -ItemType Directory
    New-Item "D:\FileShares\HR" -ItemType Directory
    New-Item "D:\FileShares\Finance" -ItemType Directory
      

    ๐Ÿ‘ฅ Part 3: AD Group-Based Permission Model (AGDLP)

    Enterprises commonly use the AGDLP security model:

    • Accounts → Users
    • Global Groups → Department groups
    • Domain Local Groups → Permission groups
    • Permissions → Applied to folders
    
    # Create Global Groups (Users)
    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"
    
    # Create Domain Local Groups (Permissions)
    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"
    
    # Map GG to DL
    Add-ADGroupMember -Identity "DL-HR-Modify" -Members "GG-HR"
    Add-ADGroupMember -Identity "DL-FIN-Read"    -Members "GG-Finance"
      

    ๐Ÿ“ Part 4: Creating SMB Shares (with ABE & Encryption)

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

    Enable Access-Based Enumeration (ABE):

    
    Set-SmbShare -Name "HR" -FolderEnumerationMode AccessBased
      

    Check configuration:

    
    Get-SmbShare -Name "HR" | fl *
      

    ๐Ÿ” Part 5: Setting NTFS ACL Permissions

    Assign Modify permissions for HR:

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

    Assign Read permissions for Finance:

    
    $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: Enabling File Access Auditing

    Enable audit policies:

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

    Add auditing rule to the folder:

    
    $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
      

    Audit events will appear in the Windows Security Log, allowing you to track which user created, modified, or deleted files.


    ๐Ÿšซ Part 7: Data Loss Prevention (DLP) Basics

    • Hide unauthorized folders using Access-Based Enumeration
    • Block dangerous file types with FSRM
    • Enforce SMB encryption to prevent packet sniffing
    • Monitor access patterns using Auditing

    Enable SMB encryption globally:

    
    Set-SmbServerConfiguration -EncryptData $true -Force
      

    Block executable files using FSRM:

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

    ๐Ÿ Conclusion

    PowerShell provides a powerful, consistent, and secure method for deploying enterprise-grade file sharing environments. Through SMB shares, NTFS ACLs, AD group-based access control, auditing, and DLP techniques, IT administrators can greatly enhance both security and manageability.

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

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

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

    ๅญ—็ดš