Linux安全环境搭建:9年云架构师实战指南
|
工位上的键盘声吵得我头疼——隔壁测试又在敲他那套自动化脚本,手机还亮了一下,是监控群又跳了条“SSH端口扫描告警”。去年九月份那档子事,现在想起来还后怕:当时给客户搭的Linux集群,被扫出三个高危漏洞,客户直接拍桌子说“你们云架构师就这水平?” 我原以为安全配置就是改改/etc/ssh/sshd_config,结果那台机器的sudo权限居然能通过“ALL=(ALL) NOPASSWD: ALL”直接提权——这他妈是运维小哥半年前为了“方便调试”偷偷加的,没走工单没留记录,查日志时发现这行配置的修改时间比系统上线还早三个月。说白了,安全这事儿,优胜劣汰的规则比代码还狠:你漏一个点,黑客就能顺着钻进来,根本不给你补救的机会。 咖啡凉了,我接着说。那会儿最扯的是防火墙规则,客户要求“只放行80、443、22”,结果运维图省事用了“iptables -P INPUT ACCEPT”先放行所有,再一条条加拒绝规则——我翻历史命令时差点笑出声,这操作跟“先把门拆了,再拿椅子堵”有什么区别?更绝的是,他加的拒绝规则里漏了3306端口,MySQL直接裸奔了半个月,要不是客户自己扫出来,我们都不知道数据早被拖走了。 前端小妹凑过来问:“那你们后来怎么解决的?”我敲了敲屏幕:“先是把所有机器的sudoers文件锁死,谁再敢加NOPASSWD直接邮件抄送CTO;然后换了ufw,虽然性能差点,但至少规则是可视化的,运维再想偷懒也得掂量掂量。”她哦了一声,又回去改她的React组件了——其实她不懂,安全配置这玩意儿,跟写接口一样,你少一个参数校验,用户就能传恶意数据进来,只不过这次的用户是黑客,后果更狠。 说到参数校验,我想起上周跟产品吵的那架。他要给所有API加“安全水印”,说是“防止数据泄露”,我直接怼回去:“你知不知道加个水印要多查三次Redis?现在QPS已经挺高了,再这么搞,缓存穿透分分钟教你做人。”他不服气:“那安全不重要吗?”我指了指监控大屏:“重要,但得先保证服务不挂。你看现在超时率都到5%了,再加水印,直接飙到15%,到时候客户骂的是谁?”他撇撇嘴走了,我猜他肯定觉得我“不懂安全”——其实他不懂,安全是优胜劣汰的,你为了安全把服务搞挂了,客户转头就换供应商,谁管你水印不水印? 回到去年九月的漏洞,最坑的是日志。客户扫出漏洞后,我们查日志想定位入侵路径,结果发现/var/log/auth.log被轮转了,只留了最近七天的记录——运维小哥说“按默认配置走的”,我查了下,默认确实是七天,但问题是,我们集群的机器多,日志量又大,七天前的日志早被清空了。后来没办法,只能让客户把所有机器的logrotate配置改成“keep 30d”,还加了条规则:所有安全相关日志必须单独存,不能跟系统日志混在一起。说白了,日志这事儿,跟缓存一样,你存少了,出事时没证据;存多了,磁盘又不够——得在两者之间找个平衡点,优胜劣汰,存最有价值的。 窗外的天黑了,测试还在敲键盘。我喝了口凉咖啡,继续吐槽:其实安全配置最烦的不是技术,是人。运维为了方便,偷偷改配置;产品为了“安全”,乱加功能;前端为了“用户体验”,把HTTPS证书有效期设成十年——这些操作,哪个不比漏洞本身更危险?我见过最离谱的,是有个同事为了“快速部署”,直接把root密码写在Ansible的playbook里,还提交到了GitLab的公开仓库——要不是我偶然扫到,这密码早被爬虫抓走了。 现在每次搭新集群,我都得先检查三件事:sudo权限、防火墙规则、日志配置。这三样但凡漏一个,后面准出事。就像上周那台机器,我原以为防火墙规则已经锁死了,结果重启后发现ufw没自动启动——运维小哥说“忘了加到/etc/rc.local里”,我直接让他重写部署脚本,必须用systemd管理服务,不能再依赖rc.local这种老古董。说白了,安全这事儿,优胜劣汰的规则太狠了:你今天偷的懒,明天就会变成漏洞,后天就会变成事故,大后天就会变成客户流失——到时候,谁还管你当初是怎么想的?
文章配图,仅供参考 手机又亮了,是监控群跳了条“MySQL慢查询告警”。我叹了口气,关掉吐槽窗口,准备去查日志——这次,我得先确认日志存够了,再确认防火墙没放行奇怪端口,最后确认sudo权限没乱给。优胜劣汰的世界里,安全配置没有“差不多”,只有“行不行”。(编辑:站长网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |

