90%服务器漏洞源于3类配置疏漏
|
去年七月份那波漏洞潮,我原以为又是哪个新框架的锅,结果抓包抓了三天,发现全是老问题——权限配置、端口开放、日志轮转,就这三样,占了九成。当时老张蹲在机房调试冷风机,说这机器声比他媳妇唠叨还吵,我盯着屏幕上的403报错,心想这他妈哪是优胜劣汰,分明是懒人淘汰勤快人。 权限配置那坑,最离谱的是有个生产环境,/etc/sudoers里居然还留着测试账号的NOPASSWD条目。我查日志时发现,有个叫“dev_test”的账号凌晨三点执行了rm -rf /var/log/,而这个账号的密码是“123456”——运维说这是三个月前离职的实习生用的,离职时没删干净。我盯着显示器右下角的时间,从23:59跳到00:00,突然想起上周五团建,市场部小李喝多了说“我们部门的测试账号,密码都是部门名+生日”,现在看来,这风气怕是从运维传过去的。 端口开放的问题更绝。有个服务器的3306端口直接裸奔,我问运维为啥不关,他说“开发说要远程连数据库调试”。我翻了下Jira记录,发现这个需求是两个月前提的,开发在评论里写“临时用一下,用完就关”,结果到现在都没关。更搞笑的是,这个服务器上还跑着财务系统,我原以为财务数据会单独隔离,结果查了下网络拓扑,发现财务系统和服务器的内网互通——这要是被扫到,直接能提款了。 那天下午下雨,我趴在工位上啃凉掉的外卖,突然收到安全组的警报,说有个IP在扫22端口。我查了下,是内网的一个测试机,运维说“可能是自动化脚本跑错了”。我让他把脚本发过来,结果发现是用Python写的,里面有个硬编码的IP列表,其中一个是生产服务器的内网地址——这脚本要是跑起来,直接能把生产环境扫崩。我打电话给写脚本的开发,他说“我以为内网IP不会出事”,我反问他“那你为啥不用变量?”,他沉默了三秒,说“我赶时间”。 日志轮转的问题,是我在查一个慢查询时发现的。有个服务的日志文件涨到了50G,导致磁盘空间不足,服务宕机。我问运维为啥不轮转,他说“日志轮转配置在/etc/logrotate.d/里,但那个服务没加进去”。我翻了下配置文件,发现确实没这个服务的条目,但旁边有个注释写着“# TODO: 添加XX服务的日志轮转”——这个TODO是两年前写的,运维说“当时忙,忘了”。我盯着那个注释看了半天,突然想起上周五下班时,看到他在工位上刷抖音,标题是“运维必知的10个省时技巧”。 这波漏洞修完后,安全组开了个复盘会,结论是“要加强安全意识培训”。我听着就想笑——意识培训能解决硬编码IP?能解决NOPASSWD?能解决TODO留两年?后来我和老张喝酒,他说“这行就是这样,新框架、新工具、新概念,天天吹得天花乱坠,但最基础的配置,反而没人重视”。我点头,心想这不就是优胜劣汰吗?懒的、粗心的、赶时间的,最后都被漏洞淘汰了,剩下的都是那些“我知道这可能出问题,但我还是做了”的人——虽然他们可能连自己都没意识到,这其实是种生存本能。
文章配图,仅供参考 不过话说回来,那波漏洞里也有个例外。有个服务器的SSH端口改了非标准端口,结果被扫到了,但攻击者没成功——因为运维在/etc/hosts.deny里加了deny from ,又在/etc/ssh/sshd_config里设了PermitRootLogin no和PasswordAuthentication no。我查了下,发现这些配置是三年前写的,运维说“当时看安全文档,照着做的”。我问他“为啥能坚持三年不动?”,他说“因为改完没报错,就忘了”。我盯着那几行配置看了半天,突然觉得,有时候“忘记”反而是种优势——至少不会因为“赶时间”或者“觉得没事”而乱改。现在每次看到“最佳实践”“安全规范”之类的词,我都有点后怕。不是怕规范本身,是怕有人把它当摆设——就像那个TODO留两年的日志轮转配置,或者那个“临时用一下”的3306端口。上周五下班时,我看到新来的实习生在改Nginx配置,用的是vim,没备份,改完直接:wq。我张了张嘴,最后什么都没说——有些坑,得自己踩过才知道疼。就像那波漏洞,要不是亲身经历,我也不会信“90%的漏洞源于三类配置疏漏”这种结论——但现在我信了,而且信得死死的。 至于怎么避免?我说不准。也许可以写个脚本,每天检查/etc/sudoers、端口开放和日志轮转配置,发现异常就发警报。但转念一想,要是运维连TODO都能留两年,脚本警报他会不会也当没看见?算了,还是先把自己手头的服务看紧点吧——毕竟,优胜劣汰的规则里,活下来的才是硬道理。 (编辑:站长网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |


游戏体验官实测:5个远程办公隐藏坑,90%玩家第3关踩雷
PHP建站避坑:90%人忽略的框架选型真相