凌峰创科服务平台

IIS网站访问权限如何正确设置?

  1. NTFS 文件系统权限:操作系统层面的权限,控制用户对网站文件(如 .html, .aspx, .php 等)的读取、写入、执行等操作。
  2. IIS 授权规则:IIS 应用程序层面的权限,控制哪些用户或IP地址可以访问你的网站或应用程序。

核心原则: 严格的权限应该是“最小权限原则”,即只授予完成工作所必需的最小权限。

IIS网站访问权限如何正确设置?-图1
(图片来源网络,侵删)

NTFS 文件系统权限

这是最底层、最根本的权限,如果用户没有NTFS权限,即使IIS允许访问,也无法访问文件。

如何访问

在文件资源管理器中,右键点击你的网站根目录(C:\inetpub\wwwroot\MySite),选择 “属性” -> “安全” 选项卡。

关键用户和组

  • SYSTEM (系统):必须拥有完全控制权限,这是IIS工作进程(如 w3wp.exe)以 SYSTEM 身份运行时需要的,用于读取、写入和执行网站文件。
  • Administrators (管理员组):通常拥有完全控制权限,方便管理员管理文件。
  • IIS_IUSRS (IIS IIS_USRS 组):这是IIS默认的工作进程账户组。必须至少授予“读取和执行”、“列出文件夹内容”、“读取”权限,如果你的网站需要写入文件(如上传图片、生成日志),还需要授予“写入”权限。
  • Users (用户组):这是所有 authenticated (已验证) 用户的默认组,对于大多数公共网站,应仅授予“读取和执行”、“列出文件夹内容”、“读取”权限,绝不授予“写入”权限,除非有特殊需求。
  • Authenticated Users (已验证用户):与 Users 类似,但更明确,通常也只授予读取权限。
  • Everyone (所有人)极其危险! 除非是测试环境,否则绝对不要授予此组任何权限,因为它包括了所有匿名用户和已验证用户,会带来巨大的安全风险。

最佳实践配置

对于大多数静态网站或动态网站(如 ASP.NET, PHP),一个安全的NTFS权限配置如下:

  1. 根目录

    IIS网站访问权限如何正确设置?-图2
    (图片来源网络,侵删)
    • SYSTEM: 完全控制
    • Administrators: 完全控制
    • IIS_IUSRS: 读取和执行、列出文件夹内容、读取
    • UsersAuthenticated Users: 读取和执行、列出文件夹内容、读取
    • (可选)如果你的网站需要用户上传文件,创建一个特定的用户组(如 WebApp_Writers),只授予该组对特定上传目录的“写入”权限,而不是整个网站。
  2. 特定目录

    • 包含可执行脚本的目录(如 bin, cgi-bin
      • SYSTEM, Administrators: 完全控制
      • IIS_IUSRS: 读取和执行
      • Users: 无权限
    • 需要写入的目录(如 uploads, logs
      • SYSTEM, Administrators: 完全控制
      • IIS_IUSRS: 修改 (或 读取和执行、列出文件夹内容、读取、写入)
      • Users: 无权限
    • 包含配置文件的目录(如 App_Data
      • SYSTEM, Administrators: 完全控制
      • IIS_IUSRS: 读取和执行、列出文件夹内容、读取
      • Users: 无权限

IIS 授权规则

IIS 授权规则在IIS管理器中设置,它决定了哪些请求能够到达你的应用程序,这些规则会覆盖NTFS权限中的一些设置,特别是对于匿名用户。

如何访问

打开 IIS 管理器 -> 选择你的网站或应用程序 -> 在 “功能视图” 中双击 “授权规则”

关键规则类型

  • 匿名授权

    IIS网站访问权限如何正确设置?-图3
    (图片来源网络,侵删)
    • 默认启用,它允许任何用户在未提供用户名和密码的情况下访问网站。
    • 匿名用户在IIS中默认映射到 IUSR 账户(在IIS 7及更高版本中,这个账户通常被 IIS_IUSRS 组包含)。
    • 如果你的网站是公开的,必须启用此规则。
    • 如果你的网站需要登录才能访问(如后台管理系统),应该禁用此规则。
  • 已授权用户

    • 允许所有在Windows中拥有有效账户的已验证用户访问。
    • 通常与“ASP.NET impersonation”或“Windows身份验证”结合使用。
  • 角色或用户组

    • 允许特定的Windows用户或用户组访问。
    • 只允许 Administrators 组访问网站的管理页面。
  • 拒绝规则

    • 优先级最高,一旦某个请求匹配了“拒绝”规则,它就会被立即拒绝,不会再检查其他“允许”规则。
    • 最佳实践: 在规则列表的顶部,添加一条“拒绝所有用户”的规则,然后在其下方添加具体的“允许”规则,这样可以确保只有你明确授权的用户才能访问。

最佳实践配置

  1. 公共网站(博客、企业官网等)

    • 确保 “匿名授权” 规则已启用。
    • (可选但推荐)添加一条 “拒绝所有用户” 的规则,并将其拖到最顶部,这样可以创建一个“默认拒绝,明确允许”的安全模型。
  2. 需要登录的网站(如Intranet、管理系统)

    • 禁用 “匿名授权” 规则。
    • 启用 “Windows 身份验证”(在IIS管理器的“身份验证”功能中)。
    • 在“授权规则”中,添加一条允许特定用户或组(如 DOMAIN\YourAppUsers)的规则。

两者关系与排查流程

理解两者的关系至关重要:

请求流程: 用户请求 -> IIS 授权规则检查 -> (如果允许) -> IIS 请求文件 -> NTFS 权限检查 -> (如果允许) -> 返回文件内容

如果访问失败,请按以下步骤排查:

  1. 检查 IIS 授权规则

    • 在IIS管理器中,打开“授权规则”。
    • 确认是否有规则阻止了访问(你忘记为匿名用户或特定IP添加允许规则)。
    • 检查规则顺序,拒绝规则必须在最上方。
  2. 检查 NTFS 权限

    • 确认IIS工作进程账户(IIS_IUSRSSYSTEM)是否有足够的权限来读取和执行请求的文件。
    • 确认请求的文件是否被其他用户锁定。
  3. 检查 IIS 身份验证

    • 在IIS管理器的“身份验证”功能中,确认你启用了正确的身份验证方式。
    • 对于公共网站,匿名身份验证必须启用Windows 身份验证可以禁用
    • 对于内部网站,可以禁用匿名身份验证启用Windows 身份验证
权限类型 作用范围 核心用户/组 安全最佳实践
NTFS 权限 操作系统文件层面 SYSTEM, IIS_IUSRS, Users 遵循最小权限原则,对敏感目录严格限制,避免使用 Everyone
IIS 授权规则 IIS 应用程序访问层面 匿名用户, 已验证用户 默认拒绝,明确允许,公共网站启用匿名,内部网站禁用匿名并启用Windows身份验证。

通过正确配置这两个层面的权限,你可以确保你的IIS网站既能正常提供服务,又能得到最大程度的安全保护。

分享:
扫描分享到社交APP
上一篇
下一篇