Windows嵌入式开发环境搭建:站点配置与权限设置指南
|
上线那晚,我在机房门口啃半凉的韭菜盒子,后端蹲在灭火器旁边改IIS绑定,设计在楼上狂按电梯——他根本没权限进内网段,卡在AD组策略里,连远程桌面都弹不出认证框。白板上还留着上会写的字,“统一身份平台V3.0”,底下一行小字是“兼容WinCE6.0驱动”——这玩意儿去年五月就该砍了,没人擦。 其实Windows嵌入式开发环境搭建:站点配置与权限设置指南,真不是写给新人看的。它是给老板抄给甲方、甲方再甩给第三方集成商、第三方干完活把权限全开成Administrator、然后我们半夜三点爬起来删共享目录里的desktop.ini和autorun.inf用的。指南里每个“建议最小权限”,后面都跟着一串血淋淋的“曾被绕过”。比如“禁止启用IUSR账户匿名访问”那条——我原以为只是个理论风险,结果上个月测试群一直在响,响到我外卖到了没人拿,点开一看,有人用IUSR身份把站点web.config里的connectionStrings节点读出来了,还是明文。对,就那个写“Server=127.0.0.1;Uid=sa;Pwd=123456”的web.config。 优胜劣汰?呵。不是系统优胜劣汰,是人。去年一月那会儿,我拍板把整套站点配置模板从“基于域控+GPO推”改成“本地组策略+注册表导入批处理”,理由冠冕堂皇:适配离线工业终端。结果呢?设备烧录厂那边压根不装AD客户端,他们用XP SP3镜像刻盘,刷进去第一件事就是关掉Windows Firewall服务,第二件事就是把LocalUsers组加进IIS_IUSRS——因为“不然页面打不开”。我气得把键盘托盘掀了,老板路过看见,只说了句:“你上次说‘绝对没问题’,是上个月五号。” 窗外天黑得特别快,才六点,路灯已经全亮了,照得机柜散热口那圈蓝光跟幽灵似的。我翻出指南第三章第七节,“本地服务账户隔离实践”,底下脚注写着“需确保Local Service可读取C:\\inetpub\\wwwroot\\config\\certs”。我就记得那天下午,后端坐我对面,用记号笔在指南复印件上画了个大叉:“ certs目录你放哪?放Program Files下?你让WinCE设备去装.NET Framework 4.8?”他说完顺手把我桌上的枸杞茶喝了一口,杯底沉着三颗没泡开的枸杞,像三粒发霉的种子。 指南最站得住的地方,真是优胜劣汰——但不是技术赢了,是活下来的人赢了。设计上周提需求,说“希望客户扫二维码直接进诊断页”,我说行,转头就在web.config里配了urlRewrite,把/qr/.重写到/diag/index.aspx,顺便加了个IP白名单。结果客户扫码用的是钉钉内置浏览器,UA里带“DingTalk/6.5”,而我们白名单只认“Mobile|Android|iPhone”。那天下午两点十七分,测试群响了第十八次,消息是张截图:Error 403 - Forbidden。底下一行小字:用户ID: dingtalk_qr_13894721。没人骂后端,也没人怪设计,大家集体沉默。两分钟后,老板在群里发了个链接,标题叫《关于Windows嵌入式站点安全基线(精简版)的紧急通告》。附件是PDF,第一页水印写着“内部试用·严禁外传”。我点开看了一眼,发现第三页引用的参考文献,是我三年前在旧项目上随手记的OneNote笔记——那项目早就下线了,服务器被拆去给新MES当日志中转站,硬盘还在地下室纸箱里堆着,标签纸卷边,写着“2021年热更新备份(未校验)”。
文章配图,仅供参考 谁还记得当年为调试一个.NET 2.0 WebService的跨域问题,在IIS6里手动注册aspnet_isapi.dll时,得先改metabase.xml里那行schemaVersion=”4.0.0.0”的值?现在指南第五章第四节说“请使用applicationHost.config覆盖默认行为”,我看了两遍,没敢删。怕删了之后,那些连PowerShell都不认识的老PLC网关,半夜自动发起GET /favicon.ico时,又开始吐503。说白了,不是我们非要守着这些破规则,是客户现场的工控机BIOS里还锁着Legacy USB Support开关——开不了UEFI Boot,自然也装不了新SDK运行时。后端昨天跟我说,他写了七版证书自动续签脚本,最后上线的版本,居然是用vbs调cmd,再用cmd启动certreq.exe,中间sleep了三秒等CSP初始化。他念的时候声音挺平,手里捏着半截没抽完的烟,烟灰断在第三厘米处,没掉下去。我承认,指南第八节“权限继承链审计建议”,是我补的。原稿没有。是因为上个月,财务部一台嵌入式POS机中了勒索病毒——不是外网进来的,是内部IT同事用TeamViewer远程装驱动时,顺手把自己管理员账号缓存在了本地Credential Manager里。病毒扫了一遍LSA Secrets,拎出六个域账号,其中两个能登SCCM控制台。这事没通报,只在小范围口头同步。我把“禁用凭据管理器本地缓存”这条塞进指南附录B,备注写“高风险操作,实施前请确认设备支持LAPS”。其实LAPS在WinCE上根本没实现,但我不敢写实话。就像我不敢写明“所有声称支持Win10 IoT Enterprise LTSB 2016的工业触摸屏,其UEFI固件实际仍加载IA32架构引导模块”。有些事,你写进文档,就等于亲手给自己焊死退路。 我现在在重配dev-legacy分支里的sites.xml——得把所有标签下的identity impersonate="true"全干掉,换成runAllManagedModulesForAllRequests="false"。这不是最佳实践,是止损。后端刚发来消息:“客户说产线扫码枪识别慢,可能要换协议。”我没回。手边指南翻开到第七页,铅笔圈着一句话:“权限配置非一次性动作,而是一次次失败后的条件反射。”圈得歪歪扭扭,下面还有半行字被茶水洇开了,只看得清“……像记住自己什么时候开始不敢碰registry……” 我打算今晚回家前,把指南最后那个“常见故障速查表”删了。删干净。反正里面九成案例,都是我自己填的坑。包括第一条:“现象:HTTP 500.19 错误;原因:web.config权限位被inheritance覆盖;解决方案:右键属性→安全→高级→禁用继承→逐条添加IIS_IUSRS、SYSTEM、Administrators——并确保勾选‘替换所有子对象权限项’。” (编辑:站长网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |




