标签:性能 安全审计 creat 问题 lib eject 服务 service hyper
Docker 容器与虚拟机的区别docker exec -it a661258f6bfe bash
Docker remote api 访问控制
Docker的远程调用 API 接口存在未授权访问漏洞,至少应限制外网访问。建议使用 Socket 方式访问。
监听内网 ip,docker daemon 启动方式如下。
docker -d -H uninx:///var/run/docker.sock -H tcp://192.168.191.132:2375
或者
vim /usr/lib/systemd/system/docker.service
ExecStart=/usr/bin/dockerd -H unix:///var/run/docker.sock -H tcp://192.168.195.128:2375
systemctl daemon-reload
systemctl restart docker
然后,在宿主机的 firewalld 上做 IP 访问控制即可。(source address 是客户端地址)
//在其他节点访问docker状态
[root@localhost ~]# docker -H=tcp://192.168.191.132:2375 ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
限制流量流向
使用防火墙过滤器限制 Docker 容器的源 IP 地址范围与外界通讯。
firewall-cmd --permanent --zone=public --add-rich-rule="rule family="ipv4" source address="192.168.195.0/24" reject"
大量问题是因为Docker容器端口外放引起的漏洞,除了操作系统账户权限控制上的问题,更在于对Docker Daemon的进程管理上存在隐患。
目前常用的Docker版本都支持Docker Daemon管理宿主iptables的,而且一旦启动进程加上-p host_port:guest_port的端口映射,
Docker Daemon会直接增加对应的FORWARD Chain并且-j ACCEPT,而默认的DROP规则是在INPUT链做的,对docker没法限制,
这就留下了很严重的安全隐患了。因此建议:
[root@localhost ~]mkdir /tls
[root@localhost ~]cd /tls
[root@localhost ~]hostnamectl set-hostname master
[root@localhost ~]su
[root@master ~]
[root@master ~]vim /etc/hosts
127.0.0.1 master
//创建ca密钥
openssl genrsa -aes256 -out ca-key.pem 4096 //输入123123
//创建ca证书
openssl req -new -x509 -days 1000 -key ca-key.pem -sha256 -subj "/CN=*" -out ca.pem //输入123123
//创建服务器私钥
openssl genrsa -out server-key.pem 4096
//签名私钥
openssl req -subj "/CN=*" -sha256 -new -key server-key.pem -out server.csr
//使用ca证书与私钥证书签名,输入123123
openssl x509 -req -days 1000 -sha256 -in server.csr -CA ca.pem -CAkey ca-key.pem -CAcreateserial -out server-cert.pem
//生成客户端密钥
openssl genrsa -out key.pem 4096
//签名客户端
openssl req -subj "/CN=client" -new -key key.pem -out client.csr
//创建配置文件
echo extendedKeyUsage=clientAuth > extfile.cnf
//签名证书,输入123123,需要(签名客户端,ca证书,ca密钥)
openssl x509 -req -days 1000 -sha256 -in client.csr -CA ca.pem -CAkey ca-key.pem -CAcreateserial -out cert.pem -extfile extfile.cnf
//删除多余文件
rm -rf ca.srl client.csr extfile.cnf server.csr
//配置docker
vim /lib/systemd/system/docker.service
ExecStart=/usr/bin/dockerd --tlsverify --tlscacert=/tls/ca.pem --tlscert=/tls/server-cert.pem --tlskey=/tls/server-key.pem -H tcp://0.0.0.0:2376 -H unix:///var/run/docker.sock
//重启进程
systemctl daemon-reload
//重启docker服务
systemctl restart docker
//将 /tls/ca.pem /tls/cert.pem /tls/key.pem 三个文件复制到另一台主机
scp ca.pem root@192.168.191.132:/etc/docker/
scp cert.pem root@192.168.191.132:/etc/docker/
scp key.pem root@192.168.191.132:/etc/docker/
//本地验证
docker --tlsverify --tlscacert=ca.pem --tlscert=cert.pem --tlskey=key.pem -H tcp://master:2376 version
docker pull nginx
//client上操作
[root@master ~]vim /etc/hosts
192.168.191.132 master
docker --tlsverify --tlscacert=ca.pem --tlscert=cert.pem --tlskey=key.pem -H tcp://master:2376 version
Client: Docker Engine - Community
Version: 19.03.5
API version: 1.40
Go version: go1.12.12
Git commit: 633a0ea
Built: Wed Nov 13 07:25:41 2019
OS/Arch: linux/amd64
Experimental: false
Server: Docker Engine - Community
Engine:
Version: 19.03.5
API version: 1.40 (minimum version 1.12)
Go version: go1.12.12
Git commit: 633a0ea
Built: Wed Nov 13 07:24:18 2019
OS/Arch: linux/amd64
Experimental: false
containerd:
Version: 1.2.10
GitCommit: b34a5c8af56e510852c35414db4c1f4fa6172339
runc:
Version: 1.0.0-rc8+dev
GitCommit: 3e425f80a8c931f88e6d94a8c831b9d5aa481657
docker-init:
Version: 0.18.0
GitCommit: fec3683
标签:性能 安全审计 creat 问题 lib eject 服务 service hyper
原文地址:https://blog.51cto.com/14557905/2490504