Linux安全环境搭建:20年实战精要
|
去年给某金融公司搭安全环境,运维总监拍着胸脯说"按二十年最佳实践来",结果第一周就翻车——他非要在生产环境用自研的SELinux策略,说比官方模板安全三倍。我原以为他真有两把刷子,结果第三台服务器就卡在启动阶段,日志里全是"avc: denied"的报错,查半天发现是策略里漏了/dev/shm的读写权限。那天机房空调坏了,三十多度,运维小哥擦着汗说"这策略我测过啊",我盯着他屏幕上的vim界面冷笑——测的是CentOS 7,生产环境全是8,内核模块名都变了。 要说优胜劣汰,最狠的就是防火墙规则。他们之前用iptables,规则堆了三百多条,其中一百条是"临时放开"的注释——我数过,有二十三条注释里写着"测试用,用完删",结果测试完三年都没删。我直接删了所有带"临时"的规则,重启后SSH断了三次,每次都是运维总监打电话喊"别动!我本地好的!"——后来发现他本地终端走的是跳板机的特殊规则。最后我换了nftables,规则数量砍到八十条,性能还提升了十五个百分点,他才闭嘴。 最离谱的是审计日志。他们原来的配置是"记录所有成功登录",我看了眼日志文件,每天三百G,全是root用户执行"ls"的记录。我改成"记录失败登录+关键命令",结果第二天运维总监冲进办公室:"你怎么把审计关了?安全部要查!"我指着屏幕上的fail2ban配置说:"没关,只是不记废话了。"他盯着日志大小从三百G缩到三G,摸了摸鼻子说"哦...那挺好"。 中午点外卖时,隔壁工位的小王凑过来:"听说你动了审计?"我咬了口煎饼果子:"怎么?你也被骂了?"他苦笑:"何止,安全部说我的SSH密钥没设权限,可他们自己的私钥全是777。"我差点喷出来——这公司安全部自己都不守规矩,还天天查别人。下午开会时,安全部经理还在强调"所有服务器必须禁用root登录",我低头看手机,发现他十分钟前刚用root账户登录了测试环境。 要说二十年实战最管用的,还得是"最小权限原则"。他们之前给应用账户开了/usr/bin/python的权限,我查了半天发现是因为某个脚本需要调用pip。我原以为要大改代码,结果发现那脚本根本没人用——开发说"三年前写的,早就不用了"。我删了权限,世界清净了。后来又发现数据库账户能访问/etc/shadow,我问运维:"这账户需要读密码文件?"他挠头:"可能...以前需要?"我直接删了权限,数据库没崩,应用也没报错——这就是优胜劣汰,不用的权限,留着就是隐患。 最搞笑的是密钥管理。他们把所有服务器的私钥存在/root/.ssh/id_rsa,权限还是644。我说这不行,运维总监说"这样方便,所有服务器都能用"。我反问:"要是某台服务器被攻破,攻击者拿到这个私钥,是不是能访问所有服务器?"他沉默了三秒,说:"那我们改用不同的私钥?"我摇头:"晚了,攻击者可能已经拿到了。"他脸色一变,赶紧去改权限——结果改完发现应用连不上服务器了,原来是硬编码了私钥路径。最后我们用了ssh-agent转发,才解决这个问题。 下午四点,安全部突然发邮件,说所有服务器必须开启TLS 1.3。我查了下,发现他们自己的API服务还在用TLS 1.0。我回复邮件:"建议先升级自己的服务,再要求别人。"五分钟后,安全部经理打电话过来:"你这是什么意思?"我说:"字面意思,你们自己的服务都不安全,凭什么要求别人?"他挂了电话,半小时后,邮件要求被撤回了。 要说这二十年最深的体会,就是安全不是靠配置堆出来的,是靠"不用就删"的狠劲。那些自以为"以后可能用到"的权限、规则、服务,最后都会变成攻击者的突破口。优胜劣汰,不用的就淘汰,留下的才是真正需要的——就像我删掉的那些iptables规则,就像我改掉的那些权限,就像我换掉的那些过时的协议。安全环境搭建,说白了就是一场持续的清理运动,把没用的、危险的、过时的东西,统统扔进垃圾桶。
文章配图,仅供参考 现在那家公司的环境稳定多了,运维总监见我也客气了——上周他还问我:"你觉得我们该不该上eBPF审计?"我笑了笑:"先把你本地终端的特殊规则删了再说。"他摸了摸鼻子,没说话。我知道,他还在学,学怎么在安全和便利之间找平衡——就像我们所有人,都在学的那样。(编辑:站长网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |


PHP Web安全实战:防御SQL注入的交互逻辑设计
小程序服务器安全配置:端口管控与数据防护实战
Linux下H5开发环境与数据库一键配置方案
系统优化与容器编排:8年实战提效之道
Go建站性能优化与高效存储实战
VR开发编译优化与性能调优实战
Ruby老兵16年实战:网站工具链高效优化策略