建站新手必踩的7个运维坑:第5个90%人忽略的容器安全盲区
|
三个月前,李锐在器械区推卧推,右肩一沉,杠铃没锁死,直接砸回胸骨上。我没拦——他前一秒还跟旁边人说“这重量压根不喘”,后一秒就松了肩胛下束。他倒没骨折,但三周没法做俯卧撑。那阵子能推个大概,具体多少片记不清了,只记得他躺那儿缓气时,镜子里映出我后颈那块老伤疤在反光。 那天复盘不是从伤开始的。是从他手机里那个建站后台截图——刚被扫出三个高危漏洞,容器镜像里跑了带root权限的sshd,连密码都设成admin123。我说你这等于在健身房门口挂把没锁的门禁卡,还贴张纸写“欢迎来偷器械”。他抬手揉肩:“可我用的是Docker官方镜像啊。”我盯着他手腕上还没消的擦伤说:“官方镜像?那就像说‘这杠铃片是力健原厂的’——可你把它焊死在锈铁架上,还让会员自己拧螺丝。” 镜子上有一块手印,油乎乎的,正好挡着腹肌训练区那边。前台在放一首老歌,唱到“梦醒时分”,音量忽大忽小。有人在拉伸区打哈欠,声儿挺长。这些跟我俩讲的事没关系,但它们在那儿,真在那儿。
文章配图,仅供参考 我原以为容器安全就是换个更细的访问控制列表,结果去年帮一个做医疗小程序的客户查漏,他们用的是OpenShift,全套RBAC配置得比我的训练计划还密,结果漏洞出在pod annotation里——开发顺手把GitLab token塞进注释字段,K8s自动挂载进容器环境变量。那玩意儿没加密,没过期,没轮转,就静静躺在kubectl describe pod的第三屏底下。我翻到那儿的时候,手心全是汗。不是怕罚单,是怕哪天审计一跑,整个集群的凭证都亮在日志里,像没穿背心就去练爆发跳箱。 陈工也栽过这儿。他给教育局搭平台,图省事用build-arg传数据库密码进Dockerfile,镜像推完才发现Docker Registry默认公开,连学生都能curl -L下载tar包反解。他后来重做流水线,在CI阶段加了secret scrubbing脚本,结果脚本本身硬编码了一个调试用的明文KEY——就藏在.gitlab-ci.yml第87行,后面跟着#debug-only,没人删。他跟我说这事时正蹲在地上擦粉笔,地上有个用了一半的粉笔,蓝的,断口斜着。 器械区那股铁味特别冲,尤其下午三点,暖气一烘,混着蛋白粉味。上周三,赵磊举壶铃摇摆,腰弓没绷住,第七次离心时左髋突然顶出去,整个人歪向右边,壶铃撞在架子腿上,咚一声。我扶他坐凳子上,他龇牙咧嘴:“是不是核心太松?”我没答,只让他先摸肚脐下两指——那里有块旧疤痕,是他去年做疝气手术留的。他自己都不知道,那位置正好是腹横肌深层附着点,而他半年前做的所有核心激活,全在表层做呼吸泵动,绕开了那片纤维走向。优胜劣汰不是靠谁喊口号喊出来的,是等你某次硬拉拉不动、某次容器爆内存、某次pod反复OOM,系统自己把你筛出去。没人按暂停键,它只关闸。 有次跟运维组小林争。他坚持要在Pod里跑syslog-ng,说日志要集中归档。我问他一句:“你敢不敢把你的个人邮箱设成alert接收地址?”他愣了。后来发现,他那套日志采集链路根本没做证书校验,上游Fluentd连k8s API Server用的是自签CA,而CA私钥……就在他本机home目录的.config/里,文件名叫“dev-ca-bak.pem”。那玩意儿连chmod都没改过,755权限,全世界可读。他原以为只要不暴露端口就算加固,结果攻击者根本不用连进来,顺着日志管道反向注入一条恶意configMap,三分钟就把整个命名空间的etcd备份拖走了。 那个会员现在不来了。王薇,教幼儿园的,练了十一个月体态矫正,腰椎前凸减了六度,但最后两次课她一直问:“我能不做臀桥吗?膝盖疼。”我没让她停,改成弹力带抗旋蹲起,每天五组,每组十二次,热身必须包含髋关节外旋四方向激活(脚踝固定、大腿旋转、骨盆微倾、呼吸同步)、股直肌松解三步(泡沫轴按压→动态牵拉→离心收缩保持)、耻骨联合对位感知(坐姿单腿屈膝90度,指尖压耻骨联合中点,感受双侧承重是否均等)。啰嗦这些,是因为它跟容器里的initContainer一样——没人看它,但它决定后续所有pod能不能站起来。可她最后一次课迟到二十分钟,进门就说孩子发烧,没练完就走了。之后再没出现。 我自己也没完全想明白怎么让非root容器里运行tini作为PID1又不触发SELinux拒绝。试过sebool开关,试过--security-opt label=disable,试过relabel整个volume,结果每次更新K8s版本,策略又变了。上个月新集群上线,我还是写了临时脚本做runtime patch,心里清楚这不是解法,是缓震垫。就像我知道有人练前蹲永远膝盖外扣,却说不清是髋关节活动度限制还是胫骨旋转代偿占主导——知道问题在哪,但解剖层面那层膜,我还没掀开。 有人把杠铃片摔了一声巨响,清脆,金属震颤。赵磊坐在凳子上慢慢活动髋关节,一边听我讲那个没修复的CVE-2023-24369:它不靠漏洞利用,就靠你build镜像时用的base image里自带的systemd-init进程,监听了/usr/lib/systemd/systemd-journald.sock——而这个socket默认允许所有容器进程写入。你只要在自己的alpine镜像里echo “$(cat /proc/1/environ)” >> /dev/log,就能让journalctl输出里混进任意进程的环境变量。90%的人不会去grep -r systemd-journald.sock,因为他们觉得“我根本没装systemd”。可Alpine 3.18+已经悄悄带上了,就躺在apk add busybox那一行底下,像没被拆封的肌效贴,贴在你根本不知道的地方。 我盯着李锐肩上新长的肌肉轮廓说:“你知道为什么卧推时总有人代偿斜方肌吗?”他摇头。“因为斜方肌在你意识之前就绷紧了,为防你脖子弯折。容器安全也是——它不该是你出事之后才想起来打开的日志开关,而是你在写第一行Dockerfile之前,就该让initContainer去杀掉那些带着CAP_SYS_ADMIN权限启动的bash进程。” 赵磊起身去拿水杯,路过饮水机时弯腰系了下鞋带。我低头看自己右手食指侧面那道浅疤,去年修CI流水线shell脚本时被服务器串口线边缘划的,早不疼了,但摸着还是有点糙。 (编辑:站长网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |

