大概发生在上年 9-10 月, 当时公司项目要过三级等保, 扫出来密码套件的问题, 这里记录一下排查过程, 以及反思

安全问题及其复现过程

nmap --script ssl-enum-ciphers -p 443 xxx.xxx.cn

这里主要使用 nmap 来嗅探出对应 https 服务器所有的密码套件, 如何嗅探出来呢? 密码套件协商? 嗅探出来有什么用呢? 可以发现对应的安全问题, 以进行后续的安全挖掘, 相关的安全问题都有哪些呢? https 真的安全吗? 这些后续再写文章进行相关探讨。

目前已知的情况是, http 服务器是 nginx.

相关尝试及解决

  • nginx 配置更改, 使用 tls 1.3 禁用 tls 1.2, 仅允许已知安全的密码套件

但是配置成功之后依旧会出现安全问题, 即 nmap 嗅探结果及提示和之前一致

  • 此时怀疑是不是 nginx 配置是否生效, 之后我将 nginx 配置单独拉了一个容器起了起来, 在生产环境测试没问题, 通过外部网络访问依旧有问题, 此时就非常疑惑, 何以本地环境自测没问题, 外部网络访问却又安全问题, 网络传输中间藏私货了? nginx 前还有其他中间件?

  • 此时基本能确定到 nginx 之前绝对有其他中间件, 到底是什么? 询问一下无用的运维, 他也不知道, 唉, 前面估计有其他的阿里云产品, 最大可能是 LB, 问是否用了 LB, 答无, 哪还有其他东西吗? 想起几个月前, 好像买了 WAF, 估计就是 WAF 了, 尝试关闭 WAF, 安全问题消失, 问题解决, 后发现是 WAF 配置的问题, 没有禁用 TLS 1.2 密码套件也未做限制, 唉, 老弟不会配就问, 后运维直接甩锅到 WAF 产品上, 追加自己和客服沟通, 最后完成产品升级及配置.... 有啥可说的呢

一些思考

统观整个问题排查, 其实就是问题不断的定位, 从大范围定位到小范围, 因为主机本地地址测试 nmap 无安全问题, 但是通过外网测试却有, 此时就能定位到 nginx 之前的中间件, 同时可以确认 nginx 安全配置生效且没问题, 后面问题的转向就去明确 nginx 之前到底有什么? 因为但是运维是有一个很拉的同事在搞, 你问他他说不出来个一二三, 他可能都不知道一个数据包进服务器都会经过哪些产品, 所以得猜, 一般会有 LB, 也可能有其他产品, 得看阿里云相关产品, 一个个问他应该就 ok 了.

整个过程还是有不少瑕似, 排除人的外部不可控的因素来看, 开始其实有点无头苍蝇似的, 应该要先想明白排查思路, 步步递进, 此是此否, 必是此必非彼. 实践上的一阵见血基本都有理论的细微洞察. 以此谨记, 不可不慎.