Windows 服务器安全配置 综合实验
Windows 服务器安全配置 综合实验
Section titled “Windows 服务器安全配置 综合实验”适用课程:信息安全 / 网络与系统管理 适用系统:Windows Server 2019 / 2022 / 2025(2016 操作基本一致;2025 的”设置”入口布局与 Defender 配置方式见任务八适配说明) 操作方式:优先图形界面(GUI)操作,部分验证步骤辅以命令行 建议学时:4 ~ 6 学时
一、实验目的
Section titled “一、实验目的”- 理解 Windows 服务器面临的主要安全风险(弱口令、暴力破解、越权访问、远程入侵等)。
- 掌握使用 本地安全策略(secpol.msc)、组策略编辑器(gpedit.msc)、计算机管理(compmgmt.msc) 等图形化工具加固服务器的方法。
- 能够独立完成账户、密码、审核、防火墙、服务、权限、远程桌面等核心安全配置。
- 掌握 IIS Web 服务器的安全加固方法(最小化安装、目录与执行权限、请求过滤、身份验证隔离、HTTPS 与日志)。
- 学会通过日志和验证手段检验安全配置是否生效。
二、实验环境
Section titled “二、实验环境”| 项目 | 说明 |
|---|---|
| 虚拟化软件 | VMware Workstation / Hyper-V / VirtualBox 任选其一 |
| 服务器系统 | Windows Server 2019 / 2022(1 台) |
| 测试客户端 | Windows 10 / 11 或另一台服务器(1 台,用于验证远程访问) |
| 网络模式 | 两台虚拟机置于同一网段(如 NAT 或仅主机 Host-Only) |
| 账户权限 | 使用本地 Administrator 或具有管理员权限的账户登录 |
实验前准备:建议先对服务器虚拟机创建一个”快照(Snapshot)“,命名为”实验前-初始状态”,以便实验出错后快速回滚。
三、常用安全管理工具速查
Section titled “三、常用安全管理工具速查”| 工具名称 | 运行命令 | 打开方式(GUI) |
|---|---|---|
| 本地安全策略 | secpol.msc | 开始 → 运行 → 输入命令 |
| 组策略编辑器 | gpedit.msc | 开始 → 运行 → 输入命令 |
| 计算机管理 | compmgmt.msc | 右键”此电脑” → 管理 |
| 本地用户和组 | lusrmgr.msc | 计算机管理 → 本地用户和组 |
| 服务管理 | services.msc | 开始 → 运行 → 输入命令 |
| 事件查看器 | eventvwr.msc | 计算机管理 → 事件查看器 |
| 防火墙高级设置 | wf.msc | 控制面板 → 系统和安全 → 防火墙 |
| IIS 管理器 | inetmgr | 服务器管理器 → 工具 → Internet Information Services (IIS) 管理器 |
提示:按
Win + R打开”运行”对话框,输入上表命令即可快速打开对应的图形化管理工具。
实验任务一 账户与密码安全策略配置
Section titled “实验任务一 账户与密码安全策略配置”安全风险:默认账户名已知、口令过于简单,极易被暴力破解或字典攻击。
任务 1.1 设置密码安全策略
Section titled “任务 1.1 设置密码安全策略”操作步骤(GUI):
- 按
Win + R,输入secpol.msc,回车,打开 “本地安全策略” 窗口。 - 在左侧依次展开:账户策略 → 密码策略。
- 在右侧逐项双击进行设置,建议值如下:
| 策略项 | 建议设置值 | 说明 |
|---|---|---|
| 密码必须符合复杂性要求 | 已启用 | 须包含大小写字母、数字、特殊符号中的 3 类 |
| 密码长度最小值 | 8 个字符(建议 ≥12) | 防止短口令 |
| 密码最长使用期限 | 30 ~ 90 天 | 强制定期更换 |
| 密码最短使用期限 | 1 天 | 防止用户连续改密绕过历史限制 |
| 强制密码历史 | 5 个(记住的密码数) | 防止重复使用旧密码 |
- 每项设置后点击 “应用” → “确定”。
验证方法:尝试将某用户密码改为 123,系统应提示”密码不满足复杂性要求”,说明策略生效。
任务 1.2 配置账户锁定策略(防暴力破解)
Section titled “任务 1.2 配置账户锁定策略(防暴力破解)”操作步骤(GUI):
- 在”本地安全策略”中展开:账户策略 → 账户锁定策略。
- 按下表设置:
| 策略项 | 建议设置值 | 说明 |
|---|---|---|
| 账户锁定阈值 | 5 次无效登录 | 连续输错 5 次即锁定 |
| 账户锁定时间 | 30 分钟 | 锁定后自动解锁的等待时间 |
| 重置账户锁定计数器 | 30 分钟 | 计数清零的时间窗口 |
设置”账户锁定阈值”时会弹出提示,建议将锁定时间和复位时间一并设为 30 分钟,点击”确定”自动应用。
Windows Server 2025 适配提示:较新版本(Win11 22H2+ / Server 2022 含更新 / Server 2025)账户锁定策略默认已启用,阈值通常为 10 次、锁定时长约 10 分钟,因此打开策略时会看到已有默认值而非空值,可在其基础上调到本表建议的 5 次即可。
(加分项)允许内置管理员账户被锁定:在”账户锁定策略”中可看到 “允许管理员账户锁定”(对应安全策略项 AllowAdministratorAccountLockout,自 2022‑10 更新 KB5020282 起可用)。默认情况下内置 Administrator 被排除在锁定之外,建议启用该项,使管理员账户同样受暴力破解保护。
验证方法:注销后,故意输错某账户密码 5 次,第 6 次应提示”账户已被锁定”。
任务 1.3 重命名/禁用内置高危账户
Section titled “任务 1.3 重命名/禁用内置高危账户”操作步骤(GUI):
- 按
Win + R,输入compmgmt.msc打开 计算机管理。 - 展开:系统工具 → 本地用户和组 → 用户。
- 重命名管理员账户:右键
Administrator→ 重命名,改为不易猜测的名称(如SecAdmin01)。 - 禁用来宾账户:右键
Guest→ 属性,勾选 “账户已禁用” → 确定。 - (可选加固)创建一个名为
Administrator的**普通权限”陷阱账户”**并禁用其登录,用于迷惑攻击者。
也可在”本地安全策略 → 本地策略 → 安全选项”中通过 “账户:重命名系统管理员账户” 和 “账户:重命名来宾账户” 进行重命名。
验证方法:在”本地用户和组”中确认 Guest 账户图标带有向下箭头(表示已禁用),Administrator 名称已更改。
实验任务二 用户权限与安全选项配置
Section titled “实验任务二 用户权限与安全选项配置”安全风险:权限分配不当导致越权操作;登录信息泄露便于攻击者社工。
任务 2.1 用户权限分配
Section titled “任务 2.1 用户权限分配”操作步骤(GUI):
- 打开
secpol.msc→ 展开:本地策略 → 用户权限分配。 - 按下表进行核查与配置(双击策略项 → 添加/删除用户或组):
| 策略项 | 建议配置 | 目的 |
|---|---|---|
| 从网络访问此计算机 | 仅保留必要组,移除 Everyone | 减少网络暴露面 |
| 拒绝从网络访问此计算机 | 添加 Guest、匿名等 | 阻断匿名网络访问 |
| 允许通过远程桌面服务登录 | 仅保留 Administrators 和指定运维组 | 限制可远程登录的人员 |
| 关闭系统 | 仅 Administrators | 防止普通用户关机 |
- 设置后点击”应用 → 确定”。
任务 2.2 安全选项加固
Section titled “任务 2.2 安全选项加固”操作步骤(GUI):
- 在
secpol.msc中展开:本地策略 → 安全选项。 - 按下表设置关键项:
| 安全选项 | 建议值 | 说明 |
|---|---|---|
| 交互式登录:不显示最后的用户名 | 已启用 | 隐藏上次登录账户名 |
| 交互式登录:试图登录的用户的消息标题 | 填写”安全警告” | 登录前法律告知横幅 |
| 交互式登录:试图登录的用户的消息文本 | 填写警示语 | 同上 |
| 网络访问:不允许 SAM 账户的匿名枚举 | 已启用 | 防止匿名枚举账户 |
| 网络访问:不允许 SAM 账户和共享的匿名枚举 | 已启用 | 防止匿名枚举共享 |
| 关机:允许系统在未登录前关闭 | 已禁用 | 关闭登录界面关机按钮 |
- 逐项设置后”应用 → 确定”。
验证方法:注销后重新进入登录界面,应不再显示上次登录用户名,并显示自定义的安全警告横幅。
实验任务三 审核策略与安全日志
Section titled “实验任务三 审核策略与安全日志”安全风险:缺少审计日志,入侵行为无法追溯。
任务 3.1 配置审核策略
Section titled “任务 3.1 配置审核策略”操作步骤(GUI):
- 打开
secpol.msc→ 展开:本地策略 → 审核策略。 - 按下表双击各项,勾选 “成功” 和 “失败”:
| 审核项 | 成功 | 失败 | 监控目的 |
|---|---|---|---|
| 审核登录事件 | ✔ | ✔ | 监控本地/远程登录尝试 |
| 审核账户登录事件 | ✔ | ✔ | 监控账户验证 |
| 审核账户管理 | ✔ | ✔ | 监控账户增删改 |
| 审核策略更改 | ✔ | ✔ | 监控安全策略被修改 |
| 审核对象访问 | ✔ | ✔ | 配合 NTFS 审计文件访问 |
| 审核特权使用 | — | ✔ | 监控权限滥用 |
- 设置完成后”应用 → 确定”。
任务 3.2 配置安全日志大小与留存
Section titled “任务 3.2 配置安全日志大小与留存”操作步骤(GUI):
- 按
Win + R输入eventvwr.msc打开 事件查看器。 - 展开:Windows 日志 → 安全,右键 → 属性。
- 设置 “日志最大大小” 为较大值(如 102400 KB ≈ 100 MB)。
- 留存方式选择 “按需要改写事件(旧事件优先)” 或”归档已满日志,不改写”。
- 点击”确定”。
验证方法:故意输错密码登录一次,在”安全”日志中应能查到 事件 ID 4625(登录失败);成功登录则记录 事件 ID 4624。
实验任务四 Windows Defender 防火墙配置
Section titled “实验任务四 Windows Defender 防火墙配置”安全风险:开放端口过多,扩大攻击面。
任务 4.1 启用防火墙并设置默认策略
Section titled “任务 4.1 启用防火墙并设置默认策略”操作步骤(GUI):
- 按
Win + R输入wf.msc打开 “高级安全 Windows Defender 防火墙”。 - 右键左上角 “本地计算机上的高级安全 Windows Defender 防火墙” → 属性。
- 分别在”域配置文件""专用配置文件""公用配置文件”选项卡中:
- 防火墙状态:启用
- 入站连接:阻止(默认)
- 出站连接:允许(默认)
- 点击”确定”。
任务 4.2 创建入站规则(按需放行端口)
Section titled “任务 4.2 创建入站规则(按需放行端口)”操作步骤(GUI):
- 在
wf.msc左侧点击 “入站规则” → 右侧点击 “新建规则”。 - 规则类型选择 “端口” → 下一步。
- 选择 TCP,特定本地端口填写需放行的端口(如
3389远程桌面、80,443Web)→ 下一步。 - 选择 “允许连接” → 下一步。
- 勾选适用的配置文件(域/专用/公用)→ 下一步。
- 输入规则名称(如”允许-RDP-3389”)→ 完成。
加固建议:对远程桌面规则可点击”属性 → 作用域”,在”远程 IP 地址”中限定为运维管理机的 IP,仅允许特定来源访问。
验证方法:在测试客户端用 telnet 服务器IP 3389 或浏览器访问,确认放行端口可通、未放行端口被拒。
实验任务五 系统服务安全加固
Section titled “实验任务五 系统服务安全加固”安全风险:开启不必要的服务会引入漏洞(如老旧的 Telnet、SNMP 等)。
任务 5.1 关闭高危/无用服务
Section titled “任务 5.1 关闭高危/无用服务”操作步骤(GUI):
- 按
Win + R输入services.msc打开 服务管理器。 - 找到不需要的服务,右键 → 属性,将 “启动类型” 改为 “禁用”,并点击 “停止”。
- 常见可评估关闭的服务(须结合实际业务判断,不可盲目关闭):
| 服务名称 | 说明 | 建议 |
|---|---|---|
| Telnet | 明文传输,极不安全 | 禁用 |
| Print Spooler | 打印服务(非打印服务器) | 评估后禁用(防 PrintNightmare) |
| Remote Registry | 远程修改注册表 | 禁用 |
| SNMP Service | 简单网络管理(默认弱口令) | 评估后禁用 |
| Server(如无文件共享需求) | 文件/打印共享 | 谨慎评估 |
- 设置后”应用 → 确定”。
注意:禁用服务前务必确认其不影响业务,建议在快照保护下操作。
Windows Server 2025 提示:
Telnet、SNMP Service等属于可选功能,默认可能根本未安装,因此在services.msc列表中找不到时属正常现象——本就未安装即无需(也无法)禁用,可改用”添加/删除功能”确认其未启用即可。Print Spooler、Remote Registry、Server等通常默认存在,可按上表评估关闭。
验证方法:服务列表中对应服务”状态”应为空(已停止),“启动类型”为”禁用”。
实验任务六 NTFS 权限与共享安全
Section titled “实验任务六 NTFS 权限与共享安全”安全风险:共享权限过松(如 Everyone 完全控制)导致数据泄露或被篡改。
任务 6.1 配置 NTFS 文件夹权限
Section titled “任务 6.1 配置 NTFS 文件夹权限”操作步骤(GUI):
- 新建测试文件夹,如
D:\ShareData。 - 右键文件夹 → 属性 → “安全” 选项卡 → “编辑”。
- 选中
Everyone组 → 点击 “删除”(移除过松权限)。 - 点击 “添加” → 输入指定用户/组(如
Users或某部门组)→ 确定。 - 为该组按需勾选权限(如仅”读取和执行""列出文件夹内容”),避免授予”完全控制”。
- 点击”应用 → 确定”。
关闭权限继承(精细化控制时):在”安全 → 高级”中点击”禁用继承 → 将已继承的权限转换为此对象的显式权限”,再逐项调整。
任务 6.2 配置共享权限
Section titled “任务 6.2 配置共享权限”操作步骤(GUI):
- 文件夹 属性 → “共享” 选项卡 → “高级共享”。
- 勾选 “共享此文件夹”,可点击”权限”按钮。
- 在共享权限中移除 Everyone,添加指定用户并赋予最小必要权限(读取/更改)。
- 点击”确定”。
最小权限原则:实际访问权限 = NTFS 权限与共享权限的交集(取最严格者)。
验证方法:在测试客户端用 \\服务器IP\ShareData 访问,验证授权用户可访问、未授权用户被拒绝、只读用户无法写入。
实验任务七 远程桌面(RDP)安全配置
Section titled “实验任务七 远程桌面(RDP)安全配置”安全风险:默认 3389 端口 + 弱口令是被入侵的高发途径。
任务 7.1 启用网络级别身份验证(NLA)
Section titled “任务 7.1 启用网络级别身份验证(NLA)”操作步骤(GUI):
- 右键 “此电脑” → 属性 → “远程设置”(或 设置 → 系统 → 远程桌面)。
- 选择 “仅允许运行使用网络级别身份验证的远程桌面的计算机连接(更安全)”。
- 点击 “选择用户”,仅添加必要的运维账户,移除多余用户。
- 点击”确定”。
任务 7.2 限制可登录用户与会话
Section titled “任务 7.2 限制可登录用户与会话”操作步骤(GUI,组策略):
- 打开
gpedit.msc→ 依次展开: 计算机配置 → 管理模板 → Windows 组件 → 远程桌面服务 → 远程桌面会话主机。 - 在 “会话时间限制” 中,可启用”达到时间限制时断开会话""空闲会话限制”等。
- 在 “安全” 中可启用 “要求使用特定的安全层进行远程(RDP)连接” 并选择 “RDP 安全层” 或 “协商”(配合 NLA 使用)。
Windows Server 2025 提示:旧版教材常建议选 “SSL(TLS 1.0)“,但 TLS 1.0 已属淘汰协议。Server 2025 默认启用 NLA 并支持 TLS 1.2/1.3,建议保留 NLA + 协商,不要显式降级到 TLS 1.0。
任务 7.3 (进阶)修改远程桌面端口
Section titled “任务 7.3 (进阶)修改远程桌面端口”修改端口属于注册表操作,可降低被自动化扫描命中的概率。为选做项,操作前请做好快照。
- 按
Win + R输入regedit打开注册表编辑器。 - 定位到:
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Terminal Server\WinStations\RDP-Tcp - 双击 PortNumber,选择”十进制”,改为非默认端口(如
13389)→ 确定。 - 在防火墙中新增对应端口的入站规则(见任务四),并删除/调整原 3389 规则。
- 重启服务器或重启”Remote Desktop Services”服务后生效。
验证方法:从测试客户端使用”远程桌面连接(mstsc)“以 服务器IP:新端口 形式连接,确认 NLA 生效(连接前即要求输入凭据)。
实验任务八 系统更新与防病毒
Section titled “实验任务八 系统更新与防病毒”安全风险:未打补丁的系统易被已知漏洞利用;无防病毒易被恶意软件感染。
任务 8.1 配置 Windows Update
Section titled “任务 8.1 配置 Windows Update”操作步骤(GUI):
- 打开 设置 → Windows 更新。
Windows Server 2025 适配提示:旧版的 “更新和安全” 大类已被拆分,“Windows 更新” 现在是”设置”中的顶级项(不再嵌套在”更新和安全”下)。Server 2025 还支持经 Windows Update 就地升级(opt-in),普通打补丁流程不受影响。
- 点击 “检查更新”,安装重要安全更新。
- 点击 “高级选项”,设置自动下载安装、配置活动时间避免业务中断重启。
任务 8.2 配置 Windows Defender 防病毒
Section titled “任务 8.2 配置 Windows Defender 防病毒”Windows Server 2025 重点提示:服务器版与客户端不同——“Windows 安全中心”(SecurityHealthService / wscsvc)默认不一定可用,Defender 引擎(
WinDefend)可能在后台运行却没有图形界面。因此本任务给出两条路径:优先用图形界面(需先安装 GUI 功能),或直接用 PowerShell 管理(服务器版最稳妥)。
路径 A — 启用并使用图形界面(Windows 安全中心):
- 先以管理员身份打开 Windows PowerShell,安装 Defender 及其 GUI 功能(也可通过”服务器管理器 → 添加角色和功能”勾选同名功能):
安装后重启服务器,开始菜单才会出现”Windows 安全中心”。
Terminal window Install-WindowsFeature -Name Windows-Defender, Windows-Defender-GUI - 打开 “Windows 安全中心”(设置 → 隐私和安全性 → Windows 安全中心;或运行
windowsdefender:),进入 “病毒和威胁防护”:- 确认 “实时保护""云提供的保护""自动提交样本” 均已开启。
- 点击 “快速扫描” 进行一次扫描。
- 在 “病毒和威胁防护设置” 中确认定义库为最新(可手动”检查更新”)。
路径 B — PowerShell 命令行管理(推荐用于 Server 2025 / Server Core):
# 查看运行状态(实时保护、定义库最后更新时间等)Get-MpComputerStatus | Select-Object AMRunningMode, RealTimeProtectionEnabled, AntivirusSignatureLastUpdated
# 确保实时保护开启Set-MpPreference -DisableRealtimeMonitoring $false
# 更新病毒定义库Update-MpSignature
# 执行一次快速扫描Start-MpScan -ScanType QuickScan若服务器安装了第三方杀毒软件,则以第三方软件策略为准,避免冲突。 另注:Microsoft Defender for Endpoint 对 Windows Server 2025 的完整支持自 2025 年 2 月起逐步铺开。
实验任务九 IIS Web 服务器安全配置
Section titled “实验任务九 IIS Web 服务器安全配置”安全风险:Web 服务器直接面向网络,是攻击面最大的服务之一。默认或配置不当的 IIS 常见风险包括:开启目录浏览导致目录结构与文件暴露、响应头泄露服务器版本(Server: Microsoft-IIS/10.0、X-Powered-By: ASP.NET)便于攻击者信息收集与精准利用、上传目录允许脚本执行从而被上传 Webshell、仅使用明文 HTTP 致凭据与数据被嗅探、错误页返回详细堆栈、日志字段不全无法溯源等。
本任务前置说明:IIS(Internet Information Services)是 Windows Server 自带的 Web 服务器角色。以下操作以 IIS 管理器(
inetmgr) 图形界面为主。若实验环境中服务器尚未安装 IIS,请先完成任务 9.1。
任务 9.1 安装 IIS 并最小化功能组件
Section titled “任务 9.1 安装 IIS 并最小化功能组件”操作步骤(GUI):
- 打开 服务器管理器 → 右上角 “管理” → “添加角色和功能”,一路”下一步”到 “服务器角色”。
- 勾选 “Web 服务器 (IIS)“,弹出”添加功能”提示时点击”添加功能”。
- 在 “角色服务” 步骤按”最小化安装”原则精简勾选(注意下表高危项默认可能已勾选):
| 角色服务 | 建议 | 说明 |
|---|---|---|
| 常见 HTTP 功能 → 目录浏览 | 取消勾选 | 防止列目录暴露文件 |
| 常见 HTTP 功能 → WebDAV 发布 | 不勾选 | WebDAV 常被用于上传攻击,非必要不装 |
| 应用程序开发 → ASP.NET 4.x | 按需勾选 | 仅在需要运行 .NET 应用时安装 |
| FTP 服务器 | 不勾选 | 实验无 FTP 需求,减少攻击面 |
| 安全 → IP 和域限制 | 勾选 | 任务 9.2 需要用到 |
- “下一步” → “安装”,完成后关闭向导。
命令行等效(PowerShell,可选):
Terminal window Install-WindowsFeature -Name Web-Server, Web-IP-Security, Web-Stat-Compression -IncludeManagementTools
验证方法:在本机浏览器访问 http://localhost,应看到 IIS 默认欢迎页;按 Win + R 输入 inetmgr 可打开 IIS 管理器。
任务 9.2 网站安全基础配置
Section titled “任务 9.2 网站安全基础配置”操作步骤(GUI):
- 打开 IIS 管理器(
inetmgr),左侧展开服务器节点 → 网站 → Default Web Site。 - 确认关闭目录浏览:双击”目录浏览”图标 → 在右侧”操作”面板点击 “禁用”(默认即禁用,确认状态为已禁用)。
- 配置默认文档:双击”默认文档”,确认
index.html、iisstart.htm等顺序合理(业务首页置于顶部)。 - 配置 IP 和域限制(白名单):双击 “IP 地址和域限制”:
- 在”操作”面板点击 “编辑功能设置” → 将”未指定的客户端的访问”改为 “拒绝”(默认拒绝,仅白名单放行)。
- 点击 “添加允许条目” → 填入测试客户端 IP(特定 IP 或网段)→ 确定。
- (可选)勾选”启用域名限制”时务必谨慎,域名限制会在每次请求触发反向 DNS,影响性能,通常仅用 IP 限制即可。
提示:若需先验证网站可达再收紧白名单,可先把默认设为”允许”并对个别可疑 IP 拒绝;正式加固时再切为”默认拒绝 + 白名单”。
验证方法:在白名单内的客户端访问 http://服务器IP 正常打开页面;将测试客户端 IP 移出白名单后再访问,应返回 HTTP 403 禁止访问。
任务 9.3 身份验证与应用程序池身份隔离
Section titled “任务 9.3 身份验证与应用程序池身份隔离”安全风险:Web 应用以过高权限运行(如 LocalSystem),一旦被攻破可直接控制整台服务器。
操作步骤(GUI):
- 应用程序池身份隔离:在 IIS 管理器左侧点击 “应用程序池” → 选中
DefaultAppPool→ 右侧 “高级设置”。- 找到”进程模型 → 标识(Identity)“,确认设为
ApplicationPoolIdentity(每个池对应一个独立的低权限虚拟账户IIS AppPool\<池名>,是最佳实践)。
- 找到”进程模型 → 标识(Identity)“,确认设为
- 配置网站身份验证:回到 网站 → Default Web Site → 双击”身份验证”:
- 保留 “匿名身份验证”(对外公开站点)。
- 禁用”基本身份验证""Windows 身份验证""摘要式身份验证”(除非为内网站点;基本身份验证明文传输,必须配合 HTTPS)。
- 选中”匿名身份验证” → 右侧 “编辑” → 将”匿名用户标识”设为 “应用程序池标识”(而非默认 IUSR),实现站点间隔离。
- 网站目录 NTFS 权限:右键
C:\inetpub\wwwroot→ 属性 → 安全 → 编辑:- 移除
Everyone、Users的多余写入权限。 - 仅保留
IIS_IUSRS(或对应虚拟账户IIS AppPool\DefaultAppPool)的”读取和执行”权限,避免”完全控制”。
- 移除
最小权限原则:网站以独立的应用程序池虚拟账户运行,文件系统仅授予该账户最小必要权限——即便 Web 应用被攻陷,攻击者也只获得低权限,难以横向提权。
验证方法:在”身份验证”中确认仅匿名身份验证启用;在 wwwroot 安全选项卡确认无 Everyone/过大权限。
任务 9.4 防止 Webshell:目录执行权限与请求过滤
Section titled “任务 9.4 防止 Webshell:目录执行权限与请求过滤”安全风险:上传目录若允许脚本执行,攻击者上传一个 .aspx 木马即可获得 Webshell。
操作步骤(GUI):
- 在
C:\inetpub\wwwroot下新建上传测试目录Uploads,并放入一个测试脚本(如复制iisstart.htm改名为test.aspx)。 - 回到 IIS 管理器 → 展开 Default Web Site,选中下方的
Uploads目录节点。 - 取消该目录的脚本执行权限:双击 “处理程序映射” → 右侧 “编辑功能权限” → 仅勾选 “读取”,取消”脚本”与”执行” → 确定。
- 配置请求过滤(Request Filtering):选中
Uploads(或站点根)→ 双击 “请求过滤”:- 切到 “文件扩展名” 选项卡 → 右侧 “拒绝文件扩展名”,依次添加高危扩展名:
.config、.bak、.inc、.xml、.sql(未使用的敏感扩展名一律拒绝访问/下载)。 - (可选)在 “HTTP 谓词” 中仅放行业务需要的谓词(如
GET、POST),拦截TRACE/PUT/DELETE等。
- 切到 “文件扩展名” 选项卡 → 右侧 “拒绝文件扩展名”,依次添加高危扩展名:
- 限制上传大小:在站点根目录编辑/新建
web.config,限制最大请求体(示例限制为 10 MB):<configuration><system.webServer><security><requestFiltering><requestLimits maxAllowedContentLength="10485760" /></requestFiltering></security></system.webServer></configuration>
验证方法:浏览器访问 http://服务器IP/Uploads/test.aspx,应无法被当作脚本执行(返回 404 或直接拒绝,而非运行 ASP.NET);访问 .config/.bak 等扩展名应被拦截。
任务 9.5 隐藏服务器信息与配置安全错误页
Section titled “任务 9.5 隐藏服务器信息与配置安全错误页”安全风险:响应头中的 Server: Microsoft-IIS/10.0、X-Powered-By: ASP.NET、X-AspNet-Version 暴露技术栈与版本,便于攻击者精准挑选漏洞;详细错误页泄露物理路径与堆栈。
操作步骤(GUI):
- 删除多余响应头:选中 Default Web Site → 双击 “HTTP 响应标头” → 选中
X-Powered-By→ 删除。 - 关闭 ASP.NET 版本头:编辑站点根目录
web.config,在<system.web>下添加:<httpRuntime enableVersionHeader="false" /> - 关闭远程详细错误:选中站点 → 双击 “错误页” → 右侧 “编辑功能设置” → 将”错误响应”设为 “本地请求的详细错误 / 自定义错误页用于远程请求”(远程仅返回通用错误,不泄露路径)。
- (进阶)移除 Server 头:IIS 无法通过 GUI 直接移除
Server头,需借助 URL 重写(URL Rewrite) 模块的出站规则删除该响应头(选做)。
验证方法:在测试客户端按 F12 打开开发者工具 → “网络”面板 → 查看响应头,确认已无 X-Powered-By、X-AspNet-Version;访问不存在的页面,确认远程返回的是通用错误页而非详细堆栈。
Server 2025 / IIS 10 适配提示:IIS 10 默认支持 HTTP/2 与 TLS 1.2/1.3。建议在注册表(
HKLM\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL)或借助 IIS Crypto 等工具禁用 TLS 1.0 / 1.1 与弱密码套件,仅保留 TLS 1.2 及以上。
任务 9.6(进阶)启用 HTTPS 与配置 IIS 日志
Section titled “任务 9.6(进阶)启用 HTTPS 与配置 IIS 日志”安全风险:明文 HTTP 下,登录凭据、Cookie、业务数据可被中间人嗅探与篡改;缺少完整日志则入侵行为无法溯源。
操作步骤(GUI):
- 创建服务器证书(实验用自签名):IIS 管理器 → 选中服务器节点 → 双击 “服务器证书” → 右侧 “创建自签名证书” → 输入友好名称(如
IIS-Test)→ 确定(实验环境自签名即可;生产应向 CA 申请正式证书)。 - 绑定 HTTPS:选中 Default Web Site → 右侧 “绑定” → “添加” → 类型选 HTTPS,端口
443,SSL 证书选择IIS-Test→ 确定。 - 配置 IIS 日志:选中 Default Web Site → 双击 “日志”:
- 日志文件格式选 “W3C” → 点击 “选择字段”,确保勾选:
日期、时间、客户端 IP、用户名、方法、URI 资源、URI 查询、协议状态、用户代理、引用页。 - 建议将日志目录设到非系统盘、仅授权管理员可写,并制定定期归档策略。
- 勾选”使用本地时间进行文件命名和滚动更新” → 应用。
- 日志文件格式选 “W3C” → 点击 “选择字段”,确保勾选:
关于 HSTS:启用 HTTPS 后,可在
web.config中通过自定义响应头添加Strict-Transport-Security(HSTS),强制浏览器后续仅以 HTTPS 访问(实验选做)。
验证方法:
- 浏览器访问
https://服务器IP(自签名证书会有不安全警告,点击继续即可),确认 HTTPS 站点可用。 - 访问站点若干次后,到日志目录(默认
%SystemDrive%\inetpub\logs\LogFiles\W3SVC1\)查看最新日志,确认访问记录已生成且字段完整。
实验任务十 综合验证与日志分析
Section titled “实验任务十 综合验证与日志分析”完成以上配置后,进行综合验证:
- 暴力破解验证:在测试机连续输错密码,确认账户在第 5 次后被锁定;在事件查看器”安全”日志中检索 事件 ID 4625,分析失败登录来源。
- 远程访问验证:用授权账户经 NLA 远程登录成功,未授权账户被拒绝。
- 共享访问验证:验证最小权限是否生效(只读用户无法写入)。
- 端口验证:使用
netstat -ano(命令行辅助)查看监听端口,确认仅开放必要端口。 - 日志导出:在事件查看器中右键”安全”日志 → “将所有事件另存为”,导出为
.evtx文件作为实验证据。 - Web 安全验证:在测试客户端按
F12查看响应头,确认已隐藏Server/X-Powered-By版本信息;访问上传目录中的脚本文件确认无法执行(防 Webshell);以https://访问确认加密生效;查看 IIS 日志(W3SVC1)确认访问记录已记录。
四、实验报告要求
Section titled “四、实验报告要求”实验报告需包含以下内容(每个任务附 操作截图):
- 实验目的、环境拓扑图。
- 各任务的关键配置截图(密码策略、锁定策略、审核策略、防火墙规则、服务状态、NTFS/共享权限、远程桌面设置、IIS 站点/执行权限/请求过滤/HTTPS 等设置)。
- 验证过程截图(账户锁定提示、4625/4624 日志、共享访问被拒提示等)。
- 实验中遇到的问题及解决方法。
- 实验总结与思考题解答。
- “密码复杂性要求”具体要求密码包含哪几类字符?为什么短而复杂的密码仍可能不如长口令安全?
- “账户锁定阈值”设置过小(如 3 次)会带来什么副作用?如何平衡安全性与可用性?
- NTFS 权限与共享权限同时存在时,用户最终获得的有效权限如何计算?请举例说明。
- 为什么远程桌面要启用 NLA(网络级别身份验证)?它防御了哪类攻击?
- 仅靠修改 RDP 端口能否真正提升安全性?还应配合哪些措施(结合最小权限、防火墙白名单、强口令等)?
- 事件 ID 4624 与 4625 分别代表什么?如何利用安全日志发现暴力破解行为?
- IIS 网站中,将上传目录(Uploads)的执行权限改为”仅读取”为什么能有效防止 Webshell?仅靠这一措施是否足够,还需配合哪些加固?
- HTTP 响应头中的
Server、X-Powered-By等信息泄露会带来什么风险?为什么启用 HTTPS(SSL/TLS)不能替代其他 Web 安全配置?
六、安全与规范提示
Section titled “六、安全与规范提示”- 本实验所有操作必须在授权的实验/测试环境(虚拟机)中进行,严禁对未授权的生产系统或他人服务器进行配置更改或攻击测试。
- 配置遵循 最小权限原则 和 纵深防御原则:单一措施不足以保证安全,需多层叠加。
- 实验完成后如需还原环境,可恢复实验前创建的虚拟机快照。
附:实验检查清单(自评用)
- 密码策略已配置(复杂性、长度、有效期)
- 账户锁定策略已配置(阈值/时间)
- Guest 已禁用、Administrator 已重命名
- 用户权限分配与安全选项已加固
- 审核策略已开启,安全日志大小已调整
- 防火墙默认阻止入站,按需放行端口
- 无用/高危服务已禁用
- NTFS 与共享权限遵循最小权限
- 远程桌面已启用 NLA 并限制用户
- 系统更新与 Defender 防病毒已开启
- IIS 已最小化安装,目录浏览已关闭
- 上传目录禁止脚本执行,请求过滤已配置
- IIS 版本信息已隐藏,错误页已安全化
- IIS 已启用 HTTPS 并开启完整日志
- 完成综合验证并导出日志证据