服务器安全审计:90%高危漏洞藏于日志盲区
|
告警响的那一刻,我正把泡面叉子插进最后一块蛋里——没吃,就戳着,汤都凉了。手机在裤兜里震第三回,不是值班群是开发老张,说话带喘:“你那边日志是不是没接K8s审计流?我们Pod里跑了十六个curl -X POST /api/v2/admin/…的请求,全403,但你那边查不到。”我手还停在泡面碗上,没动。屏幕右下角时间跳到凌晨三点半,左上角Chrome开着三个没关的Tab:GitHub Pages部署页、去年十一月的Nginx conf备份、还有个钉钉未读消息弹窗——发信人写“机房李工:冷气又调低了两度”。 我原以为是开发自己写的测试脚本漏删了,结果切到ELK搜了一行curl关键词,返回零结果。再切回服务器,tail -f /var/log/auth.log,眼看着一行su - root -c 'bash -i'的记录在刷,但时间戳是三天前——比告警早,比监控上线晚。对,监控上线晚。我们上个月迁移日志收集组件,新agent只装了三台机器,剩下好几台还在用旧rsyslog转发规则,中间缺了SELinux auditd那层,auditctl -l直接返回空。我说“空”你别笑,真空。连dmesg里那条“avc: denied { execmem } for pid=12043 comm="python"”都压根没进syslog。可那条记录我后来翻磁盘镜像时亲眼看见了,在/var/log/audit/audit.log第27万行附近,墨绿色背景里白字印得清清楚楚。 其实我上周就见过类似的。运维小王跑来找我:“陈哥,客户说他们爬虫扫到个/backup/.env.bak接口能下载,但我查nginx access_log没这条路径啊。”我说你查access_log干啥?那是给反向代理记的,你去查app进程自己的debug日志,人家Python里print('backup route hit')那一行根本没走标准路由层——它用的是werkzeug自带的dev server硬顶上线,连wsgi都没过。他愣了五秒,然后说:“哦……我还没改值班表,这周末还得替老李值夜班。”我说替就替呗,反正我昨儿晚饭吃的饺子,韭菜馅儿,蘸醋太多,胃现在还顶着疼。
文章配图,仅供参考 火大?不至于。麻了吧。上个月安全组甩来个PDF叫《高危漏洞TOP20溯源清单》,我扫一眼标题就关了。第12条写着“未捕获的sudo提权调用”,旁边附截图是journalctl -u sshd里一行sshd[592]: error: PAM: Authentication failure for root from 192.168.x.x——可我们没开journald远端同步,所有journal日志只存本地,且默认保留七天。那天出事是十月初,日志轮转早覆盖完了。我翻硬盘找残留,最后是在一块掉盘的坏道边儿上,用ddrescue硬抠出来半段journal文件,里面赫然有六次faillock --reset的调用记录,全指向同一个用户账号。但那个账号三天前已经被删除。账户没了,日志还活着,在磁盘碎片缝里喘气。优胜劣汰嘛,活下来的不是最坚固的日志管道,是最后没被rm -rf干掉的那一片扇区。跟开发吵了一架?吵了。就在前天。他说“你日志不统一,我们怎么埋trace_id”,我说你trace_id埋进哪里了?埋进Flask logger?还是你docker logs里那个被dockerd截断的stderr?你debug时console.log一把全打屏幕上,等上了生产环境就把level设成WARNING——那error里带着的SQL拼接痕迹,你猜它进的是syslog还是/dev/null?他没接话,低头抠手机,微信弹出家里视频,小孩举着画喊爸爸。我也想看,但手还按在键盘上,敲着grep -r "exec.sh" /etc/cron.d/,光标闪了四十秒没动。 窗外天快亮了,蓝灰色的那种,不是白。机房的人推门进来送咖啡,保温杯盖儿没拧紧,一路滴水到我工位地毯上。他说:“冷气修好了,但可能还得再降一度。”我没抬头,只应了声。其实我知道,真正要命的从来不是漏掉哪一条curl,而是你默认‘没报错=没发生’,而攻击者早学会在错误之外下棋——他们故意让请求返回401,好骗过WAF的payload规则;他们把恶意载荷拆成三段塞进/var/log/kern.log里不同进程的dmesg输出里;他们甚至重命名logrotate配置,把后缀从.gz改成.zip,只为绕过我们写死的logcheck扫描路径。这些事,没人教你怎么审,也没工具能自动标红。它们就在盲区里长肉,长到比你的备份周期还厚。 我现在在补。补什么?补一个临时脚本,每两小时自动cat /var/log/audit/audit.log | grep -E "(exec|ioctl|ptrace)" >> /tmp/audit-hotline.txt。没做HA,没进CI/CD,没写README。就是扔在一台能连外网的跳板机上跑。要是哪天它自己挂了,我就再手敲一遍。反正这事本来能避免——只要当初迁移日志组件时,我逼着自己多花二十分钟,手动在剩下那四台老机器上敲一遍systemctl enable auditd && systemctl start auditd。但当时我看表,快七点了,想着回家煮面,面条比auditd重要。 (编辑:站长网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |


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