如何用Osquery获取连接GCP虚拟机/Web应用的IP?含HTTP包排查
用Osquery查询Web应用的连接IP(HTTP/HTTPS)
作为Osquery新手,你可以通过内置的系统状态表来获取连接到Web应用的IP,以下是实用的查询语句和说明:
1. 查询当前活跃的HTTP/HTTPS连接
执行以下SQL查询,可直接获取当前正在连接到80/443端口的外部IP,以及对应的Web应用进程信息:
SELECT remote_address, remote_port, local_port, process.name, process.pid FROM tcp_connections JOIN processes AS process ON tcp_connections.pid = process.pid WHERE local_port IN (80, 443) AND remote_address != '';
tcp_connections:存储系统所有活跃TCP连接的核心表,remote_address字段即为外部连接IP- 关联
processes表可以确认连接对应的Web应用进程(比如nginx、apache或你的自定义Web服务) - 过滤
local_port为80(HTTP)或443(HTTPS),排除空的remote_address(避免本地回环连接)
2. 监控新增的HTTP/HTTPS连接事件
如果需要实时监控新建立的连接,可使用Osquery的事件订阅功能,执行以下查询(需开启事件支持):
SELECT action, remote_address, remote_port, local_port, process.name, process.pid FROM socket_events JOIN processes AS process ON socket_events.pid = process.pid WHERE local_port IN (80, 443) AND remote_address != '' AND action = 'connect';
socket_events表监控套接字的创建、连接等事件,action = 'connect'筛选新建立的连接- 运行该查询时,需要在启动Osquery时添加
--enable_events参数(比如osqueryi --enable_events),或在Osquery配置文件中启用事件订阅
注意事项
- Osquery是系统状态查询工具,不直接解析HTTP数据包内容,如果需要查看具体HTTP请求内容,需配合
tcpdump等抓包工具使用 - 部分AI工具可能会虚构Osquery不存在的表(比如
http_requests),Osquery官方内置表可通过SELECT name FROM osquery_tables;查询确认
内容的提问来源于stack exchange,提问作者Andrea
相关产品推荐
相关产品推荐

