IIS

适用范围:Windows IIS 7.5/8/8.5/10,含站点、应用程序池、反向代理和 WebDAV 场景。

不适用标识说明:

  • 使用 【不适用】 明确标记现场可判定为不适用的控制点。
  • 判定依据采用 GB/T 28448-2019 的对象边界原则;IIS 常作为站点容器或代理网关,涉及业务型控制点时应结合站点和上层应用判定。

基础信息

核查命令

  • Get-WindowsFeature Web-Server
  • Get-ItemProperty 'HKLM:\\SOFTWARE\\Microsoft\\InetStp'
  • Get-Website
  • Get-WebAppPoolState -Name *
  • 备注:确认 IIS 版本、站点、应用程序池、绑定、物理路径、证书、日志路径和扩展模块。
  • 预期证据:版本截图、站点列表截图、应用池截图、绑定截图。
示例输出(节选)
Get-Website(节选)
Name      State  PhysicalPath            Bindings
DemoSite  Started C:\inetpub\wwwroot     http *:80:, https *:443:
appcmd list sites
SITE "DemoSite" (id:1,bindings:http/*:80:,https/*:443:,state:Started)
Get-WindowsFeature Web-Server:InstallState=Installed
版本:IIS 10.0(HKLM:\SOFTWARE\Microsoft\InetStp VersionString=10.0.20348)

身份鉴别

A. 管理入口识别

核查命令

Get-WindowsFeature | Where-Object {$_.Name -like 'Web-*' -and $_.InstallState -eq 'Installed'}
  • 备注:管理主要依赖 IIS 管理器、远程管理服务、Web Deploy、站点内认证配置。
  • 预期证据:功能列表截图、远程管理配置截图。
示例输出(节选)
Name   Display Name              Install State
----   -------------             -------------
Web-WebServer                Installed
Web-Asp-Net45                Installed
Web-Mgmt-Console             Installed
(管理控制台仅本机/堡垒机使用,远程管理服务未安装)

B. 认证机制

核查命令

Get-WebConfigurationProperty -Filter /system.webServer/security/authentication/* -Name enabled -PSPath 'IIS:\\'
  • 备注:核查匿名、基本、Windows、摘要、客户端证书等认证方式。
  • 预期证据:认证配置截图、平台材料、访谈记录。
示例输出(节选)
Path                                          enabled
----                                          -------
anonymousAuthentication                       False
basicAuthentication                           False
windowsAuthentication                         False
clientCertificateMappingAuthentication        True
(匿名认证关闭,采用客户端证书映射认证)

C. 登录失败与会话控制

核查命令

Get-WebConfigurationProperty -Filter /system.webServer/security/authentication/anonymousAuthentication -Name enabled -PSPath 'IIS:\\'
  • 备注:IIS 自身不提供完整账户锁定机制,通常依赖 AD、域策略、站点应用或统一认证平台。
  • 【不适用】若站点仅开放匿名访问或仅作反向代理,不存在 IIS 本地人工登录过程,则登录失败锁定和会话超时对 IIS 本体不适用。
  • 预期证据:认证方式截图、域策略或平台材料。
示例输出(节选)
enabled : False
(匿名身份验证已在站点级显式关闭,访问须凭据)

D. 运维鉴别链路

核查命令

Get-ItemProperty 'HKLM:\\SOFTWARE\\Microsoft\\WebManagement\\Server'
  • 备注:远程运维应结合堡垒机、RDP 安全、域账号、VPN、HTTPS 管理链路综合判断。
  • 预期证据:远程管理截图、堡垒机和制度材料。
示例输出(节选)
AllowRemoteManagement : False
WindowsCredentialsOnly : True
RequireWindowsAuthentication : True
(IIS 远程管理服务未启用,管理经 RDP 堡垒机完成)

访问控制

A. 站点与目录权限

核查命令

icacls <站点物理路径>
Get-WebConfiguration -Filter /system.webServer/security/authorization -PSPath 'IIS:\\'
  • 备注:重点核查站点目录 NTFS 权限、授权规则和匿名访问范围。
  • 预期证据:目录权限截图、授权配置截图。
示例输出(节选)
icacls C:\inetpub\wwwroot
NT AUTHORITY\SYSTEM:(OI)(CI)F
IIS_IUSRS:(OI)(CI)RX
(站点目录对应用池标识只读+执行,无写权限)
authorization 规则:allow users="*" roles="AppUsers" 仅限授权路径

B. 管理接口与来源限制

核查命令

Get-WebConfigurationProperty -Filter /system.webServer/security/ipSecurity -Name * -PSPath 'IIS:\\'
  • 备注:管理服务、管理页面和敏感站点应限制来源地址。
  • 预期证据:IP 限制截图、网络 ACL 材料。
示例输出(节选)
collection : {@{ipAddress=192.168.10.0; subnetMask=255.255.255.0; allowed=True},
@{ipAddress=0.0.0.0; subnetMask=0.0.0.0; allowed=False}}
(默认拒绝全部来源,仅放行运维网段)

C. 默认站点与默认页面

核查命令

Get-Website
Get-WebConfigurationProperty -Filter /system.webServer/defaultDocument/files -Name value -PSPath 'IIS:\\'
  • 备注:默认站点、示例页面、未使用站点应清理或停用。
  • 预期证据:站点列表截图、处置说明。
示例输出(节选)
Name      ID   State   Bindings
DemoSite  1    Started http *:80:, https *:443:
defaultDocument files:Default.htm, index.aspx
(默认文档清单收敛,无示例页残留)

D. 应用程序池与运行权限

核查命令

Get-ChildItem IIS:\\AppPools | Select-Object Name, state, processModel
  • 备注:应用程序池身份、权限分离和最小权限是重点。
  • 预期证据:应用池身份截图、权限说明。
示例输出(节选)
Name       State   processModel.userName
DemoPool   Started IdentityType=ApplicationPoolIdentity
(应用池独立标识运行,非高权限账户)

安全审计

A. IIS 日志配置

核查命令

Get-WebConfigurationProperty -Filter /system.applicationHost/sites/siteDefaults/logFile -Name * -PSPath 'IIS:\\'
  • 备注:重点看 W3C 日志、日志字段、日志路径和轮转。
  • 预期证据:日志配置截图、日志目录截图。
示例输出(节选)
directory      : C:\inetpub\logs\LogFiles
period         : Daily
logFormat      : W3C
localTimeRollover : False
enabled        : True
(W3C 扩展格式按日滚动)

B. Windows 日志与管理审计

核查命令

Get-WinEvent -LogName System -MaxEvents 20
Get-WinEvent -LogName Security -MaxEvents 20
  • 备注:IIS 审计应结合 Windows 安全日志、远程管理日志和站点日志综合判断。
  • 预期证据:事件日志截图、IIS 日志样例。
示例输出(节选)
TimeCreated  Id LevelDisplayName Message
8/24/2026 10:12:44 AM 4625  Warning  An account failed to log on.(来源 192.168.8.66)
8/24/2026 10:13:02 AM 4634  Information An account was logged off.
(登录失败事件完整,联动 SIEM 告警)

C. 留存与轮转

核查命令

Get-WebConfigurationProperty -Filter /system.applicationHost/sites/siteDefaults/logFile -Name period -PSPath 'IIS:\\'
  • 备注:需核实保留周期、归档、备份和责任人。
  • 预期证据:配置截图、制度、访谈记录。
示例输出(节选)
period : Daily
(日志按日滚动,配合脚本归档保留 90 天)

D. 集中审计

核查命令

wevtutil gl Security
  • 备注:如日志进入 SIEM、日志平台,应按平台证据确认留存和告警。
  • 预期证据:平台截图、告警截图。
示例输出(节选)
eventname: Security
retentionDays: 90
maxSize: 1073741824
logMode: AutoBackup
(安全日志保留 90 天、自动滚动并转发 SIEM)

数据完整性

A. 配置完整性

核查命令

Get-Content $env:windir\\System32\\inetsrv\\config\\applicationHost.config -TotalCount 80
  • 备注:配置变更应可追溯,站点和应用池变更应有审批或运维记录。
  • 预期证据:配置截图、变更工单、发布记录。
示例输出(节选)
<configuration>
  <system.webServer>
    <security><authentication><windowsAuthentication enabled="true"/></authentication></security>
  </system.webServer>
</configuration>
(applicationHost.config 节选,站点级认证集中管理)

B. 传输完整性

核查命令

Get-WebBinding
netsh http show sslcert
  • 备注:重点看 HTTPS、代理转发和上游完整性设置。
  • 预期证据:绑定截图、证书截图。
示例输出(节选)
protocol bindingInformation host sslFlags
https    *:443:demo.local    demo.local  SNI+中央证书库
netsh http show sslcert(节选)
IP:port 0.0.0.0:443  Certificate Hash: a1b2...  Store Name: MY

数据保密性

A. HTTPS 与证书

核查命令

Get-WebBinding | Where-Object {$_.protocol -eq 'https'}
certutil -store MY
  • 备注:管理面和敏感站点应优先启用 HTTPS。
  • 预期证据:HTTPS 绑定截图、证书截图。
示例输出(节选)
protocol bindingInformation sslFlags
https  *:443:demo.local  Sni
certutil -store MY(节选)
================ Certificate 0 ================
Serial Number: 1f2e...
Subject: CN=demo.local, OU=IT, O=demo-org
Issuer: CN=demo-ca
NotAfter: 2027-05-20

B. 敏感配置保护

核查命令

Select-String -Path $env:windir\\System32\\inetsrv\\config\\applicationHost.config -Pattern 'password|secret|userName'
  • 备注:应用池账号、连接串和敏感配置保护应重点核查。
  • 预期证据:脱敏截图、密钥管理说明。
示例输出(节选)
Select-String applicationHost.config(节选)
<application path="/api" applicationPool="DemoPool">
userName="DEMO\svc-app" password="[enc:AesProvider:***]"
(凭据加密存储于配置节,未见明文)

备份恢复

A. 配置备份

核查命令

Get-ChildItem $env:windir\\System32\\inetsrv\\backup
  • 备注:IIS 提供配置备份目录,可结合系统备份、站点文件备份一起核查。
  • 预期证据:备份目录截图、策略说明。
示例输出(节选)
Mode                 LastWriteTime         Length Name
d----          8/1/2026   2:00 AM                backup-20260801
(存在 appcmd 生成的自动备份与手工备份目录)

B. 日志与站点文件备份

核查命令

Get-ChildItem 'C:\\inetpub\\logs\\LogFiles'
  • 备注:站点内容、日志和证书备份应有明确口径。
  • 预期证据:归档截图、访谈记录。
示例输出(节选)
Directory: C:\inetpub\logs\LogFiles
W3SVC1  W3SVC2
(每站点一目录,按日滚动归档至备份服务器)

C. 恢复能力

核查命令

appcmd list backup
  • 备注:可通过配置恢复、站点恢复和系统快照说明恢复能力。
  • 预期证据:恢复手册、演练记录、工单。
示例输出(节选)
BACKUP "backup-20260801" 8/1/2026 2:00 AM
BACKUP "backup-20260725" 7/25/2026 2:00 AM
(appcmd add backup 定期执行,可一键 restore)

剩余信息保护

A. 历史站点与备份残留

核查命令

Get-Website
Get-ChildItem 'C:\\inetpub' -Recurse -ErrorAction SilentlyContinue | Where-Object {$_.Name -match 'bak|old|backup|test'}
  • 备注:测试站点、历史备份目录、旧页面和停用应用应清理。
  • 预期证据:目录截图、清理说明。
示例输出(节选)
Name      ID   State
DemoSite  1    Started
(inetpub 下无 bak/old/test 命名残留文件)

B. 凭据残留

核查命令

Select-String -Path $env:windir\\System32\\inetsrv\\config\\*.config -Pattern 'password|secret|token'
  • 备注:配置和脚本中残留敏感信息应重点核查。
  • 预期证据:脱敏截图、整改说明。
示例输出(节选)
Select-String *.config(节选)
machine.config: (无命中)
web.config: <connectionStrings> 加密为 RSA Protected Configuration Provider
(口令经 aspnet_regiis -pe 加密,无明文 token)

个人信息保护

A. 日志与站点中的个人信息

核查命令

Get-WebConfigurationProperty -Filter /system.applicationHost/sites/siteDefaults/logFile/customFields -Name * -PSPath 'IIS:\\'
  • 备注:应结合站点功能判断是否记录个人信息。
  • 【不适用】若 IIS 仅作反向代理或静态站点,不直接处理个人信息,则该点可判定不适用。
  • 预期证据:日志字段截图、站点说明。
示例输出(节选)
customFields collection:
@{fieldName=X-Real-IP; sourceName=X-Real-IP; sourceType=RequestHeader}
(自定义字段仅记录真实源 IP,不含 Cookie/身份证等字段)

B. 导出与共享控制

核查命令

Get-WebConfigurationProperty -Filter /system.webServer/webdav/authoring -Name enabled -PSPath 'IIS:\\'
  • 备注:WebDAV、文件下载、目录浏览等能力需关注个人信息共享风险。
  • 【不适用】若未启用 WebDAV、目录浏览或文件共享能力,且站点不直接承载个人信息,则该点不适用。
  • 预期证据:功能配置截图、权限说明。
示例输出(节选)
enabled : False
(WebDAV 发布功能整体关闭,无 PUT/DELETE 写入面)

入侵防范

A. 默认站点与敏感功能暴露

核查命令

Get-Website
Get-WebConfigurationProperty -Filter /system.webServer/directoryBrowse -Name enabled -PSPath 'IIS:\\'
  • 备注:重点核查默认站点、目录浏览、WebDAV、测试站点和管理服务暴露情况。
  • 预期证据:站点截图、功能截图、处置说明。
示例输出(节选)
Name      State
DemoSite  Started
enabled : False
(目录浏览关闭,禁止列目录)

B. 危险扩展与执行面

核查命令

Get-WebConfigurationProperty -Filter /system.webServer/handlers/add -Name path -PSPath 'IIS:\\'
  • 备注:关注脚本执行映射、可执行上传目录、危险处理程序和未使用扩展。
  • 预期证据:处理程序截图、目录权限截图、访谈记录。
示例输出(节选)
path
*.aspx  *.ashx  WebDAV(已移除)
(处理器映射收敛,已删除多余调试处理程序)

C. 版本与漏洞风险

核查命令

Get-ItemProperty 'HKLM:\\SOFTWARE\\Microsoft\\InetStp'
  • 备注:需确认 IIS 版本、Windows 补丁和历史漏洞整改情况。
  • 预期证据:版本截图、补丁记录、整改说明。
示例输出(节选)
VersionString : 10.0.20348
SetupMajorVersion : 10
(IIS 10.0,随系统补丁统一更新)

D. 安全防护联动

核查命令

Get-WinEvent -LogName Security -MaxEvents 20
  • 备注:IIS 入侵防范通常依赖主机防护、WAF、Windows 安全审计和日志平台联动。
  • 预期证据:主机防护截图、WAF/日志平台告警、事件日志截图。
示例输出(节选)
TimeCreated  Id LevelDisplayName Message
8/24/2026 10:12:44 AM 4625 Warning An account failed to log on.
8/24/2026 03:11:02 AM 4688 Information Scanner blocked by WAF provider
(失败登录与扫描拦截事件上送安全平台联动封禁)