tkanov/egresslens

GitHub: tkanov/egresslens

EgressLens 是一款专为监控 Docker 中 Python 应用出站网络活动而设计的工具,提供可视化界面和日志分析功能。

Stars: 0 | Forks: 0

# EgressLens 追踪Docker中Python应用的出站网络活动,将事件写入JSONL格式,并通过小型网页界面检查结果。 [![License: MIT](https://img.shields.io/badge/License-MIT-blue.svg)](LICENSE) [![Python 3.8+](https://img.shields.io/badge/python-3.8+-blue.svg)](https://www.python.org/downloads/) [![Docker 20.10+](https://img.shields.io/badge/docker-20.10+-2496ED.svg)](https://www.docker.com/) ## 功能说明 EgressLens在`strace`下运行应用,捕获IPv4网络系统调用,并生成: - `egress.jsonl`:解析后的连接事件 - `egress.strace`:原始跟踪输出 - `run.json`:命令、镜像、计时、退出码和事件计数 后端可以通过跟踪中被动DNS观察到的域名来丰富上传的报告,然后对未解析的公共IPv4地址进行有界反向DNS查询。 ## 快速开始 要求:Docker 20.10+、Python 3.8+,以及用于UI的Node.js 18+。 ``` pip install -e cli/ docker build -t egresslens/base:latest . egresslens run-app ./sample_app --args "dns example.com" ``` 输出将位于`egresslens-output/`目录中。 ## 查看报告 启动API: ``` cd backend python3 -m venv .venv source .venv/bin/activate pip install -r requirements.txt uvicorn app.main:app --reload --port 8000 ``` 启动UI: ``` cd frontend npm install npm run dev ``` 打开`http://localhost:5173`并上传: - `egresslens-output/egress.jsonl`作为报告 - `egresslens-output/run.json`作为元数据 - `egresslens-output/egress.strace`用于域名丰富 ![报告视图](https://static.pigsec.cn/wp-content/uploads/repos/2026/05/b1e9bfafd3202429.png) ## 命令行界面 追踪一个入口点为`__main__.py`、`main.py`或`app.py`的Python项目: ``` egresslens run-app ./my_python_app --args "arg1 arg2" ``` 追踪任意命令: ``` egresslens watch -- curl https://example.com ``` 常用选项: - `--out `:将输出写入其他位置 - `--image `:使用已安装`strace`的不同镜像 更多详情:[cli/README.md](cli/README.md)。 ## 仓库结构 - `cli/`:捕获网络活动并写入跟踪产物 - `backend/`:FastAPI上传、聚合、丰富和导出API - `frontend/`:用于上传和报告的React UI - `sample_app/`:用于可预测演示流量的小型应用 - `docs/getting-started.md`:包含截图的较长入门指南 ## 安全模型 跟踪需要降低隔离性的Docker设置: - `--cap-add SYS_PTRACE` - `--security-opt seccomp=unconfined` CLI仍会以只读方式挂载应用,丢弃其他权限,使用`no-new-privileges`,并提供tmpfs临时空间。将跟踪的代码视为您选择运行的代码。 ## 限制 - 仅限IPv4。目前忽略IPv6连接。 - 域名丰富功能可以看到`egress.strace`中的UDP DNS A记录应答;不覆盖DNS-over-HTTPS、DNS-over-TLS、缓存DNS、TCP DNS、AAAA记录或IPv6。 - 反向DNS回退会跳过私有和不可路由的IP范围,并受后端配置限制。 ## 许可证 MIT。参见[LICENSE](LICENSE)。
标签:DNS解析, Docker, JSONL日志, MITM代理, Python应用, SYN扫描, Web截图, Web界面, 出站流量分析, 域名解析, 安全防御评估, 容器安全, 工具开发, 应用监控, 开源项目, 系统调用跟踪, 被动DNS, 请求拦截, 逆向工具