You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

IIS 10权限配置咨询:限制目录访问仅允许指定网络用户及知晓直接URL的访客访问

IIS 10权限配置咨询:限制目录访问仅允许指定网络用户及知晓直接URL的访客访问

嘿,针对你的需求,我给你梳理一套适配IIS 10 + Windows Server 2019的分步配置方案,完全贴合你既要给指定网络用户读写权限,又要让公网仅允许知晓哈希URL的访客访问的要求:

一、先搞定底层NTFS文件权限(核心基础)

这一步是Windows系统层面的权限,必须先配置好,不然IIS权限再严也白搭:

  • 找到目标目录,右键→「属性」→「安全」选项卡
  • 先清理掉不必要的默认权限主体:比如EveryoneAuthenticated Users这些泛用组,只保留AdministratorsSYSTEM账户就行
  • 点击「编辑」→「添加」,把你要授权的指定网络用户/用户组加进来,给他们分配「读取和写入」的权限,记得勾选「替换子容器和对象的权限」,确保子文件和子目录都继承这个设置,避免遗留旧权限搞出问题
  • 划重点:给公网访客用的匿名账户(比如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

火山引擎 最新活动