凌峰创科服务平台

iis网站目录权限如何正确设置?

这个过程可以分为两个层面,两者相辅相成,缺一不可:

iis网站目录权限如何正确设置?-图1
(图片来源网络,侵删)
  1. NTFS 文件系统权限:操作系统级别的权限,是安全的第一道,也是最根本的一道防线。
  2. IIS 网站权限:IIS 应用程序级别的权限,主要控制 IIS 进程本身对网站的访问。

核心原则:最小权限原则

在进行任何权限设置时,请始终牢记 最小权限原则,即只授予完成特定任务所必需的最小权限,不多不少,这样可以最大限度地减少因权限过高导致的安全风险(网站被上传并执行恶意脚本)。


第一步:设置 NTFS 文件系统权限 (最关键)

这是权限设置的核心,NTFS 权限直接控制着谁能访问你的文件。

如何访问权限设置?

在 IIS 管理器中,选中你的网站或某个目录,在右侧的 “操作” 窗格中点击 “编辑权限...”,这会弹出该目录的 “属性” 对话框,并直接定位到 “安全” 选项卡。

关键用户和用户组

你需要关注以下几个核心用户/组:

iis网站目录权限如何正确设置?-图2
(图片来源网络,侵删)
  • SYSTEM (系统):拥有最高权限,通常需要保留此权限,许多系统服务(包括 IIS)都需要它来正常运行和管理文件。
  • Administrators (管理员组):拥有完全控制权,保留此权限方便管理员进行维护。
  • IIS_IUSRS这是 IIS 默认的匿名访问账户组,当用户通过浏览器匿名访问你的网站时,实际上就是以这个组的身份在请求文件。这是权限设置的重点对象。
  • YourServerName\IUSR:在某些旧版本或特定配置的 Windows Server 上,IIS 可能使用一个名为 IUSR 的特定账户,但在现代系统中,推荐使用 IIS_IUSRS 组。
  • Users (用户组):这是所有已登录用户的通用组,需要非常小心地授予此组权限,范围过大会带来安全风险。

标准权限配置(推荐方案)

以下是一个针对不同目录类型的推荐权限配置,请确保 “高级” 设置中的 “从父项继承权限” 是开启的,然后再进行修改。

网站主目录 (C:\inetpub\wwwroot\MySite)

这是网站的根目录,需要非常谨慎地设置权限。

  1. 默认继承:确保权限从父目录继承。
  2. 添加 IIS_IUSRS
    • 点击 “编辑...” -> “添加...” -> 输入 IIS_IUSRS 并检查名称 -> “确定”
    • 选中 IIS_IUSRS,在下方权限列表中,仅勾选 “读取和执行”、“列出文件夹内容”、“读取”
    • 不要勾选 “写入” 或 “完全控制”,除非你的网站有非常特殊的需求(比如一个允许用户上传任意文件的公共网盘),否则绝对不要给匿名用户写入权限。
  3. 添加 SYSTEMAdministrators
    • 这两个组通常已经有完全控制权限,保持默认即可,如果需要,可以将其权限修改为 “完全控制”,方便管理。
  4. 移除不必要的用户
    • 检查用户列表,移除 Users 组(除非你有特殊需求),如果网站必须允许所有登录到服务器的用户访问,再考虑添加 Users 组,并同样只授予“读取”权限。

主目录最终权限列表应大致如下:

  • SYSTEM:完全控制
  • Administrators:完全控制
  • IIS_IUSRS:读取和执行、列出文件夹内容、读取

应用程序临时目录 (C:\inetpub\temp\appPools)

这个目录用于存放 ASP.NET 等技术编译后的临时文件,IIS 应用程序池需要写入权限。

  1. 权限配置
    • SYSTEM:完全控制
    • Administrators:完全控制
    • IIS_IUSRS需要“完全控制”权限,因为 ASP.NET 运行时需要在此目录中创建、修改和删除临时文件。
    • (可选)如果你的应用程序池使用了专用身份,则需授予该身份完全控制权限。

可写目录 (C:\inetpub\wwwroot\MySite\Uploads)

这是专门用于存放用户上传文件的目录。

  1. 权限配置
    • SYSTEM:完全控制
    • Administrators:完全控制
    • IIS_IUSRS需要“读取和执行”、“列出文件夹内容”、“读取”权限(为了让网站能读取并展示已上传的文件)。
    • IIS_IUSRS还需要“写入”权限(为了允许用户上传新文件)。
    • 注意:不要给 IIS_IUSRS “完全控制”权限,因为它包含了“修改”和“删除”权限,这可能带来安全风险,只给“写入”即可,如果应用需要删除文件,则需要“修改”权限。

第二步:设置 IIS 网站权限

NTFS 权限是底层权限,而 IIS 权限是 IIS 这个应用程序的“门卫”,它控制的是 IIS 进程是否“愿意”去读取某个目录。

  1. 如何访问 IIS 权限设置? 在 IIS 管理器中,选中你的网站,在右侧的 “操作” 窗格中点击 “编辑权限...”(注意,这里的“编辑权限”和 NTFS 的不是同一个),这会打开一个简单的对话框。

  2. 权限选项说明

    • 读取:必须勾选,这是网站能提供网页、图片、CSS、JS 等静态文件的基础。
    • 脚本:允许执行脚本(如 ASP, PHP, JSP),如果你的网站包含动态页面,需要勾选此项。
    • 执行:允许执行可执行文件(如 .exe, .bat, .cmd)。强烈建议不要勾选此项,除非你明确知道你需要运行某个特定的程序,这是非常危险的权限,容易导致服务器被控制。
    • 写入:允许客户端(浏览器)向服务器写入文件,文件上传功能。仅在需要上传功能的目录上勾选,并且要非常小心。

IIS 权限的设置规则: IIS 权限是“与”的关系,你勾选了“读取”和“脚本”,IIS 就会读取并执行脚本文件。最终的访问权限是由 IIS 权限和 NTFS 权限共同决定的,并且取两者中更严格的那一个。

示例

  • IIS 权限:勾选了“读取”和“脚本”。
  • NTFS 权限IIS_IUSRS 组只有“读取”权限。

最终用户只能读取文件,无法执行脚本,因为 NTFS 权限不允许执行,IIS 即使想执行也无能为力。


总结与最佳实践

  1. 主目录

    • NTFS: SYSTEM (完全控制), Administrators (完全控制), IIS_IUSRS (读取和执行、列出文件夹内容、读取)。
    • IIS: 勾选 “读取”“脚本”
  2. 上传/数据目录

    • NTFS: SYSTEM (完全控制), Administrators (完全控制), IIS_IUSRS (读取和执行、列出文件夹内容、读取、写入)。
    • IIS: 勾选 “读取”“写入”
  3. 临时目录

    • NTFS: SYSTEM (完全控制), Administrators (完全控制), IIS_IUSRS (完全控制)。
    • IIS: 通常不需要特殊设置,保持默认即可。
  4. 禁用目录浏览

    • 在 IIS 管理器中,选中你的网站,双击 “目录浏览” 功能,在右侧操作中点击 “禁用”,这可以防止用户在访问一个不存在的文件时,看到整个目录的文件列表,避免信息泄露。
  5. 谨慎处理权限继承

    • 如果需要为某个子目录设置特殊的、不同于父目录的权限,可以在该子目录的“安全”选项卡中点击 “高级”,然后取消“从父项继承权限”,选择“仅将权限项目明确应用到这个容器中的对象”,这样新建的文件和文件夹将不会自动继承这些特殊权限,需要手动设置。

通过以上步骤,你可以为你的 IIS 网站建立一个既安全又高效的权限体系。

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