Web安全
基础漏洞
01前端基础【HTML】
02前端基础【CSS】
03后端基础【PHP速通】
04后端基础【PHP面向对象】
05MySQL基础操作
06前后端联动【代码练习】
07SQL注入【1】
07SQL 注入【2】
08SQL注入 Labs
08SQL注入速查表
09XSS
09跨站脚本攻击【XSS】
09XSS Labs
10跨站请求伪造【CSRF】
11服务器端请求伪造【SSRF】
12XML 外部实体注入【XXE】
13代码执行漏洞
14命令执行漏洞
15文件包含漏洞
16文件上传漏洞
17反序列化漏洞
18业务逻辑漏洞
19未授权访问漏洞集合
20跨源资源共享【CORS】
21SSTI模板注入
22并发漏洞
23点击劫持【Clickjacking 】
24请求走私
25路径遍历
26访问控制
27身份验证漏洞
28WebSocket
29Web缓存中毒
30HTTP 主机头攻击
31信息泄露漏洞
32原型污染
33NoSQL注入
API 安全
01web应用程序
02HTTP协议
03API概述
04分类类型
05交换格式
06身份验证
07常见API漏洞
08crAPI靶场
09JWT
10OAuth 2.0身份验证
11GraphQL【1】
11GraphQL【2】
12DVGA靶场
13服务器端参数污染
14API文档
15API Labs
16OAuth Labs
17GraphQL API Labs
18JWT Labs
小程序
小程序抓包
数据库
MySQL
Oracle
MongoDB
Redis
PostgreSQL
SQL server
中间件
Nginx
Apache HTTP Server
IIS
Tomcat
框架
ThinkPHP
Spring
Spring Boot
Django
访问控制
-
+
首页
IIS
 ## 概述 IIS(Internet Information Services,互联网信息服务)是 **微软官方开发的 Web 服务器软件**,仅运行于 Windows 操作系统,是 Windows Server 生态的核心组件之一。其核心定位是为用户提供 HTTP/HTTPS 服务、应用程序托管(如.NET 应用)、媒体流服务及 FTP/FTPS 文件传输服务,同时深度整合 Windows 系统的身份验证、安全策略与开发工具,是企业级 Windows 环境下 Web 服务的首选方案。 官网地址:https://www.iis.net 官网文档地址:https://docs.microsoft.com/iis ## 特点 IIS 的设计完全围绕Windows 生态整合展开,其特点与 Windows 系统的易用性、安全性和开发友好性深度绑定,具体可归纳为以下 5 点: **1. 微软生态深度整合** 原生支持.NET 技术栈:无需额外配置即可托管ASP.NET Web Forms、ASP.NET MVC、.NET Core、Blazor 等微软开发框架的应用,实现 “开发 - 部署 - 调试” 全流程无缝衔接(如 Visual Studio 可直接远程部署到 IIS)。 集成 Windows 系统服务:与 Active Directory(AD,活动目录)、Group Policy(组策略)、Windows Firewall(防火墙)、Windows Defender(杀毒软件)协同工作,例如通过 AD 实现企业内部用户的统一身份验证。 **2. 可视化管理,易用性高** IIS 管理器(IIS Manager):提供图形化界面(GUI),支持通过鼠标操作完成网站创建、端口绑定、SSL 配置、应用池管理等所有核心操作,无需记忆命令行,降低非专业运维人员的学习成本。 远程管理支持:可通过 “远程 IIS 管理” 功能,在本地 Windows 客户端管理远程 Windows Server 上的 IIS 服务,无需直接登录服务器。 **3. 安全机制完善** 多维度身份验证:支持 Windows 身份验证(NTLM/Kerberos)、表单身份验证、匿名身份验证、摘要身份验证等,满足企业内网(需强身份验证)和公网网站(需匿名访问)的不同需求。 原生 SSL/TLS 支持:通过 “服务器证书” 模块可直接导入 / 绑定 SSL 证书(如 Let's Encrypt、企业级 CA 证书),支持 TLS 1.2/1.3(现代加密协议),防止数据传输泄露。 请求筛选与防护:内置 “请求筛选” 功能,可拦截恶意 URL(如包含../的路径遍历攻击)、限制请求大小 / 方法(如禁止 PUT/DELETE 请求),同时支持集成微软的 Web Application Firewall(WAF,Web 应用防火墙)防御 SQL 注入、XSS 等攻击。 **4. 功能可扩展性强** 模块化架构:IIS 的核心功能以 “模块” 形式存在(如HttpLoggingModule负责日志、RewriteModule负责 URL 重写),可通过 “服务器管理器” 按需安装 / 卸载模块(如仅安装 “Web 服务器” 核心模块,或额外添加 “FTP 服务器”“媒体服务” 模块)。 支持 ISAPI 与 CGI:可通过 ISAPI 筛选器(ISAPI Filters)或 CGI(通用网关接口)扩展功能,例如部署 PHP 应用(需安装 CGI 模块 + PHP 运行环境)、自定义请求处理逻辑。 **5. 多媒体与文件服务能力** 流媒体支持:内置 “平滑流式处理(Smooth Streaming)” 功能,可动态调整视频码率以适配用户网络带宽,支持 HLS/DASH 等现代流媒体协议,适合搭建企业视频平台或直播服务。 FTP/FTPS 服务:集成 FTP 服务器功能,支持匿名 / 身份验证访问、文件夹权限控制、FTPS 加密传输,可替代独立 FTP 软件(如 FileZilla Server)。 ## 核心功能 **1. Web 服务核心功能** | 功能项 | 作用与示例 | | ------------------- | ------------------------------------------------------------ | | HTTP/HTTPS 协议支持 | 支持 HTTP/1.1、HTTP/2(提升并发性能)、HTTPS(加密传输),可绑定多个端口(如 80 端口用于 HTTP,443 端口用于 HTTPS)。 | | 虚拟主机(多网站) | 一台服务器可托管多个网站,通过 “主机名”“端口”“IP 地址” 区分(如`www.abc.com`和blog.abc.com共用 80 端口,通过主机名识别)。 | | URL 重写 | 通过 “URL 重写模块” 实现 URL 美化(如`http://abc.com/article?id=123`重写为`http://abc.com/article/123`)、301 重定向(旧域名跳转到新域名)。 | | 静态内容压缩 | 压缩 HTML、CSS、JS、图片等静态资源(Gzip/Brotli 算法),减少网络传输量,提升页面加载速度。 | | 动态内容缓存 | 缓存ASP.NET等动态应用的输出结果(如缓存数据库查询结果),减少服务器重复计算,提升并发能力。 | **2. 应用程序托管功能** 应用池(Application Pool):IIS 的核心隔离机制,每个应用池对应一个独立的进程(w3wp.exe),不同网站可分配到不同应用池 —— 若一个网站崩溃,仅其对应的应用池重启,不影响其他网站。 示例:为 “企业官网” 和 “内部 OA 系统” 分别创建 “WebSitePool” 和 “OAPool”,避免 OA 系统故障导致官网不可用。 多框架支持:原生支持.NET Framework(2.0-4.8)、.NET Core/.NET 5+,可通过 “应用池设置” 指定.NET 版本(如将应用池的 “.NET CLR 版本” 设为 “v4.0” 以运行ASP.NET4.8 应用)。 CGI/ FastCGI 支持:通过 FastCGI 模块部署 PHP 应用(如 PHP 8.0),相比传统 CGI 性能更高,示例:在 IIS 中配置 FastCGI 映射,将.php后缀请求转发给php-cgi.exe处理。 **3. 安全性功能** 身份验证配置: 示例 1:企业内网系统启用 “Windows 身份验证”,用户无需输入密码,直接通过 Windows 登录账号验证; 示例 2:公网博客启用 “匿名身份验证”,允许游客访问,同时对 “后台管理页” 启用 “表单身份验证”(需输入账号密码)。 授权规则:对特定目录设置访问权限,示例:禁止匿名用户访问/admin目录,仅允许 “Domain Admins”(域管理员组)访问。 请求筛选:拦截恶意请求,示例:禁止请求中包含\<script>标签(防御 XSS 攻击),限制单个请求大小不超过 100MB(防止大文件上传攻击)。 **4. 管理与监控功能** 日志管理:记录所有 HTTP 请求的详细信息(时间、客户端 IP、请求 URL、响应状态码、请求大小等),日志格式支持 W3C 扩展日志格式,可用于流量分析、故障排查。 示例:通过分析日志发现 “/login” 页面有大量 401(未授权)请求,可能存在暴力破解尝试。 性能监控:通过 “Windows 性能监视器”(perfmon.msc)监控 IIS 关键指标,如 “当前连接数”“请求队列长度”“应用池 CPU 使用率”,当指标超过阈值时可设置告警(如 CPU 使用率超 90% 时发送邮件通知)。 远程管理:在本地 Windows 10 专业版上安装 “远程 IIS 管理工具”,输入远程服务器 IP 和管理员账号,即可像管理本地 IIS 一样配置远程网站。 ## 适用场景 **微软技术栈开发的应用** 核心场景:托管基于ASP.NET、.NET Core、Blazor 的企业级应用(如 ERP 系统、CRM 系统、内部 OA 系统),因 IIS 对这些框架的原生支持的性能和兼容性最优。 示例:某企业用ASP.NETMVC 开发客户管理系统,部署到 Windows Server 2022 的 IIS 上,通过 AD 实现员工身份验证。** **Windows Server 环境的企业服务** 作为 Windows Server 生态的一部分,IIS 常与其他微软服务器软件配套使用: - 配合SharePoint Server(企业协作平台):IIS 作为 SharePoint 的前端 Web 服务器,处理用户的 HTTP 请求; - 配合Exchange Server(邮件服务器):IIS 提供 OWA(Outlook Web App)服务,用户通过浏览器访问邮箱。 **企业内网系统与内部服务** 企业内网系统(如人事管理系统、文件共享平台)通常需要与 AD 集成实现统一身份验证,IIS 的 Windows 身份验证功能可直接满足这一需求,无需额外开发认证模块。 **需要可视化管理的场景** 对于不熟悉 Linux 命令行、偏好图形化操作的运维人员,IIS 管理器的 GUI 界面可大幅降低运维成本(如快速创建网站、配置 SSL 证书)。 ## 不适用场景 **跨平台部署需求** IIS 仅支持 Windows 系统,若应用需要部署到 Linux(如 CentOS、Ubuntu)或 macOS,需选择 Nginx、Apache 等跨平台 Web 服务器。 **超高并发的公网 Web 服务** 对于日均 PV 超 1000 万的高并发场景(如电商平台、短视频网站),IIS 的资源占用(内存、CPU)通常高于 Nginx,且在处理静态资源(如图片、视频)的并发性能上稍弱,更适合用 Nginx 作为前端反向代理,IIS 作为后端应用服务器。 **开源技术栈主导的项目** 若应用基于 PHP(非 Windows 优化版)、Python(Django/Flask)、Node.js 开发,在 Linux+Nginx/Apache 环境下的兼容性和性能更优,IIS 需额外配置 FastCGI 或反向代理,复杂度较高。 ## 优劣势 **优势** | 优势点 | 详细说明 | | -------------------- | ------------------------------------------------------------ | | 微软生态兼容性极强 | 与.NET 技术栈、Windows Server、AD、Visual Studio 等无缝整合,开发部署效率高,适合微软技术主导的团队。 | | 易用性高,运维成本低 | 图形化的 IIS 管理器降低学习门槛,运维人员无需记忆复杂命令,可快速完成网站配置、SSL 绑定等操作。 | | 安全性集成度高 | 原生支持 Windows 身份验证、SSL/TLS、请求筛选,且与 Windows 防火墙、Defender 协同,减少安全配置复杂度。 | | 官方支持与稳定性强 | 作为微软官方软件,可获得微软技术支持(如 MSDN 文档、企业级服务),且与 Windows 系统更新同步,稳定性有保障。 | | 功能全面,一站式服务 | 内置 Web、FTP、流媒体服务,无需额外安装多个软件即可满足企业多场景需求(如同时提供网站和 FTP 文件下载服务)。 | **劣势** | 劣势点 | 详细说明 | | -------------------- | ------------------------------------------------------------ | | 跨平台能力缺失 | 仅支持 Windows 系统,无法部署到 Linux/macOS,限制了混合架构(Windows+Linux)环境的使用。 | | 资源占用较高 | 相比 Nginx(轻量级),IIS 的核心进程(w3wp.exe)内存占用更大,在低配置服务器(如 1 核 2G)上性能表现一般。 | | 高并发场景性能不足 | 处理静态资源(如图片、JS)的并发能力弱于 Nginx,在高并发公网场景下需搭配 Nginx 反向代理优化。 | | 开源生态兼容性较弱 | 对 PHP、Python 等开源语言的支持需额外配置(如 FastCGI),且部分开源框架(如 Laravel)在 IIS 上的优化不如 Linux 环境。 | | 许可成本(企业场景) | 虽然 IIS 本身免费(随 Windows 系统附带),但 Windows Server 的企业版许可费用较高,相比 Linux(免费)增加了硬件之外的成本。 | ## 目录结构 IIS 的目录结构严格遵循 Windows 系统的规范,核心目录分为 “系统核心目录” “网站文件目录” “配置文件目录” “日志目录” 四类,路径固定(可自定义部分目录)。 **1. 系统核心目录(IIS 程序与模块)** 路径:C:\Windows\System32\inetsrv\ 该目录存放 IIS 的核心程序、模块和工具,关键文件 / 子目录如下: | 文件 / 目录名 | 作用 | | ------------- | ------------------------------------------------------------ | | InetMgr.exe | IIS 管理器的启动程序(双击即可打开图形化管理界面)。 | | config/ | IIS 的核心配置文件目录。 | | modules/ | IIS 的模块文件目录(如rewrite.dll是 URL 重写模块,ssl.dll是 SSL 模块)。 | | appcmd.exe | IIS 的命令行工具(用于通过命令行管理 IIS,如创建网站、配置应用池)。 | **2. 网站文件目录(默认与自定义)** 默认网站目录:C:\inetpub\wwwroot\ IIS 安装后默认创建 “默认网站”,其物理路径指向该目录,示例:将index.html放入该目录,访问http://localhost即可看到页面。 自定义网站目录:可在创建网站时指定任意路径(如D:\WebSites\CompanySite),建议将网站文件放在非系统盘(如 D 盘),避免系统盘损坏导致网站数据丢失。 **3. 配置文件目录** IIS 的配置文件分为 “全局配置文件” 和 “应用级配置文件”,采用 XML 格式存储。 > 全局配置文件(applicationHost.config) 路径:C:\Windows\System32\inetsrv\config\applicationHost.config 作用:存储 IIS 的全局配置,包括所有网站、应用池、模块、SSL 证书绑定等信息,是 IIS 最核心的配置文件(修改前需备份)。 > 应用级配置文件(web.config) 作用:存储单个网站或目录的局部配置,优先级高于applicationHost.config(即局部配置会覆盖全局配置),通常位于网站的物理路径下(如C:\inetpub\wwwroot\web.config)。 适用场景:为单个网站配置自定义错误页面、身份验证方式、连接字符串(数据库配置)等。 **4. 日志目录** 默认路径:C:\inetpub\logs\LogFiles\ 结构:按 “网站 ID” 分目录存储(如 “默认网站” ID 为 1,日志目录为W3SVC1),日志文件命名格式为u_exYYYYMMDD.log(如u_ex20240520.log表示 2024 年 5 月 20 日的日志)。 日志内容示例(W3C 格式): ```text #Software: Microsoft Internet Information Services 10.0 #Version: 1.0 #Date: 2024-05-20 08:30:15 #Fields: date time s-ip cs-method cs-uri-stem cs-uri-query s-port cs-username c-ip cs(User-Agent) cs(Referer) sc-status sc-substatus sc-win32-status time-taken 2024-05-20 08:30:15 192.168.1.100 GET /index.html - 80 - 192.168.1.200 Mozilla/5.0... - 200 0 0 123 ``` 字段说明:s-ip(服务器 IP)、cs-method(请求方法,如 GET)、cs-uri-stem(请求路径,如 /index.html)、sc-status(响应状态码,如 200 表示成功)、c-ip(客户端 IP)。 ## config/ config/ 目录下的文件以 **XML 格式** 为主,核心文件仅 3-5 个,决定了 IIS 服务器的全部运行规则。 **1. 全局配置核心:applicationHost.config** applicationHost.config 是 IIS 最核心的配置文件,定义了 服务器级全局配置,包括所有站点、应用程序池、模块、 handler 映射等,是 IIS 启动时首先加载的配置文件。 核心功能: - 管理所有 IIS 站点(站点名称、绑定端口、物理路径、状态等); - 配置应用程序池(池名称、.NET 版本、托管模式、回收规则等); - 注册 IIS 模块(如 URL 重写模块、GZip 压缩模块)和 handler(如处理 ASP.NET、PHP 的请求处理器); - 定义服务器级的默认规则(如默认文档、错误页、MIME 类型)。 **2. 架构定义文件:schema/ 子目录** config/ 目录下包含 schema/ 子目录,用于存储 IIS 配置的 XML 架构文件(.xsd),定义了 applicationHost.config、web.config 等文件的语法规则(如允许的标签、属性、数据类型)。 核心作用: - 确保配置文件的语法合法性(如 applicationPool 标签必须包含 name 属性); - 为编辑器(如 VS Code)提供语法提示和校验; - 不同 IIS 模块(如 URL 重写、压缩)会在 schema/ 中添加自定义架构文件(如 rewrite.xsd)。 常见架构文件: - IIS_Schema.xml:IIS 核心配置的基础架构; - rewrite.xsd:URL 重写模块的配置架构; - system.applicationHost.xsd:应用程序池、站点配置的架构。 **3. 加密配置文件:redirection.config** redirection.config 是一个小型配置文件,主要用于 指定 IIS 配置的存储位置(默认无需修改),并支持加密敏感配置(如数据库连接字符串)。 **4. 备份配置:applicationHost.config.backup** IIS 会自动在 config/ 目录下生成 applicationHost.config 的备份文件(如 applicationHost.config.backup、applicationHost.config.bak_20240501),用于: - 当 applicationHost.config 配置错误导致 IIS 无法启动时,可删除原文件,将备份文件重命名为 applicationHost.config 恢复; - 手动修改配置前,建议先复制 applicationHost.config 为备份文件(如 applicationHost.config.manualbak)。 > 分层机制 IIS 的配置遵循 **“自上而下继承,自下而上覆盖”** 原则,config/ 目录的 applicationHost.config 是 “顶层配置”,后续层级的配置可覆盖顶层规则。 | 配置层级 | 配置文件位置 | 作用范围 | 与 config/ 目录的关系 | | ----------- | ----------------------------- | -------------------------- | --------------------------------------------- | | 1. 服务器级 | config/applicationHost.config | 整个 IIS 服务器 | 顶层配置,所有站点 / 应用默认继承此处规则 | | 2. 站点级 | 站点根目录下的 web.config | 单个站点 | 可覆盖服务器级配置(如站点专属的默认文档) | | 3. 应用级 | 应用子目录下的 web.config | 单个应用(站点内的子应用) | 可覆盖站点级配置(如应用专属的 handler 映射) | | 4. 目录级 | 具体目录下的 web.config | 单个目录(如 /static) | 可覆盖应用级配置(如目录专属的权限控制) | 示例:默认文档的分层覆盖 - 服务器级(applicationHost.config)默认文档:index.html, Default.aspx; - 站点级(D:\www\MySite\web.config)覆盖为:index.php, index.html; - 目录级(D:\www\MySite\admin\web.config)覆盖为:login.php, index.php; - 最终访问 `http://mysite.local/admin/ `时,IIS 会优先查找 login.php。 > 权限配置 config/ 目录存储 IIS 核心配置,权限不当会导致 IIS 无法启动或配置被篡改。默认权限设置如下: | 用户 / 组 | 权限类型 | 作用 | | --------------------------- | ----------------------------- | --------------------------------- | | Administrators(管理员组) | 完全控制(Full Control) | 允许修改所有配置文件 | | IIS_IUSRS(IIS 应用用户组) | 读取 & 执行(Read & Execute) | 允许 IIS 服务读取配置(无修改权) | | SYSTEM(系统账户) | 完全控制(Full Control) | 系统级权限,确保 IIS 服务正常访问 | 注意:禁止给普通用户(如 Users 组)分配 config/ 目录的权限,避免配置泄露或被篡改。
毛林
2025年9月12日 20:54
转发文档
收藏文档
上一篇
下一篇
手机扫码
复制链接
手机扫一扫转发分享
复制链接
Markdown文件
PDF文档(打印)
分享
链接
类型
密码
更新密码