Docker守护进程配置TLS身份认证

描述

可以让Docker守护进程监听特定的IP和端口以及除默认Unix套接字以外的任何其他Unix套接字。 配置TLS身份验证以限制通过IP和端口访问Docker守护进程。

隐患分析

默认情况下,Docker守护程序绑定到非联网的Unix套接字,并以root权限运行。 如果将默认的Docker守护程序更改为绑定到TCP端口或任何其他Unix套接字,那么任何有权访问该端口或套接字的人都可以完全访问Docker守护程序,进而可以访问主机系统。

因此,不应该将Docker守护程序绑定到另一个IP/端口或Unix套接字。 如果必须通过网络套接字暴露Docker守护程序,请为守护程序配置TLS身份验证

审计方法

[root@localhost ~]# systemctl status docker|grep /usr/bin/dockerd
           ├─1061 /usr/bin/dockerd -H tcp://0.0.0.0:2375 -H unix://var/run/docker.sock

修复建议

生产环境下避免开启tcp监听,若避免不了,执行以下操作。

生成CA私钥和公共密钥

$ mkdir -p /root/docker
$ cd /root/docker
$ openssl genrsa -aes256 -out ca-key.pem 4096
$ openssl req -new -x509 -days 365 -key ca-key.pem -sha256 -out ca.pem

创建一个服务端密钥和证书签名请求(CSR)

192.168.235.128为当前主机IP地址

$ openssl genrsa -out server-key.pem 4096
$ openssl req -subj "/CN=192.168.235.128" -sha256 -new -key server-key.pem -out server.csr

CA来签署公共密钥

$ echo subjectAltName = DNS:192.168.235.128,IP:192.168.235.128 >> extfile.cnf
$ echo extendedKeyUsage = serverAuth >> extfile.cnf

生成key

$ openssl x509 -req -days 365 -sha256 -in server.csr -CA ca.pem -CAkey ca-key.pem \
  -CAcreateserial -out server-cert.pem -extfile extfile.cnf

创建客户端密钥和证书签名请求

$ openssl genrsa -out key.pem 4096
$ openssl req -subj '/CN=client' -new -key key.pem -out client.csr

修改extfile.cnf

$ echo extendedKeyUsage = clientAuth > extfile-client.cnf

生成签名私钥

$ openssl x509 -req -days 365 -sha256 -in client.csr -CA ca.pem -CAkey ca-key.pem \
  -CAcreateserial -out cert.pem -extfile extfile-client.cnf

Docker服务停止,然后修改docker服务文件

停服务

$ systemctl stop docker

编辑配置文件

$ vi /etc/systemd/system/docker.service

替换ExecStart=/usr/bin/dockerd为以下

ExecStart=/usr/bin/dockerd --tlsverify --tlscacert=/root/docker/ca.pem --tlscert=/root/docker/server-cert.pem --tlskey=/root/docker/server-key.pem -H unix:///var/run/docker.sock -H tcp://192.168.235.128:2375

重启

$ systemctl daemon-reload
$ systemctl start docker

测试tls

$ docker --tlsverify --tlscacert=/root/docker/ca.pem --tlscert=/root/docker/cert.pem --tlskey=/root/docker/key.pem -H=192.168.235.128:2375 version

参考文档

Copyright © weiliang 2021 all right reserved,powered by Gitbook本书发布时间: 2024-04-22 16:03:42

results matching ""

    No results matching ""