IIS权限总出错?90%管理员忽略的5大安全盲区
|
去年五月,凌晨三点二十,我盯着监控屏上那块贴了三道胶布的左下角——第三道是上周新补的,遮住了裂痕,也遮住了 CPU 曲线最后跳动的 0.8 秒。机房空调坏了两天,风扇声像老式传真机在嚼锡纸,我啃完半桶红烧牛肉面,面汤还浮着油星,手机震起来,是张工:“哥,IIS 又挂了,静态页全 500,应用池一启就退。” 我原以为又是应用池回收设置太激进,结果连 C:\\inetpub\\wwwroot 下那个写了“test-please-ignore.txt”的空文件都打不开。notepad.exe 提示“拒绝访问”,不是权限不足,是“访问被拒绝”——少了个句号,但系统比我还较真。 第一处盲区:NTFS 权限继承链里混进了域组策略,但没人记得这台机器三年前从旧域迁出来时,没清掉 GPO 的残留 SDDL。王磊——就是去年接手 AD 的实习生——上周重装过 DNS 服务器,顺手把旧域控的 SRV 记录删了两条,我们谁也没去查它和 IIS 元数据库的 WMI 连接有没有偷偷续订凭据。他今天早上十点发微信说“重启了 Netlogon 服务”,我没回,因为就在他说这话前四分钟,我刚在事件查看器里看到一条 Event ID 1269,来源 WAS,描述栏写着“无法读取 applicationHost.config 中的 section —— 由父容器权限覆盖”。可哪个父容器?我不知道。到现在也没想明白。 第二处盲区:AppPoolIdentity 实际运行账户是 IIS AppPool\\DefaultAppPool,但它默认归属的 IIS_IUSRS 组,在本地用户组策略里被悄悄加了一条“拒绝登录到此计算机”。谁干的?是李主任上个月为应付等保检查,让安全团队跑的基线加固脚本——第 37 行 PowerShell 命令把所有非交互式组全扫了一遍,包括这个。脚本日志存在 D:\\logs\\baseline_20230418.log 里,路径名我都背得出来,但没人去看。那天下午我在值班室泡面,水刚烧开,老板在运维群甩了一张截图,就一行字:“客户投诉订单页空白,别跟我说缓存”。泡面盖子还没掀,我听见窗外开始下雨,雨点砸在机房南侧玻璃上的节奏,跟服务器机柜风扇故障告警的蜂鸣几乎同步。 第三处盲区:Web.config 被改过十二次,最后一次是客服小杨——不是技术岗,但有部署账号,她上周二替业务部门加了自定义错误页,顺手把 那段删了。她说“看着像冗余代码”,其实那行配置锁死了 web.config 自身的读取权限。我昨天重放审计日志,发现删掉它的那一刻,IIS 管理服务(WMSVC)心跳停了七秒。可第七秒之后,它又活了,只是活得不干净。就像你往咖啡里倒牛奶,搅匀了,喝一口,突然发现杯底沉着半粒没化开的糖。
文章配图,仅供参考 第四处盲区:磁盘满了,不是 C 盘,是 E 盘——那块当年为了省两百块换的二手 SATA 盘,放着 IIS 日志归档,没人设自动清理。它满的时候不报警,只静默丢数据。那天凌晨两点四十一分,E:\\logs\\w3svc1\\u_ex230512.log 正写到第 1739 行,“GET /api/order/submit HTTP/1.1” 后面断了,没有状态码,没有字节数,没有破折号,就像一句话说到一半,被掐了脖子。我女儿昨天打来电话问“爸爸你什么时候回家”,我说“快了”,其实正在翻一份 2016 年的老文档,里面提过一句“E 盘保留 15% 空间以供 NTFS 日志回滚”,可现在剩余空间是 0.03%。第五处盲区:证书链信任根。不是过期,是中间 CA 的 CRL 分发点域名——crl.digicert.com——在本地 hosts 文件里被映射到了 127.0.0.1。谁干的?是我自己。上个月搬家,我把旧公司的 hosts 备份直接覆盖了新环境的,忘了删掉那行。IIS 不报错,SSL 握手照样通,可只要客户端启用 OCSP Stapling,或者浏览器较真校验吊销状态……啪,整站 HTTPS 就变灰。张工第一次打电话来,说的是“客户说网页打不开”,我让他按 F5,他按了,页面出来了;他再按一次,又白了。我没吭声,心里咯噔一下——不是网络问题,是信任塌方。 优胜劣汰不是口号。是张工今天凌晨能立刻切到离线模式看 IIS 元数据备份,而我去年十月做的那次权限快照,现在躺在一个叫“backup_pre_migrate_20221009.zip”的压缩包里,密码是“iisadmin2022”,解压后里面 applicationHost.config 时间戳是 2022 年 10 月 9 日下午四点十七分,刚好是迁移前最后十分钟。王磊不知道这事,李主任没问过,小杨更不可能打开它。可它就在那儿,安静,准确,冷得像块硬盘。 前天整理旧电脑,翻出 2008 年写的批处理脚本,给 IIS6 生成权限报表用的,注释还写着“@echo off // 避免在终端窗口闪太多光,值班员眼睛疼”。现在我们用 PowerShell,自动推送,邮件日报,监控大屏。可昨晚上那个 500 错误,根源还是同一行命令:cacls %windir%\\system32\\inetsrv\\config /e /g "BUILTIN\\IIS_IUSRS":R —— 但缺了“/t”,没递归下去。就这么一点漏掉,整个链条就松了三颗螺丝。 我刚才调出昨天的告警记录,发现有个阈值设成了“可用空间低于 1GB 时触发”,但磁盘总空间是 12TB,1GB 触发根本没意义。监控系统贴在屏上那条胶布底下,藏着个被屏蔽掉的低优先级告警项:E:\\ drive free space below threshold (ignored)。贴胶布的人不是我,是上个值夜班的同事,他儿子发烧请假没来,走之前用透明胶把刺眼的红色横幅盖住了。 明天先把告警阈值调了。不是按绝对值,按百分比,设成 5%。然后再看看能不能在 WMI 上埋个钩子,抓所有对 security descriptor 的修改动作——哪怕它来自注册表编辑器、PowerShell、还是某款国产“运维助手”的一键优化按钮。至于 hosts 文件……算了,先手动清一遍。我手机相册里还存着一张照片:2007 年第一次配 IIS6,屏幕右下角时间是下午五点四十,旁边摆着半块没吃完的蛋糕,庆贺测试站上线成功。当时蛋糕奶油有点化了,顺着碟沿往下淌,像一滴没来得及擦掉的汗。 (编辑:站长网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |


安全管理员实测:游戏5大隐藏漏洞,90%玩家第3关中招
