加入收藏 | 设为首页 | 会员中心 | 我要投稿 站长网 (https://www.haoxinwen.cn/)- 应用程序、AI行业应用、CDN、低代码、区块链!
当前位置: 首页 > 服务器 > 搭建环境 > Windows > 正文

Windows网关站点权限配置:12年实战一步到位

发布时间:2026-10-23 14:12:08 所属栏目:Windows 来源:DaWei
导读:  凌晨三点十七分,告警声像指甲刮黑板——不是短信推送,是机房那台老戴尔R720机柜顶上挂的物理蜂鸣器,去年刚换过继电器,响得更尖。我叼着半截冷掉的茶包,盯着PowerShell窗口里卡在Set-WebConfigurationProperty那一行的

  凌晨三点十七分,告警声像指甲刮黑板——不是短信推送,是机房那台老戴尔R720机柜顶上挂的物理蜂鸣器,去年刚换过继电器,响得更尖。我叼着半截冷掉的茶包,盯着PowerShell窗口里卡在Set-WebConfigurationProperty那一行的光标,动也不动。DBA老陈在 Slack 里甩来截图:IIS Application Pool Identity 的 token 里,SeImpersonatePrivilege 居然没勾。我说这怎么可能,他回了个“呵”,还附带一张 Windows 事件日志里 Event ID 1003 的截图,时间戳是昨晚八点零三分,正好是我切走最后一个灰度流量的时候。


文章配图,仅供参考

  我原以为是组策略刷新延迟,结果远程连进那台 Win2019 网关服务器一看,gpresult /h 生成的 HTML 报告里,“Authenticated Users”权限项后面赫然写着“已禁用”,但禁用原因栏空着——不是灰色,是空白。这种空比报错还吓人。后来发现是域控那边某次 AD 模板更新漏掉了 OU 级继承,而我们这个网关站点所在的 OU 恰好三年前被划进一个“安全强化隔离区”,名字起得挺好,里面连“Everyone”都早被手动删干净了。现在想,当时谁在AD里点了那个小勾?是不是和去年除夕夜值班表里第三个名字——张工——写的是同一个字?他调休申请被驳回那天,正赶上我通宵改完 OAuth2.0 插件的 JWT 缓存穿透逻辑。


  Windows网关站点权限配置:12年实战一步到位。这话不是吹,是血熬出来的。优胜劣汰——真就是字面意思。你留个Local Service账户跑网关,三天后它自己会把进程干掉;你给IIS_IUSRS加个Modify,第二天监控平台就吐三百七十二条“Unauthorized”的401日志,但偏偏不报Access Denied;你手抖多勾了“Replace a process level token”,第二天API路由就全绕开鉴权中间件直奔后端,而那个后端哥们儿还在工位上啃煎饼果子,手机响了一声没接,屏幕锁着,壁纸是《权力的游戏》龙妈骑龙图。


  说“一步到位”,其实是“一步一坑”。比如这个“站点”到底指啥?是 IIS Manager 里那个图标亮蓝光的“Default Web Site”,还是它底下嵌套的某个虚拟目录?还是那个绑着自签名证书、实际跑在 netsh http add urlacl 的 http://+:8080/gateway/ 的监听地址?我敢打包票:前两者你设对了,第三种照样崩。去年过年时,就因为某位兄弟把 urlacl 里的 SDDL 写成了 "D:(A;;GA;;;S-1-5-32-573)" 而不是 "D:(A;;GA;;;S-1-5-32-573)(A;;GRGW;;;WD)",结果管理员组成员能发请求,但非管理员组的人连 TCP 握手都收不到 ACK。Wireshark 里抓包,SYN 之后静音十八秒,像极了机房空调嗡的一声后突然停转的寂静。


  咖啡洒在工牌上了,褐色一圈,盖住了左下角的“Gatekeeper”烫金字。现在这张工牌我放抽屉最底下,不挂。因为去年春节前最后一周,我拿它刷门禁进DMZ区机房,刷了七次才开——门禁系统读卡模块和域身份认证之间有个 500ms 的时序窗口,而我们的网关站点权限链路里,恰好有个 Kerberos TGT ticket 刷新周期也是五百毫秒。不是巧合,是烂设计叠着烂设计,叠到某天凌晨三点,某个人的呼吸频率跟这个窗口撞上了,门就开了。我原以为是门禁坏了,结果查了一上午域日志,才发现是我们网关的 Negotiate Provider 在处理 NTLM fallback 时,偷偷把用户上下文丢给了本地 SAM 数据库……而 SAM 里根本没有这个账号。这个我说不准,但我知道老板拍桌子那回,桌上玻璃裂了条缝,刚好从他那张印着“卓越交付”的奖状右下角斜着劈下去,没伤着照片,但奖状边角卷了起来。


  对面工程师换了双拖鞋,蓝白相间,鞋带是松的。他踩在防静电地板上没声音,但每次转身碰键盘,椅子滚轮就卡一下。卡的声音不大,可比告警蜂鸣器还烦人。他昨天问我能不能把网关日志格式统一成 JSON——我说可以啊,你先配好 IIS 的 advanced logging module 的 custom field 映射表,顺便把 logparser.exe 的输出字段顺序和你的 Fluent Bit filter 插件做下兼容校验。他愣了三秒,低头看脚上那双拖鞋,说:“要不……我还是改下 nginx 日志格式吧。”我笑出声,笑完又有点后怕。因为就在他开口前一分钟,我刚在 PowerShell 里敲完 Set-ItemProperty "IIS:\\Sites\\Default Web Site" -Name applicationPool -Value "GatewayAppPool",回车前忽然顿住——那个 AppPool 的 Identity 属性名,到底是 “IdentityType” 还是 “processModel.identityType”?文档里两个都写了,但实测只有后者生效。文档是微软写的,可那个变量名,是2012年某个实习生在内部代码 review 时随手改的。


  值班表第三班,下周开始排到我头上。我不打算调休。上个月调休申请被驳回,理由是“节前运维资源紧张”,可驳回邮件发出的时间,恰好是老板和财务总监在隔壁会议室签完季度 OKR 绑定协议的时候。现在我把那封邮件存在一个叫“/tmp/noreply”的本地目录里,没加密,也不同步,就让它躺在那里。像那台R720机柜里常年没换过的滤网,积灰三厘米厚,但风扇照样转,只是转起来带着一股铁锈味。我原以为只要权限设够宽就能稳,结果发现最稳的那次部署,恰恰是只开了最小必要权限——连“IIS_IUSRS”组都没加,只靠一个硬编码的服务主体 SID 直接授权。那晚我回家路上,地铁空荡荡,耳机里播着十年前听过的播客,主持人说:“所谓稳定性,不过是所有漏洞同时没爆发的那一刻。”


  所以接下来我要干啥?重跑一遍 GPO 委派测试,但这次不用域账号,用离线本地 admin 创建个 test-svc 用户,手工跑 sfc /scannow + DISM /Online /Cleanup-Image /RestoreHealth,再试一次 urlacl SDDL 的 GRGW 权限位。如果还崩,我就去翻当年那个实习生提交的 commit hash——它还在 GitHub 上开源的 IISExpress 项目里挂着呢。至少,得知道锈是从哪块板子开始的。

(编辑:站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!