Skip to content
KitploitKITPLOIT
工具博客
Log in
提交
工具博客
提交

黑客、渗透测试和网络安全工具,武装您的安全武器库!

Kitploit 是一个黑客、网络安全和渗透测试工具的目录。发现最新的项目更新,查找漏洞、分析系统、自动化测试并加强你的安全。

··订阅源·联系·隐私·© 2026 Kitploit

工具目录

分类

查看所有分类
Loading categories
iron-proxy — 用于不可信工作负载的出站防火墙。 | Kitploit
工具/GitHubGitHub/paradigmxyz/iron-proxy
容器安全Web代理与拦截数据泄露Web安全网络安全云安全DevSecOps数据库安全
GitHubparadigmxyz/iron-proxy

iron-proxy

用于不可信工作负载的出站防火墙。

查看仓库
682481136天前Kitploit 审核通过

最受欢迎

查看全部 →

发现我们社区最常用的工具。

探索所有工具

浏览我们的工具集合

查看所有工具 →
分享
网站

iron-proxy

Docs Latest Release Docker Pulls

问题所在

CI 任务、AI 编码代理和沙箱容器可以发起任意的出站请求。一个被攻陷的依赖、一次提示注入,或一个恶意的构建步骤,都可能窃取机密、回连外部服务器,或打开反向 shell。大多数团队对工作负载外发的流量毫无可见性,更不用说阻止它了。

iron-proxy 的作用

iron-proxy 是一个内置 DNS 服务器的 MITM 出站代理,位于不受信任的工作负载与互联网之间。它在网络边界强制执行默认拒绝策略,因此工作负载只能访问你明确允许的域名。真实机密永远不会进入沙箱。工作负载使用代理令牌,iron-proxy 在出站时替换为真实凭据,这意味着即使工作负载被攻陷,攻击者窃取到的令牌在代理之外也毫无价值。

单一二进制文件。单一 YAML 配置。

  • 默认拒绝出站。 除非目标匹配你的允许列表,否则每个出站请求都会被阻止。列出你的域名和 CIDR,其他所有请求都会收到 403。
  • 上游 IP 拒绝列表。 即使某个主机被允许,如果其解析后的地址落在被拒绝的 CIDR 内,代理也会拒绝拨号——从而堵住 SSRF/DNS 重绑定漏洞,即允许列表中的主机名指向 IMDS 或回环地址。云元数据端点(169.254.169.254、fd00:ec2::254 和 fd20:ce::254)以及回环地址默认被拒绝;可通过 proxy.upstream_deny_cidrs 或 IRON_PROXY_UPSTREAM_DENY_CIDRS 覆盖。
  • 边界级机密注入。 工作负载发送代理令牌;iron-proxy 在请求离开前将其替换为真实机密。如果沙箱被攻陷,攻击者得到的令牌在代理之外毫无用处。
  • 逐请求审计追踪。 每个请求都以结构化 JSON 记录,包含完整的转换管道结果:哪些机密被替换、哪些规则匹配、什么被阻止以及原因。
  • 流式感知。 WebSocket 升级和 Server-Sent Events 原生代理。对于保持长连接的代理工作负载无需特殊配置。
  • 显式代理支持。 可选的隧道监听器,适用于原生支持通过 HTTP_PROXY、HTTPS_PROXY 或 SOCKS5 设置进行代理配置的工具。
  • PostgreSQL MITM 代理。 可选的监听器,根据代理管理的凭据对客户端进行身份验证,在上游会话中注入 SET ROLE,并通过 SQL AST 遍历拒绝客户端修改角色的尝试(SET ROLE、set_config('role', ...)、DO 块等)。与 PostgreSQL 行级安全配合使用,当应用程序以共享服务账户用户连接时,可实现按租户的数据隔离。要求 PgBouncer(如果使用)以 pool_mode = session 运行——事务或语句池模式会在查询之间静默重新绑定后端,从而破坏该策略。详情请参阅 docs.iron.sh。

专为 CI 流水线、GitHub Actions、AI 代理(Claude Code、Cursor、Codex)以及任何运行你并不完全信任的代码的环境而构建。

阻止数据窃取 + 机密重写实战演示:

安装

Docker 镜像可在 Docker Hub 获取, 适用于 Linux/macOS(amd64/arm64)的预构建二进制文件可在 GitHub Releases 获取。

或从源码构建:```bash go build -o iron-proxy ./cmd/iron-proxy

## 快速开始```bash
cd examples/docker-compose
docker compose up

这会启动 iron-proxy 和一个演示客户端,该客户端通过代理发起五个请求。查看日志以了解被允许、被阻止以及被重写密钥的请求:```bash docker compose logs proxy

每个请求都会生成一条结构化的 JSON 审计条目:```json
{
  "host": "httpbin.org",
  "method": "GET",
  "path": "/headers",
  "action": "allow",
  "status_code": 200,
  "duration_ms": 142,
  "request_transforms": [
    { "name": "allowlist", "action": "continue" },
    {
      "name": "secrets",
      "action": "continue",
      "annotations": { "swapped": [{ "secret": "OPENAI_API_KEY", "locations": ["header:Authorization"] }] }
    }
  ]
}

被拒绝的请求包含一个 rejected_by 字段,并以 WARN 级别记录日志。完整模式请参见 审计日志格式。

生产环境使用

1. 生成 CA

iron-proxy 通过动态生成由您提供的 CA 签名的叶子证书来终止 TLS。客户端容器必须信任此 CA。```bash mkdir -p certs openssl genrsa -out certs/ca.key 4096 openssl req -x509 -new -nodes
-key certs/ca.key
-sha256 -days 3650
-subj "/CN=iron-proxy CA"
-addext "basicConstraints=critical,CA:TRUE"
-addext "keyUsage=critical,keyCertSign"
-out certs/ca.crt

### 2. 创建 Docker 网络

iron-proxy 需要一个固定 IP,以便容器可以将其 DNS 指向它:```bash
docker network create --subnet=172.20.0.0/24 iron-proxy

3. 启动 iron-proxy

创建一个包含你的密钥的环境文件(不要将其纳入版本控制):```bash echo "OPENAI_API_KEY=sk-real-key" > .env

## 核心功能

- **多协议支持**:HTTP/HTTPS、SOCKS4、SOCKS5 代理
- **智能验证**:自动检测代理可用性
- **地理位置**:IP 地理定位和 ISP 信息
- **匿名检测**:识别透明、匿名和精英代理
- **并发处理**:多线程代理检查
- **多种输出格式**:JSON、CSV、TXT
- **实时进度**:实时进度条和统计信息
- **灵活输入**:支持单个代理、文件或 stdin
- **自定义超时**:可配置的连接超时
- **重试机制**:自动重试失败的检查

## 安装

### 从源码安装

```bash
git clone https://github.com/yourusername/proxy-checker.git
cd proxy-checker
pip install -r requirements.txt

依赖项

  • Python 3.7+
  • requests
  • colorama
  • tqdm

使用方法

基本用法

# 检查单个代理
python proxy_checker.py -p 192.168.1.1:8080

# 从文件检查代理
python proxy_checker.py -f proxies.txt

# 从 stdin 检查代理
cat proxies.txt | python proxy_checker.py

高级用法

# 使用自定义超时和线程数检查代理
python proxy_checker.py -f proxies.txt -t 10 -c 50

# 以 JSON 格式输出结果
python proxy_checker.py -f proxies.txt -o json

# 保存结果到文件
python proxy_checker.py -f proxies.txt -o csv -O results.csv

# 启用详细输出
python proxy_checker.py -f proxies.txt -v

命令行选项

-p, --proxy PROXY       要检查的单个代理
-f, --file FILE         包含代理列表的文件
-t, --timeout TIMEOUT   连接超时时间(秒)(默认:5)
-c, --concurrent NUM    并发线程数(默认:20)
-o, --output FORMAT     输出格式:json、csv、txt(默认:txt)
-O, --output-file FILE  将结果保存到文件
-v, --verbose           启用详细输出
--no-geo                禁用地理位置查询
--no-anonymity          禁用匿名检测
--retry NUM             失败检查的重试次数(默认:1)
--version               显示版本信息

输入格式

代理应按照以下格式提供,每行一个:

protocol://host:port
protocol://user:pass@host:port
host:port

示例:

http://192.168.1.1:8080
socks5://user:[email protected]:1080
192.168.1.1:3128

输出格式

TXT(默认)

[+] 192.168.1.1:8080 - HTTP - 精英 - 美国 - 正常
[-] 192.168.1.2:8080 - 连接失败

JSON

{
  "results": [
    {
      "proxy": "192.168.1.1:8080",
      "protocol": "http",
      "status": "working",
      "anonymity": "elite",
      "country": "United States",
      "isp": "Example ISP",
      "response_time": 0.523
    }
  ],
  "statistics": {
    "total": 1,
    "working": 1,
    "failed": 0
  }
}

CSV

proxy,protocol,status,anonymity,country,isp,response_time
192.168.1.1:8080,http,working,elite,United States,Example ISP,0.523

匿名级别

  • 透明:代理会转发您的真实 IP 地址
  • 匿名:代理会隐藏您的真实 IP,但会暴露其自身为代理
  • 精英:代理会隐藏您的真实 IP,且不会暴露其自身为代理

工作原理

  1. 解析:解析并验证代理格式
  2. 连接:尝试通过代理建立连接
  3. 验证:检查代理是否正常工作
  4. 匿名检测:确定代理的匿名级别
  5. 地理位置:获取代理服务器的地理位置信息
  6. 报告:以所选格式输出结果

性能提示

  • 根据您的网络和代理服务器调整并发线程数
  • 对于速度较慢的代理,增加超时时间
  • 使用 --no-geo 和 --no-anonymity 标志可加快检查速度
  • 对于大型代理列表,考虑使用更高的并发数

常见问题

代理检查失败

  • 验证代理地址和端口是否正确
  • 检查代理是否需要身份验证
  • 确保您的网络可以访问代理服务器
  • 尝试增加超时时间

地理位置查询失败

  • 检查您的互联网连接
  • 地理位置 API 可能存在速率限制
  • 使用 --no-geo 标志可跳过地理位置查询

性能问题

  • 减少并发线程数
  • 增加超时时间
  • 检查您的网络带宽

贡献

欢迎贡献!请随时提交 Pull Request。

  1. Fork 本仓库
  2. 创建您的功能分支(git checkout -b feature/AmazingFeature)
  3. 提交您的更改(git commit -m 'Add some AmazingFeature')
  4. 推送到分支(git push origin feature/AmazingFeature)
  5. 打开一个 Pull Request

许可证

本项目采用 MIT 许可证 - 详情请参阅 LICENSE 文件。

免责声明

本工具仅供教育和安全研究目的使用。用户有责任遵守所有适用的法律和法规。作者不对本软件的任何滥用行为负责。

致谢

  • 感谢所有贡献者和用户
  • 使用 Python 和开源库构建

支持

如果您遇到任何问题或有任何疑问,请:

  1. 查看文档
  2. 搜索现有的问题
  3. 创建一个新的问题,并附上详细信息

注意:请务必负责任地使用此工具,并遵守您所在司法管辖区的所有适用法律。```bash docker run -d --name iron-proxy
--network iron-proxy --ip 172.20.0.2
-v $(pwd)/proxy.yaml:/etc/iron-proxy/proxy.yaml:ro
-v $(pwd)/certs/ca.crt:/etc/iron-proxy/ca.crt:ro
-v $(pwd)/certs/ca.key:/etc/iron-proxy/ca.key:ro
--env-file .env
ironsh/iron-proxy:latest -config /etc/iron-proxy/proxy.yaml

### 4. 通过代理路由容器

最简单的方法是使用基于 DNS 的路由:将容器的 DNS 指向
iron-proxy,所有主机名查询都会解析到代理 IP,从而自动将流量
路由通过代理:```bash
docker run --rm \
  --network iron-proxy \
  --dns 172.20.0.2 \
  -v $(pwd)/certs/ca.crt:/certs/ca.crt:ro \
  curlimages/curl --cacert /certs/ca.crt https://httpbin.org/get

为了更强的执行力度,可以叠加 nftables 规则来阻止非代理出口流量,或使用 TPROXY 进行内核级拦截。关于每种方法的详细信息,请参阅将流量路由到 代理。

为什么选择 iron-proxy?

下载工具