IIS 10权限配置咨询:限制目录访问仅允许指定网络用户及知晓直接URL的访客访问
IIS 10权限配置咨询:限制目录访问仅允许指定网络用户及知晓直接URL的访客访问
嘿,针对你的需求,我给你梳理一套适配IIS 10 + Windows Server 2019的分步配置方案,完全贴合你既要给指定网络用户读写权限,又要让公网仅允许知晓哈希URL的访客访问的要求:
一、先搞定底层NTFS文件权限(核心基础)
这一步是Windows系统层面的权限,必须先配置好,不然IIS权限再严也白搭:
- 找到目标目录,右键→「属性」→「安全」选项卡
- 先清理掉不必要的默认权限主体:比如
Everyone、Authenticated Users这些泛用组,只保留Administrators和SYSTEM账户就行 - 点击「编辑」→「添加」,把你要授权的指定网络用户/用户组加进来,给他们分配「读取和写入」的权限,记得勾选「替换子容器和对象的权限」,确保子文件和子目录都继承这个设置,避免遗留旧权限搞出问题
- 划重点:给公网访客用的匿名账户(比如
IUSR),只给它「读取」权限就行,绝对不能给写入,防止安全风险
二、配置IIS身份验证,兼顾两种访问场景
打开IIS管理器,找到目标目录对应的站点或虚拟目录,进入「身份验证」功能:
- 启用「匿名身份验证」:这样知晓哈希URL的公网访客能直接打开文件,把匿名身份的运行身份设置为
IUSR(或者你创建的低权限本地账户) - 启用「Windows身份验证」:给你的指定网络用户用,他们访问目录(比如通过WebDAV或者内部访问)时会触发Windows身份验证,验证通过后才能读写
三、禁用目录浏览,彻底防止文件枚举
绝对不能让任何人通过浏览器看到目录里的文件列表,这一步必须做:
- 在IIS管理器的目标目录中,找到「目录浏览」功能,直接点击右侧的「禁用」
- 也可以在目录下的
Web.config里手动添加配置强化:
<configuration> <system.webServer> <directoryBrowse enabled="false" /> </system.webServer> </configuration>
这样不管是谁访问目录根路径,都会返回403禁止访问,看不到任何文件信息
四、用请求筛选锁死访问范围,只允许哈希格式文件
这一步能确保只有符合你规则的哈希文件名能被访问,其他所有请求全拒绝:
- 进入目标目录的「请求筛选」功能,点击右侧的「添加规则」→「自定义规则」
- 规则名称:
Allow Hashed Files Only - 条件:选择「URL」,匹配类型选「正则表达式」,模式填
^/[a-f0-9]{40}\.(jpg|png|pdf)$(根据你实际的文件扩展名调整,比如要支持更多格式就加在括号里,用竖线分隔) - 操作:选「允许」
- 规则名称:
- 再添加一个拒绝所有其他请求的规则:
- 规则名称:
Deny All Other Requests - 条件:留空(或者设置URL不匹配上面的哈希模式)
- 操作:选「拒绝」,拒绝类型选「403 Forbidden」
这样一来,哪怕有人猜文件名,只要不符合哈希格式,直接被拒
- 规则名称:
五、给指定网络用户配置读写权限(分两种场景)
如果你的网络用户是通过**Windows文件共享(SMB)**读写目录:
- 右键目标目录→「属性」→「共享」选项卡→「高级共享」
- 勾选「共享此文件夹」,设置一个共享名
- 点击「权限」,移除默认的
Everyone,添加你的指定网络用户/组,给他们「完全控制」权限 - 回到「安全」选项卡,确保这些用户已经有对应的NTFS权限(和第一步的设置一致)
如果是通过IIS WebDAV让网络用户读写:
- 先在服务器管理器里安装WebDAV角色服务:「添加角色和功能」→「Web服务器」→「应用程序开发」→勾选「WebDAV发布」
- 在IIS管理器里给目标目录启用WebDAV,然后在「WebDAV授权规则」里添加指定网络用户,允许他们「读取」和「写入」权限,同时禁用匿名用户的WebDAV访问
一些避坑小贴士
- 测试一定要全面:用非指定的网络用户试访问,应该被拒;用指定用户能正常读写;用公网身份访哈希URL能打开,访目录根或非哈希文件名返回403
- 哈希文件名建议用SHA-256以上的算法,生成64位的文件名,进一步降低被暴力猜中的概率
- 定期检查NTFS和IIS权限,避免不小心添加了多余的用户权限
备注:内容来源于stack exchange,提问作者Ministry




