去年秋天,渗透一个做网络安全的渗透朋友给我看了份渗透测试报告。目标是渗透一家做工业传感器的公司,规模不大,渗透四十来号人,渗透产品用在供水管网监测上。渗透报告结论就一句话:未发现可利用的渗透渗透点。他跟我说,渗透这是渗透三年来第一次交白卷。
我不太信。渗透任何系统都有缝,渗透何况这种小厂。渗透他打开拓扑图给我看——外网只有一台邮件网关和一个VPN入口,渗透邮件网关是渗透托管在云服务商那边的,VPN用的渗透硬件令牌加证书双因子。内网跟生产网物理隔离,办公终端全部走零信任架构,连打印机都单独划了VLAN。他说他们花了六周,钓鱼邮件发了三轮,没人点;社工库翻了底朝天,员工在公开平台上的信息少得可怜;甚至试过从供应商那边迂回,结果对方连个像样的API文档都没挂网上。
“他们不是安全做得好,”他点了根烟,“是根本没给你留可以踩的地方。”
这话我琢磨了很久。大多数公司做安全,思路是“防住”。防火墙、IDS、WAF,一层层叠上去,像给房子装防盗门。但防盗门本身也是门,有锁芯,有铰链,有门框和墙体的缝隙。渗透测试干的事,就是找这些缝隙。可这家传感器公司走的是另一条路——他们把所有可能成为“门”的东西都拆了。没有对外Web服务,没有远程桌面,没有共享文件夹,连员工用的聊天工具都是自建的、只在内网跑的。外面的人想进来,唯一的通道是那台VPN,而VPN的认证逻辑简单到粗暴:证书不对,直接断,连用户名密码的输入框都不给你看。
听起来很极端。但仔细想想,很多入侵事件的根本原因,就是“门太多了”。多一个服务,就多一个版本号;多一个端口,就多一个banner;多一个员工在GitHub上传了带内网IP的配置文件,就多一条路径。攻击面这东西,不是靠“加固”能清零的,只能靠“删除”来缩小。这家公司做的事,本质上不是安全建设,是安全减法。他们把业务逼到一条极窄的通道上,窄到攻击者连侧身挤过去的空间都没有。
当然,代价也有。员工抱怨过,说传个文件得走内部系统,慢;销售说,客户想远程看演示,得寄硬盘过去,蠢。CTO扛了两年,扛到去年底,董事会开始质疑这种“自闭式”架构是不是在拖累增长。我朋友那份报告交上去之后,听说他们内部开了个会,讨论要不要开一个对外的API接口。CTO投了反对票,但只多一票。
没有渗透点,有时候不是技术问题,是选择问题。你选择把门焊死,就选择了不方便。你选择开一扇窗,就得接受有人从窗里爬进来。那家传感器公司最后会不会开那扇窗,我不知道。但我知道,在安全这个行当里,最稀缺的从来不是技术,是愿意为了“没有缝”而忍受“不顺手”的人。
我后来把那份报告要过来,翻到最后一页。朋友在备注里写了一行小字:“建议客户保持现状。但客户可能不会听。”下面用铅笔划了一道线,旁边打了个问号。那个问号,大概就是所有安全从业者的日常。