IIS权限总出错?5大Windows站点安全盲区
|
去年暑假,查一下收录——先开站长工具,再输域名,再点“快照”那个小箭头,再等三秒转圈。结果首页显示“未收录”,二级目录直接404。我手悬在键盘上,听见隔壁装修的电钻声正凿着承重墙,哐、哐、哐。群里老张发了个捂眼哭的表情包,配字:“又来?” 我原以为是robots.txt被误改了,结果发现连IIS管理器都打不开——不是权限拒绝,是弹窗提示“无法连接到WMSvc服务”。重启服务?不行。重装?客户催得比电钻还急,下午三点前要上线新站群的跳转页。小王在电话里喘着气说:“刘工,友链那边刚问,为啥我们域名点进去是空白页,他们怕被牵连。”我叼着半截烟,烟灰掉在键盘F键上,没掸。 五大盲区?不,是五个坑,我踩得特别顺滑。第一个:applicationHost.config里那段,去年升级完2019服务器后它就自己翻脸了。不是报错,是安静地不干活。用户组加了IIS_IUSRS,也给了IUSR读取权,可就是死活不加载web.config里的rewrite规则。那天阳台衣服没收,湿淋淋挂着,滴水声和我敲命令行的回车声一个节奏。我敢打包票:这个配置项在Windows Server 2019 CU13之后的补丁里偷偷改过校验逻辑,但微软文档里没提,KB编号我都懒得记了——反正搜不到。 第二个坑在NTFS权限继承链上。你手动给D:\\wwwroot\\site1加了IUSR读取+执行,很完美。但只要有人手欠右键“属性→安全→高级→启用继承”,整条链就断成两截。为什么?因为父文件夹D:\\wwwroot的ACL里,有一条“拒绝IIS_IUSRS写入”的继承项,而它优先级高于子文件夹新加的“允许读取”。这事儿不报错,也不警告,它就静静躺在那里,等你半夜收到告警:某个采集接口突然返回500,但页面能打开,JS能加载,CSS也能加载……就是爬虫拿不到body里的三百七十二个词。客户陈总微信戳我:“刘工,百度是不是把我们当镜像站了?”我没回,把桌上那杯冷掉的茶推到显示器边沿。 第三个,是AppPool的身份账户。我们用NetworkService,看着省事。但去年七月那次更新后,NetworkService对注册表HKLM\\SOFTWARE\\Microsoft\\InetStp的访问路径变了——不是路径变了,是它开始校验签名。谁签的?微软自己的微码签的。我们有个老站,用的是十年前写的COM组件调用Excel生成报表,一运行就卡住,后台日志里只有“HRESULT: 0x80070005”。查了四小时,最后发现是NetworkService账号被悄悄剥离了“交互式登录”权限。这不是IIS的锅,是组策略刷新干的。而组策略是谁刷的?客户自己请的外包公司,上周刚走,留了句“已优化系统性能”。优化个屁。 第四个……算了,说这个我自己都想笑。我们给静态资源开了HTTP缓存头,max-age=31536000。没问题。可偏偏那个CDN节点用了Windows版nginx反向代理,它读IIS的响应头时,会把Expires字段当真,然后自作主张把ETag全砍掉。结果所有带版本号的JS/CSS文件,爬虫抓取时Cache-Control明明是public,却因ETag缺失触发强制重验。你猜怎么着?百度的抓取队列里,同一页面反复进、反复出,三天跑满一百二十七次。不是被限速,是它自己卡在验证环里出不来。那天群里老张又发了个表情包,这次是“熊猫头举白旗”。我没回。窗外雨下得密,雨水顺着窗框缝往下爬,像条歪斜的爬虫日志。
文章配图,仅供参考 第五个最绝:站点绑定的SSL证书。不是证书过期,是我们用的是通配符证书,.abc.com,可主站绑的是www.abc.com,而爬虫打的是abc.com(无www)。IIS默认不重定向,也不发HSTS头,它就让请求穿过HTTPS层,直接扔给默认AppPool——那个池子底下塞着二十多个测试站,其中一个是三年前做站群时搭的phpmyadmin测试页。所以百度快照里,abc.com首页显示的是phpmyadmin登录框。不是降权,是根本没认出这是你的站。快照时间停在五月十九号,那时候我们还没发现这档子事。损失多少钱?也就影响了六七个核心词的排名,具体数字?没算。不值得算。我跟小王说过,这事根本不是权限问题,是Windows生态的自然选择——优胜劣汰。淘汰掉那些靠“试试看”“重启下”“换台机器”混日子的人;淘汰掉把IIS当黑盒、把权限当开关、把组策略当装饰画的人;也淘汰掉以为SEO只是改改title、刷刷外链、等算法更新就能躺赢的站长。你要是还在用XP时代的权限思维管Server 2022,迟早被踢出队列。就像当年我们做站群,用同一套模板生成八百个站,三个月后七个死掉,剩下一个是被百度标记为“疑似作弊”的案例教学页——那页面到现在还能搜到,标题叫《关于违规采集与内容同质化的技术反思》,其实是用Python写的爬虫控制台输出。 到底哪次更新的事我说不准。是CU13?还是KB5004237?又或者那个连CVE编号都没捞到的.NET Framework内部变更?无所谓了。我抽完最后一口烟,把烟头按灭在烟灰缸里,缸底还压着一张泛黄的纸条,上面写着2011年手写的命令:appcmd add apppool /name:"LegacyPool" /managedRuntimeVersion:"v2.0"。那时候还没有https,没有WebDAV,也没有人担心IUSR会不会读取注册表。现在我打开PowerShell,cd到C:\\inetpub\\temp\\appPools,里头全是空文件夹,名字后面带着时间戳,像墓碑。 明天先把手上那批页面删一半试试。不是删内容,是删掉web.config里所有标签,把所有的自定义模块先卸载。至于SSL那个问题?暂时不处理,让abc.com继续返回phpmyadmin登录框。等哪天快照里突然多出一句“欢迎使用phpMyAdmin 4.9.7”,我就知道百度终于把它识别成真实站点了——哪怕是个被黑的站点。 (编辑:站长网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |



