如何识别企业网络中发往github.com的代码提交/推送相关流量?
GitHub代码推送的网络请求分析与流量筛选
关于PUSH请求的推测
你的推测部分正确,需结合Git的两种主流传输协议区分:
- 若使用HTTPS方式推送代码,设备会向GitHub的HTTPS端点(格式如
https://github.com/<用户名>/<仓库名>.git)发送HTTP POST请求——这不是标准REST API的PUSH方法,而是Git基于HTTP自定义的交互流程,底层用POST传输推送数据。 - 若使用SSH方式推送,不会走HTTP/HTTPS的URL或API,而是直接通过SSH协议(默认22端口)与GitHub的SSH服务器通信,不存在传统意义上的HTTP PUSH请求。
能否导出并筛选GitHub推送相关流量?
可以,但需针对不同传输协议分别处理:
1. 筛选HTTPS协议下的推送流量
- 先导出全量网络请求的目标地址,再通过以下特征筛选:
- 目标域名包含
github.com - 请求路径匹配Git仓库端点格式:
/<用户名>/<仓库名>.git - 请求方法为POST(Git over HTTPS的核心推送动作依赖POST请求)
- 目标域名包含
- 以Wireshark为例,可使用过滤规则:
http.host contains "github.com" and http.request.method == "POST" and http.request.uri matches "^/[^/]+/[^/]+\.git"
2. 筛选SSH协议下的推送流量
- SSH方式无HTTP URL,需通过以下特征筛选:
- 目标IP属于GitHub的SSH服务器IP段(可通过DNS解析工具或官方公布的IP范围获取)
- 目标端口为22
- SSH会话负载包含
git-receive-pack关键字(Git推送时的核心交互命令)
- 以Wireshark为例,可使用过滤规则:
tcp.port == 22 and ip.dst in <GitHub SSH IP段> and tcp.payload contains "git-receive-pack"
注意事项
- GitHub的IP范围会动态更新,需确保使用最新的官方IP段。
- 私有仓库与公开仓库的推送流量传输机制完全一致,无法仅通过网络流量区分,需结合用户身份或仓库权限信息进一步判断。
内容的提问来源于stack exchange,提问作者IMTheNachoMan
相关产品推荐
相关产品推荐

