Windows服务器共享权限配置不当,是导致内网文件泄露、勒索病毒横向扩散和越权访问最常见的原因之一。很多管理员习惯直接给Everyone完全控制,或者把共享权限和NTFS权限混为一谈,结果要么是用户访问不了,要么是权限过大被人随意拖库。要真正把共享权限收紧,必须同时理解两层权限的叠加逻辑:共享权限决定网络入口的访问级别,NTFS权限决定文件系统层面的最终控制,二者取最严格的那一个生效。
先说最实用的配置顺序。无论你用的是Windows Server 2016、2019还是2022,建议一律采用“共享权限给足、NTFS权限收紧”的策略。具体做法是:在共享权限里给Everyone或目标安全组授予“完全控制”,然后把真正的访问限制全部写在NTFS权限里。这样做的最大好处是管理集中,不用在两套权限体系里来回切换排查。共享权限只负责放行网络访问,NTFS权限负责精确到文件夹和文件的读写删改,最终用户实际能做什么,完全由NTFS决定。
第一步:关闭默认管理共享和高危共享Windows系统默认会开启C$、D$、ADMIN$等管理共享,这些共享对普通用户不可见,但一旦管理员账号被爆破或哈希传递攻击,攻击者可以直接通过这些共享拖走整个磁盘。建议通过组策略或注册表关闭默认管理共享。打开注册表编辑器,定位到HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\LanmanServer\Parameters,新建DWORD值AutoShareServer和AutoShareWks,数值都设为0,然后重启Server服务。对于IPC$共享,虽然不能直接关闭,但可以通过网络访问策略限制匿名枚举,在本地安全策略里把“网络访问:不允许匿名枚举SAM账户和共享”设为已启用。
第二步:创建专用共享账户和权限组绝对不要用管理员账号作为日常文件共享的访问凭证。应该为每个部门或业务系统创建独立的域账户或本地账户,并按照最小权限原则分配。例如财务部共享盘只允许财务安全组读取和写入,人事部共享盘只允许人事组完全控制,其他组一律拒绝。在服务器本地用户和组里创建安全组,把需要访问的用户加进去,然后针对每个共享文件夹单独设置NTFS权限。不要图省事直接给单个用户授权,后续人员变动时你会陷入逐个文件夹改权限的噩梦。
第三步:正确配置共享权限右键目标文件夹,选择“属性”->“共享”->“高级共享”,勾选“共享此文件夹”,共享名保持简洁英文,不要带空格和特殊字符。点击“权限”,这里默认只有Everyone读取权限。按照前面说的策略,把Everyone删除,添加你创建的安全组,授予“完全控制”。注意,这里给完全控制只是为了让NTFS权限成为唯一控制点,并不会真正放大权限,因为最终生效的是共享权限和NTFS权限的交集。如果共享权限只给读取,那么即使用户在NTFS里拥有完全控制,网络访问时也只能读取,这就是为什么很多管理员发现本地登录能写、网络访问只能读的原因。
第四步:精细化NTFS权限切到“安全”选项卡,这里才是真正的权限战场。先点击“高级”,禁用继承,选择“将已继承的权限转换为此对象的显式权限”,然后开始清理默认权限。删除Users组和普通用户的权限,只保留SYSTEM和Administrators的完全控制。然后添加你的安全组,根据业务需求勾选权限。常见的安全配置是:普通用户组只给“读取和执行”“列出文件夹内容”“读取”三项;需要上传文件的部门组额外勾选“写入”;只有IT运维组才给“修改”和“完全控制”。特别注意“删除”权限,它包含在“修改”和“完全控制”里,如果不想让用户删除文件,只给读取和写入是不够的,必须单独取消“删除子文件夹和文件”和“删除”这两个高级权限。
第五步:处理“写入”与“修改”的权限陷阱很多管理员以为给“写入”权限用户就能正常编辑文件,实际上“写入”只允许创建新文件和往现有文件里追加数据,并不包含修改后保存覆盖原文件的能力。用户打开一个Word文档修改后保存,系统需要在原文件上执行写操作并可能删除临时文件,如果只有“写入”而没有“修改”权限,保存时会报错或只能另存为。正确的做法是:如果用户需要编辑文件,必须给“修改”权限;如果只允许上传新文件但不能改已存在的文件,给“写入”即可。对于共享盘根目录,建议只给“读取和执行”,然后在子文件夹里单独给“修改”,这样用户可以浏览目录结构,但不会误删根目录下的重要文件。
第六步:用访问控制列表审计权限配置完权限后,不要凭感觉判断是否安全。打开PowerShell,用icacls命令导出当前文件夹的权限列表,逐条检查是否存在Everyone、Users、Authenticated Users等宽泛主体拥有写权限的情况。命令示例:
icacls "D:\Share\Finance" /save acl_backup.txt /t
这条命令会把该文件夹及其所有子文件夹的ACL导出到文本文件,方便审计。如果发现某个子文件夹权限异常,可以用下面的命令重置:
icacls "D:\Share\Finance" /reset /t /c
但注意reset会恢复继承权限,如果之前手动设置了特殊权限会被清除,执行前务必确认。更安全的做法是用icacls精确授予权限,例如给财务组授予修改权限但禁止删除:
icacls "D:\Share\Finance" /grant "DOMAIN\Finance":(OI)(CI)M /inheritance:r icacls "D:\Share\Finance" /deny "DOMAIN\Finance":(OI)(CI)DELETE
第一行授予财务组对该文件夹及子文件夹的修改权限,并移除所有继承;第二行显式拒绝删除权限。deny权限优先级高于allow,即使财务组在其他地方被授予了删除权限,在这里也无法删除文件。
第七步:启用共享文件夹的访问审核权限配置得再严密,如果没有人监控异常访问,等于闭着眼睛开车。在本地安全策略里启用“审核对象访问”,然后对关键共享文件夹添加审核条目。右键文件夹属性->安全->高级->审核,添加要监控的用户组或Everyone,勾选“删除”“更改权限”“取得所有权”等敏感操作的审核。这样一旦有人尝试越权删除文件或篡改权限,安全日志里就会留下记录。配合事件查看器里的安全日志,可以快速定位是哪个账户在什么时间对哪个文件做了什么操作。对于高价值共享盘,建议把审核日志转发到集中的日志服务器,防止攻击者删除本地日志。
第八步:针对共享缓存和离线文件的加固很多用户喜欢把共享文件夹映射为网络驱动器并启用离线文件,这会在本地磁盘上缓存共享文件副本。如果用户电脑丢失或被入侵,缓存文件同样会泄露。建议在共享文件夹属性的“缓存”设置里,选择“该共享中的文件和程序用户无法脱机使用”,或者至少选择“用户从共享打开的所有文件和程序将自动脱机可用”但配合BitLocker加密用户磁盘。对于包含敏感数据的共享,直接禁用离线文件是最稳妥的。另外,共享文件夹的“基于访问的枚举”功能建议开启,这样用户只能看到自己有权限访问的文件夹,看不到其他无权限的目录,减少信息暴露面。
第九步:定期排查共享权限的继承关系共享权限配置完成后,最怕的是后续有人往共享盘里复制文件夹时带入了宽松的NTFS权限。Windows在复制文件夹时会继承目标位置的权限,但移动文件夹时会保留原始权限。如果用户从自己的个人目录里移动了一个权限宽松的文件夹到共享盘,那么这个文件夹可能保留了Everyone可写的权限。建议每季度用PowerShell脚本扫描共享盘下所有文件夹的ACL,找出包含Everyone、Users、Authenticated Users且具有写权限的文件夹,然后逐一处理。脚本思路很简单:遍历所有目录,用Get-Acl获取权限,匹配宽泛主体和写权限,输出异常路径。这种主动排查比等出事了再翻日志有效得多。
第十步:结合SMB协议层加固共享权限配置得再完美,如果SMB协议本身存在漏洞,攻击者照样可以绕过。建议在服务器上禁用SMB1,因为SMB1存在著名的永恒之蓝漏洞。打开PowerShell执行以下命令检测和禁用SMB1:
Get-WindowsOptionalFeature -Online -FeatureName SMB1Protocol Disable-WindowsOptionalFeature -Online -FeatureName SMB1Protocol -NoRestart
同时启用SMB签名和加密,防止中间人攻击和网络嗅探。在组策略里找到“Microsoft网络服务器:对通信进行数字签名(始终)”设为已启用,对于高安全场景,可以启用SMB3加密,在共享文件夹属性里勾选“加密数据访问”。这些协议层加固与权限配置配合,才能形成完整的共享安全防线。
最后强调一个容易被忽略的点:共享权限和NTFS权限的叠加结果不是相加,而是取交集。这意味着无论你在共享权限里给了多大权限,只要NTFS权限收紧,最终权限就收紧;反过来,如果NTFS权限给得再大,共享权限只给读取,用户也只能读取。所以排查共享访问问题时,先看共享权限是否放行,再看NTFS权限是否精确,不要一上来就重装系统或者重配共享。把这两层权限的关系理顺,Windows服务器的共享安全配置其实并不复杂,难的是持续保持权限最小化和定期审计的习惯。
