当我决定给所有服务器做一次"全身体检"时
当我决定给所有服务器做一次”全身体检”时
说出来你们可能不信,今天我心血来潮,给所有服务器做了一次”全身体检”。结果查出来的毛病,比我上周吃的火锅里的花椒还多。
早上:心血来潮
早上到公司的时候,心情还不错。泡了杯咖啡,习惯性地打开了监控面板。嗯,一切正常,绿色的对勾赏心悦目。
但是作为一个有职业病的运维人员,你懂的——数据是可以骗人的,但直觉不会。
昨天不是刚处理了一个端口暴露的问题嘛,今天突然就有点不放心。万一还有别的端口也在偷偷裸奔呢?万一有哪个服务在后台偷偷搞事情呢?
不行,得来一次彻底的检查。
第一轮:端口大普查
说干就干,先把所有服务器的端口情况摸一遍。
这一查,好家伙,问题就出来了。
某台机器上居然跑着一个 9000 端口的服务。我记得这个端口啊,这不是 Portainer 吗?之前某位同事装的,后来不是说不用的吗?怎么还在跑?
再仔细一看,好家伙,还直接绑定了 0.0.0.0。这意味着什么?但凡有人扫到这个端口,就能直接访问你的容器管理面板。这要是被恶意利用还得了?
赶紧记录下来,待会儿统一处理。
第二轮:服务进程检查
查完端口,自然要看看进程。跑着哪些服务,哪些服务是多余的,一目了然。
结果又发现问题:某台机器上居然跑着两个版本的同一个服务。新版本是昨天刚部署的,但旧版本居然没删!这就相当于什么?你已经住进新房子了,但旧房子还留着,每次出门都得分不清该锁哪个门。
这种问题说大不大,说小不小。万一哪天搞混淆了,部署到了旧版本上,那就有意思了。
中午:配置文件的秘密
中午吃完饭,顺便看了一下配置文件。
这不看不知道一看吓一跳。某台机器的配置文件里居然还存着测试环境的 API Key!这就相当于什么?你家大门钥匙放在了门口的地垫下面,还是用透明胶带粘的。
赶紧删除,联系相关人员更换凭证。一套操作下来,总算是有惊无险。
顺便还发现了一些配置不一致的问题。比如某台机器的日志级别是 DEBUG,另一台是 INFO,还有一个是 WARN。这要是出问题查日志,不得疯掉?
下午:网络连通性测试
下午的主要工作就是测试网络连通性。
说是测试网络连通性,其实就是各个服务器之间互相 ping 一 ping,看看能不能正常通信。
结果某两台机器之间的延迟居然高达 200ms!这正常吗?这肯定不正常啊。之前这两台机器通信延迟不都是十几毫秒吗?
查了一通,发现是某台中间路由器的问题。重启了一下,延迟恢复正常。你看,有时候解决问题的方法就是这么简单——重启大法好。
晚上:总结与感悟
终于把所有的”体检”项目都做完了。泡了杯茶,坐在工位上发了会儿呆,回想起今天的经历,有几点感悟:
第一,问题都是隐藏的。 监控面板上显示的绿色对勾,不代表真的没有问题。很多问题都是隐藏起来的,等到你发现的时候,可能已经晚了。
第二,侥幸心理要不得。 之前总觉得”就一个测试服务有啥关系”,事实证明凡事就怕万一。端口暴露、配置泄露、版本混乱——这些看似小问题,真要出了事就是大事。
第三,定期体检很重要。 就像人的身体一样,服务器也需要定期做做检查。小问题及时发现及时处理,总比出大问题再补救要好。
第四,文档是保命用的。 今天查了半天才确认某个端口是干什么用的,如果有完善的文档,也不至于这么费劲。看来文档还得继续补啊。
写在最后
今天的”全身体检”虽然累,但收获还是蛮大的。发现了不少隐藏的问题,及时处理了潜在的风险。
你说这算不算上班摸鱼?我觉得算。但你说这算不算工作?我觉得也勉强算。毕竟安全无小事嘛,预防永远比补救重要。
明天继续加油吧。毕竟在上海这座城市上班已经这么辛苦了,服务器的问题能少一点就少一点吧。
作者:小六,一个在上海努力生存的普通打工人