在阿里云服务器(ECS)上,Docker API 默认监听 2375(非加密)和 2376(TLS加密)端口。如果未正确配置,可能被恶意利用(如挖矿攻击)。以下是关闭和加固 Docker API 端口的完整步骤:


1. 确认 Docker API 端口状态

# 检查 Docker 是否正在监听端口
sudo netstat -tulnp | grep dockerd
  • 如果输出包含 0.0.0.0:2375:::2375,说明 API 端口已暴露(需立即关闭)。

2. 关闭 Docker API 端口(两种方法)

方法 1:修改 Docker 配置文件(推荐)
# 编辑 Docker 配置文件(通常为 /etc/docker/daemon.json)
sudo vim /etc/docker/daemon.json
  • 添加或修改以下内容,禁用远程 API,仅允许本地 Unix Socket 通信:
    {
      "hosts": ["unix:///var/run/docker.sock"]
    }
    
  • 重启 Docker 服务:
    sudo systemctl restart docker
    
方法 2:直接修改服务启动参数
# 编辑 Docker 服务文件
sudo vim /lib/systemd/system/docker.service
  • 找到 ExecStart 行,删除 -H tcp://0.0.0.0:2375 类似参数,确保仅保留:
    ExecStart=/usr/bin/dockerd -H unix:///var/run/docker.sock
    
  • 重新加载配置并重启:
    sudo systemctl daemon-reload
    sudo systemctl restart docker
    

3. 验证端口是否关闭

# 再次检查端口监听状态
sudo netstat -tulnp | grep dockerd
  • 正确情况下应仅显示 unix socket,无 TCP 端口

4. 加固 Docker API 的其他措施

(1)启用 TLS 加密(如需远程管理)

如果必须开放远程 API,强制使用 TLS 加密(端口 2376):

# 生成 CA 和客户端证书(需替换域名)
openssl req -newkey rsa:4096 -nodes -sha256 -keyout ca-key.pem -x509 -days 365 -out ca.pem
openssl req -newkey rsa:4096 -nodes -sha256 -keyout server-key.pem -out server.csr
openssl x509 -req -days 365 -in server.csr -CA ca.pem -CAkey ca-key.pem -CAcreateserial -out server-cert.pem
  • 修改 daemon.json 启用 TLS:
    {
      "tls": true,
      "tlscert": "/path/to/server-cert.pem",
      "tlskey": "/path/to/server-key.pem",
      "hosts": ["tcp://0.0.0.0:2376", "unix:///var/run/docker.sock"]
    }
    
(2)阿里云安全组配置
  • 登录 阿里云控制台安全组 → 选择实例所在安全组。
  • 删除 2375/2376 端口的入方向规则(默认应禁止所有外网访问)。
(3)防火墙限制
# 使用 iptables 禁止外部访问 2375
sudo iptables -A INPUT -p tcp --dport 2375 -j DROP
sudo iptables -A INPUT -p tcp --dport 2376 -j DROP
# 持久化规则(Ubuntu/Debian)
sudo netfilter-persistent save

5. 监控与审计

  • 检查异常连接
    sudo journalctl -u docker | grep "connection"
    
  • 定期更新 Docker
    sudo apt-get update && sudo apt-get upgrade docker-ce
    

总结

操作 命令/步骤
关闭默认 API 端口 修改 /etc/docker/daemon.json → 只保留 unix:///var/run/docker.sock
强制 TLS 加密 配置证书并限制 hoststcp://0.0.0.0:2376
阿里云安全组 删除 2375/2376 端口的入方向规则
防火墙加固 iptables -A INPUT -p tcp --dport 2375 -j DROP

重要提醒

  • 禁止将 Docker API 暴露在公网,除非完全信任网络环境并启用 TLS。
  • 推荐使用 SSH 隧道VPN 访问 Docker,而非直接开放端口。
Logo

腾讯云面向开发者汇聚海量精品云计算使用和开发经验,营造开放的云计算技术生态圈。

更多推荐