阿里云API网关日志问题
日志格式
问题现象
访问日志中的x_forwarded_for字段为空值 "-", 如下图
引起原因
- 客户端在发求请求的时候, 没有携带sni信息, 导致在TLS协商失败, 断开连接
sni全称
sni全称, service name indication 即服务器名称指示
为什么会有这种请求
恶意扫描或攻击行为
- 很多扫描器(如 masscan、zmap)或漏洞探测工具会发起不完整的 TLS 请求,故意不带 SNI,以测试服务器响应行为。
-
某些攻击者试图绕过基于 SNI 的访问控制或 WAF(Web 应用防火墙)规则。
-
也可能是探测是否存在默认证书或错误配置。
旧版客户端或设备
-
某些老旧设备或嵌入式系统使用的 TLS 库不支持 SNI(如 OpenSSL 0.9.8)。
-
特别是在 IoT、工业控制系统或老旧浏览器中可能出现。
脚本或程序错误
-
某些自定义脚本或程序在建立 TLS 连接时没有正确设置
server_name
参数。 -
比如 Python 的
ssl.wrap_socket()
如果不设置server_hostname
,就不会发送 SNI。
代理或中间设备行为
-
某些透明代理、中间网关或负载均衡器可能会转发 TLS 请求但不附带 SNI。
-
如果这些设备配置不当,可能导致大量握手失败。
误配置或测试行为
-
内部测试工具或自动化脚本可能故意不发送 SNI 来验证网关行为。
-
某些安全团队会用这种方式测试 TLS 配置是否健壮。