禁用从Docker容器到主机的SSH访问

我正在运行一个CoreOS来托pipe一些Docker容器,并且我想阻止从容器到CoreOS主机的SSH访问,我猜这将是一个合理的安全问题。

我试图使用/etc/hosts.deny文件或使用iptables来限制这个访问。 这种方法的问题是,他们都需要专门定义容器的IP范围,我无法find一个有保证的方式来自动在所有新的主机上指定它。

正如docker文档所描述的,桥接接口的默认networking定义是:

 $ sudo docker network inspect bridge [ { "name": "bridge", "id": "7fca4eb8c647e57e9d46c32714271e0c3f8bf8d17d346629e2820547b2d90039", "driver": "bridge", "containers": { "bda12f8922785d1f160be70736f26c1e331ab8aaf8ed8d56728508f2e2fd4727": { "endpoint": "e0ac95934f803d7e36384a2029b8d1eeb56cb88727aa2e8b7edfeebaa6dfd758", "mac_address": "02:42:ac:11:00:03", "ipv4_address": "172.17.0.3/16", "ipv6_address": "" }, "f2870c98fd504370fb86e59f32cd0753b1ac9b69b7d80566ffc7192a82b3ed27": { "endpoint": "31de280881d2a774345bbfb1594159ade4ae4024ebfb1320cb74a30225f6a8ae", "mac_address": "02:42:ac:11:00:02", "ipv4_address": "172.17.0.2/16", "ipv6_address": "" } } } ] 

Docker文档还说,它在docker0接口可用时使用172.17.42.1/16 (也可以使用-b选项进行configuration)。 但是我看到一些容器拥有自己的IP地址,比如10.1.41.2并且使用硬编码的 IP范围来阻塞它们变得困难。

我知道--icc选项会影响守护进程间的容器通信,并且希望find一个像这样干净的方法,并限制从容器到主机的SSH访问。

谢谢。

你可以使用iptables来设置防止这个问题的防火墙规则。

 iptables -A INPUT -i docker0 -p tcp --destination-port 22 -j DROP 

(要在主机上运行)