阻止从 docker 实例内部传出 ssh、sftp 等连接

阻止从 docker 实例内部传出 ssh、sftp 等连接

我在 CentOS 7 上运行 docker 实例 1.6。我将这些实例用于开发目的,用户可以登录并进行开发工作。我的要求是,我不希望任何开发人员从实例内部建立任何类型的传出连接。我尝试在主机上使用 ip 表,但它阻止来自主机的连接,但不会阻止来自 docker 的连接。以下是我的 iptable 中可用的条目。

如果您能建议我一种方法来停止docker容器内部与外界的连接而不影响http连接,那将会很有帮助。

# Generated by iptables-save v1.4.21 on Sun Jun 28 23:20:14 2015
*nat
:PREROUTING ACCEPT [6680:929529]
:INPUT ACCEPT [0:0]
:OUTPUT ACCEPT [521:165135]
:POSTROUTING ACCEPT [0:0]
:DOCKER - [0:0]
-A PREROUTING -m addrtype --dst-type LOCAL -j DOCKER
-A OUTPUT ! -d 127.0.0.0/8 -m addrtype --dst-type LOCAL -j DOCKER
-A POSTROUTING -s 172.17.0.0/16 ! -o docker0 -j MASQUERADE
COMMIT
# Completed on Sun Jun 28 23:20:14 2015
# Generated by iptables-save v1.4.21 on Sun Jun 28 23:20:14 2015
*filter
:INPUT ACCEPT [0:0]
:FORWARD ACCEPT [0:0]
:OUTPUT ACCEPT [0:0]
:DOCKER - [0:0]
-A INPUT -i lo -j ACCEPT
-A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
-A INPUT -p tcp -m tcp --dport 22 -j ACCEPT
-A INPUT -p tcp -m tcp --dport 80:65000 -j ACCEPT
-A INPUT -j DROP
-A FORWARD -o docker0 -j DOCKER
-A FORWARD -o docker0 -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT
-A FORWARD -i docker0 ! -o docker0 -j ACCEPT
-A FORWARD -i docker0 -o docker0 -j ACCEPT
-A OUTPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
-A OUTPUT -p tcp -m tcp --dport 53 -j ACCEPT
-A OUTPUT -p udp -m udp --dport 53 -j ACCEPT
-A OUTPUT -p tcp -m tcp --dport 80:65000 -j ACCEPT
-A OUTPUT -p tcp -m tcp --dport 80 -j ACCEPT
-A OUTPUT -p tcp -m tcp --dport 443 -j ACCEPT
-A OUTPUT -p tcp -m tcp --dport 6667 -j ACCEPT
-A OUTPUT -p tcp -m tcp --dport 6697 -j ACCEPT
-A OUTPUT -j DROP
COMMIT
# Completed on Sun Jun 28 23:20:14 2015 

答案1

您需要在您的中工作FORWARD CHAIN,因为 DOCKER 流量docker -> your host interface

例如,我需要阻止docker内部的http流量。

iptables -A FORWARD -i virbr0 -p tcp -d 0/0 --dport 80 -m conntrack --ctstate NEW -j DROP

相关内容