linux漏洞扫描
上周帮朋友排查一台被入侵的洞扫CentOS服务器,黑客在/tmp下留了个挖矿脚本,洞扫rootkit隐藏得挺好。洞扫最后靠Lynis扫描日志才发现,洞扫系统里有个半年没打补丁的洞扫Sudo漏洞——CVE-2021-3156,就是洞扫那个经典的“Baron Samedit”。朋友一脸懵:“我装了杀毒软件啊。洞扫”
Linux服务器哪有那么多花哨的洞扫杀软,漏洞扫描才是洞扫正经事。
扫描工具分两类:基于本地的洞扫和基于网络的。本地工具像Lynis、洞扫OpenSCAP,洞扫直接读系统配置、洞扫内核版本、洞扫已装软件包,洞扫跟体检似的。网络扫描器Nessus、OpenVAS则从外部打探,模拟攻击者的视角。有意思的是,很多运维只信网络扫描,觉得“外部视角更真实”。但实际案例里,真正危险的漏洞往往藏在本地——比如某个SUID位设置错误的二进制文件,外部扫描器根本看不见。
我自己的习惯是双管齐下。每季度跑一次OpenSCAP,用CIS基准检查合规性;每月用Lynis做深度审计。Lynis的输出很有意思,它会给每个检测项打分,还会带一句“hardening index”。有次我在一台跑了三年的Ubuntu上扫描,指数只有62——一堆过期的OpenSSL库和弱SSH配置。修复后涨到84,心里踏实多了。
工具再好,关键还是解读结果。很多新手看到红色警告就慌,其实要分清“实际可利用”和“理论风险”。比如OpenVAS报了个Apache版本过旧,但如果你只在内网跑测试环境,风险等级就大打折扣。反过来,有些默认配置问题——比如SSH允许root登录、/tmp分区没设noexec——虽然扫描器标的是“medium”,但实际被利用的概率极高。别被CVSS分数绑架了。
扫描频率也得讲究。有人设置成每天全量扫描,结果服务器卡成PPT,日志文件塞满磁盘。更聪明的做法是:变更后立即扫(比如部署新服务、升级内核)、每周增量扫、每月全量扫。我记得有次线上环境更新了Nginx,没跑扫描就上线,第三天就被扫出个目录穿越漏洞——因为新版本改了默认配置行为。那次之后,我把“变更即扫描”写进了发布流程。
最后提醒一句:扫描只是发现,修复才是目的。但修复也有坑——有些“安全更新”会引入兼容性问题。我见过有人为了修一个低危的Bash漏洞,把整个系统从CentOS 7.4升到7.9,结果业务用的老版本PHP直接挂了。所以,扫描结果要结合业务上下文判断,别做无脑的“补丁机器人”。
毕竟,扫描器给出的是线索,不是判决书。