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

多媒体服务器安全审计:90%漏洞源于3个被忽视配置

发布时间:2026-11-10 14:36:39 所属栏目:安全 来源:DaWei
导读:  去年国庆节,我蹲在客户机房改WAF规则,空调吹得后颈发僵,手机震了十七次——全是我们组那个刚转岗的运维小张,每次发个截图就带三行省略号,最后总补一句“老板说先别动,等安全部批复”。文章配图,仅供参考  他第三次发

  去年国庆节,我蹲在客户机房改WAF规则,空调吹得后颈发僵,手机震了十七次——全是我们组那个刚转岗的运维小张,每次发个截图就带三行省略号,最后总补一句“老板说先别动,等安全部批复”。


文章配图,仅供参考

  他第三次发来那串IP:192.168.101.138,看着眼熟。我翻了翻自己本地日志缓存,没比对上,但手欠又grep了下/var/log/nginx/access.log,发现它上周五凌晨两点零七分连过七次/rtmp/publish,User-Agent里夹着curl/7.68.0——不是播放器,是人手敲的。我没回他,把这行IP复制进剪贴板,粘到另一台跳板机上做了个nc -zv,通。然后就关了终端。


  我原以为是某个流媒体SDK自动重连机制,结果查了三天配置文件,发现根本不是——是默认开启的HLS自动生成目录里,index.m3u8被写成了world-writable,且nginx root直接映射到了/home/media/hls/,而/home/media/下还有个叫“temp_upload_2023”的空文件夹,创建时间是八月二十六号凌晨三点,owner是www-data,mod是777。我敢打包票,这文件夹没人手动建过。


  这个我敢打包票。


  90%漏洞源于三个被忽视配置——这话不是我编的,是甲方审计报告原文摘的。他们没写哪三个,只说“基础项”,后面跟了个附录编号#SEC-CONF-0923。我查了他们内网wiki,附录页404。问安全组老李,他说“哦,那个啊,是外包公司抄的模板”。问外包,外包说“我们按等保2.0三级条款逐条核的”。可等保文档里压根没提hls_path和rtmp_publish_allow的区别,只说“访问控制策略应明确”。什么叫明确?是写“禁止未授权上传”,还是写“upload_max_size=0且disable_publish_on_play=on”?


  那天凌晨四点,群里突然@全员,标题是【紧急:疑似webshell上传,溯源中断】。我看了一眼发信人是安全组新来的实习生,ID叫“sec_fan_03”,头像用的是B站UP主“红队老吴”的表情包。他贴了段base64,解出来是curl -s http://10.8.5.92:8080/api/status | grep -q “ready” && echo 1,后面接了个/tmp/.X11-unix/.bashrc——这路径我在某台失陷边缘节点的日志里见过三次,第一次是七月十七号,第二次是八月十一号,第三次就是昨天,但这次IP换成了172.16.20.44,源端口从51232变成了60001。我没点开详情,顺手截图发给了测试组的王姐,她回:“你截这个干啥,上次我帮运营导数据还顺手删过这个文件夹,权限太乱。”


  我愣了三秒才反应过来她说的是哪个文件夹——就是那个“temp_upload_2023”。我说你删之前没看md5?她说没,就rmdir -rf,因为里面塞了三百七十二个同名的test.ts,每个23MB,占满了/dev/shm。我说谁放的?她说“运营说他们用FFmpeg推流测兼容性,参数没加-sws_flags lanczos,卡顿严重,所以反复重推。”


  安全是成本不是收入——这句话的优点在这儿,不是因为它多深刻,是它能把甩锅链掐断在立项阶段。可实际呢?我上个月填过七份《多媒体服务上线安全确认单》,六份被产品驳回,理由是“影响灰度节奏”。最后一份签下来,签字栏写着“已确认:ffmpeg版本已升至4.4.3,忽略hls_fragment_naming”。我问什么叫“忽略”,PM说“意思是这个字段不用填”。


  我查了下我们产线所有rtmp.conf,37台服务器,29台还在用include /etc/nginx/conf.d/rtmp_global.conf;那文件里第一行就是# rtmp config by legacy script,第二行是chunk_size 4096;,第三行是on_publish “/bin/true”;——注意,是/bin/true,不是一个脚本路径。我试过改成on_publish “/usr/local/bin/check_auth.sh”,跑了俩小时后监控告警:publish延迟突增至十秒。运维老周重启了两次nginx,最后一次改回/bin/true,延迟立刻掉回200ms。他说:“你非要用脚本?行啊,你来配lua-resty-limit-traffic,别动RTMP模块。”


  我真去看了lua-resty-limit-traffic文档,看到一半切出去搜了下“nginx rtmp on_publish 参数限制”,第一条是Stack Overflow一个2016年的回答:“on_publish does not support Lua context, it’s executed in RTMP worker process, outside nginx core.” 我关了页面,点了支烟。烟盒里只剩两根,都是扁的,不知道谁坐过。


  对了,今天早上路过茶水间,听见产品和前端在聊“要不要给播控后台加个暗水印功能”,声音不大,但足够听清他们在说“用Canvas隐写,覆盖在video标签上层,截图也带不出来”。我没进去,但下意识摸了下自己笔记本侧面——那里有道划痕,是上个月在机房抢修时,被机柜边角磕的。三毫米长,斜向下,边缘有点发白。


  我准备下周找DBA借个低权限账号,扫一遍所有MySQL实例的general_log,看看有没有人还在用root@'%'连多媒体配置库。不一定真扫,先列个SQL语句草稿。要是发现确实有人连,我就发个匿名邮件,附件是那三百七十二个test.ts的sha256列表——反正已经脱敏了,文件名、路径、时间戳全删光,就剩哈希。他们爱查谁查谁。

(编辑:站长网)

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