Skip to content

horsley/dumpDockerSock

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

2 Commits
 
 
 
 
 
 
 
 

Repository files navigation

Docker Socket Protected Proxy (带审计日志)

有些程序会直接操作宿主机的 /var/run/docker.sock,这相当于拿到了宿主机的 root 权限。这个项目提供一个“原样转发”的 Unix Socket 代理:

  • 监听:/var/run/docker.sock.protected
  • 转发到:/var/run/docker.sock
  • 记录审计日志:连接来源(Linux 下可拿到 peer pid/uid/gid)、请求第一行(Docker API 的 HTTP request line)、连接时长、上下行字节数

注意:它只做审计,不做鉴权/拦截;拿到 docker.sock.protected 的程序仍然可以做任何 Docker API 操作。

构建镜像

docker build -t dockersock-audit-proxy:latest .

运行(关键:如何 mount)

最简单的做法是把宿主机的 /var/run 整个 bind mount 进容器,这样容器既能访问 docker.sock,也能在同目录创建 docker.sock.protected

docker run --rm -d \
  --name dockersock-audit-proxy \
  -v /var/run:/var/run \
  dockersock-audit-proxy:latest

运行后,宿主机上会出现新的 socket:

  • /var/run/docker.sock.protected

你可以让需要“受保护 socket”的程序改用它,例如:

docker -H unix:///var/run/docker.sock.protected ps

或者:

export DOCKER_HOST=unix:///var/run/docker.sock.protected
docker ps

查看审计日志:

docker logs -f dockersock-audit-proxy

docker-compose 示例

services:
  dockersock-audit-proxy:
    build: .
    container_name: dockersock-audit-proxy
    volumes:
      - /var/run:/var/run
    restart: unless-stopped

配置项

支持参数或环境变量(环境变量优先级更高):

  • LISTEN_PATH / -listen:默认 /var/run/docker.sock.protected
  • UPSTREAM_PATH / -upstream:默认 /var/run/docker.sock
  • SOCKET_MODE / -socket-mode:默认 0660
  • LOG_JSON / -log-json:默认 false
  • LOG_REQUEST / -log-request:默认 true,打印完整 HTTP 请求(按连接捕获;可能被截断)
  • LOG_REQUEST_MAX_BYTES / -log-request-max-bytes:默认 1048576(1MiB),0 表示不限制(注意内存/日志体积)
  • LOG_REQUEST_ENCODING / -log-request-encoding:默认 text,可选 text|base64
  • LOG_RESPONSE / -log-response:默认 true,打印完整 HTTP 响应(按连接捕获;可能被截断;流式响应可能很大)
  • LOG_RESPONSE_MAX_BYTES / -log-response-max-bytes:默认 1048576(1MiB),0 表示不限制(注意内存/日志体积)
  • LOG_RESPONSE_ENCODING / -log-response-encoding:默认 text,可选 text|base64
  • MAX_SNIFF_BYTES / -max-sniff-bytes:默认 8192
  • DIAL_TIMEOUT / -dial-timeout:默认 5s

例如输出 JSON 日志:

docker run --rm -d \
  --name dockersock-audit-proxy \
  -e LOG_JSON=1 \
  -v /var/run:/var/run \
  dockersock-audit-proxy:latest

安全提示

打印完整请求/响应可能包含敏感信息(例如 build 参数、环境变量、registry 凭据、日志输出等)。如果你担心泄露,建议:

  • -e LOG_REQUEST_ENCODING=base64(避免控制字符/二进制污染日志)
  • -e LOG_RESPONSE_ENCODING=base64(避免控制字符/二进制污染日志)
  • 降低 LOG_REQUEST_MAX_BYTES 或关闭 LOG_REQUEST
  • 降低 LOG_RESPONSE_MAX_BYTES 或关闭 LOG_RESPONSE

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors