本帖最后由 下一代防火墙 于 2025-8-31 21:57 编辑
一、梗概 本文提供了一种骚操作,实现atrust对接https接口时,可实现明文抓包,通过明文报文从而进行快速排障。 二、简介 在atrust落地过程中,经过遇到与http/https接口对接的场景,如https主认证、https对接短信网关,甚至与企业微信、钉钉都是通过https接口进行对接。在对接上线过程中,经过或遇到对接报错的情况,常规的排障思路为有三种。 1、分析接口请求日志。 控制中心/综合网关webconsole处输入atrust_tool log set sdp-passport DEBUG开启认证调试日志,复现现象后,通过cp /hislog/log/sdp-passport/sdp-passport-web.log /shared提取日志,或直接tail -f hislog/log/sdp-passport/sdp-passport-web.log 查看实时日志进行排障。 2、自动化日志分析工具 atrust提供了日志分析工具,可实现CAS/oauth2,企业微信,钉钉,飞书认证问题日志分析,协助问题快速定位解决。详见如下链接。 https://support.sangfor.com.cn/productTool/read?product_id=19&id=94&category_id=0 3、抓包分析 个人最喜欢抓包排查问题,尤其是对接第三方https接口,先在本地PC用POSTMAN调用业务接口成功后,再去atrust配置,如atrust请求失败,本地却成功,直接在PC与atrust抓包,并对比二者请求,经过可快速定位问题。即使接口厂商排查问题时,直接提供明文数据包,接口厂商也可快速协助定位问题。 对于https接口,本地PC可配置wireshark、环境变量实现解密,对于atrust访问https接口,如何实现解密呢,思路如下。 三、atrust访问https接口解密思路 1、atrust新建web应用,后端协议为https,后端地址为认证接口地址,前端协议为http,前端地址必须为域名,可自定义一个不存在的域名,勾选使用后端地址为请求HOST, 2、配置免认证 如代理网关80端口未发布到互联网上,可直接基于全部IP免认证,也可配置指导IP免认证,IP地址配置为控制中心的IP。如果控制中心为多IP,此IP配置为控制中心访问代理网关的IP。 3、配置控制中心HOSTS IP地址为代理网关的IP,主机名为第一步配置的前端地址的域名
4、ACL放通 确认代理网关可访问到认证接口地址与端口,确认控制中心可访问到代理网关IP的WEB资源前端端口。 5、修改认证配置 将现有的https认证配置中协议改为http,地址改成WEB资源的前端域名。此时抓到的报文即为明文,可去复现问题并抓包分析了。 四、原理总结 此骚操作的原理是利用atrust的web资源功能,将https认证接口发布为http协议的web资源,atrust从直接访问https认证接口改为atrust访问代理网关的http协议web资源,代理网关再去访问真实https认证接口,从而实现明文抓包排障。 五、注意事项 1、笔者仅测试控制中心与代理网关分离式场景,未验证综合网关HOSTS IP配置为自身IP是否好用。 2、对于兼容性,个人认为理论上问题不大,毕竟请求接口操作比较简单,而非浏览器交互,也不排除对部分接口存在兼容性问题。笔者实测企业微信同步用户接口按此骚操作无问题。 3、此操作仅用于排障,定位问题后请删除web资源、HOSTS等配置,并恢复认证配置。 |