如何使用防火墙限制对Windows Server docker容器的访问?
我试图将对Windows docker容器的访问限制为特定IP。看起来在Linux容器上使用iptables很容易做到这一点,但我很难为Windows Server容器找到合适的解决方案。关于StackOverFlow问题的第一个答案中描述了我试图在Windows容器上执行的类似操作,但这是Linux 首先,我似乎无法在容器内启动Windows Defender防火墙服务(不在主机上)。具体发生的情况在StackOverFlow问题中描述。但简而言之,如何使用防火墙限制对Windows Server docker容器的访问?,docker,containers,traefik,windows-firewall,windows-container,Docker,Containers,Traefik,Windows Firewall,Windows Container,我试图将对Windows docker容器的访问限制为特定IP。看起来在Linux容器上使用iptables很容易做到这一点,但我很难为Windows Server容器找到合适的解决方案。关于StackOverFlow问题的第一个答案中描述了我试图在Windows容器上执行的类似操作,但这是Linux 首先,我似乎无法在容器内启动Windows Defender防火墙服务(不在主机上)。具体发生的情况在StackOverFlow问题中描述。但简而言之,启动服务名称MpsSvc根本不起作用。修改注
启动服务名称MpsSvc
根本不起作用。修改注册表项不起作用。那篇文章中有描述。那么,这是否意味着不可能在容器内使用Windows防火墙来限制访问
文档声明Windows Server容器上的默认出站/入站流量为ALLOW ALL
。我想将其锁定,以便容器的流量只来自一个来源
我们正在使用的Orchestrator是Azure服务结构。在集群中,有一个主系统节点/主机。该节点承载(类似于流量管理器/负载平衡器)。Traefik实例也在集群中的每个后续节点上运行。每个节点都有一堆容器——很简单。这里的基本思想是,我只想让来自主系统节点的流量到达容器。其他一切都需要封锁
我怎样才能做到这一点
我们正在使用的容器的基本映像是mcr.microsoft.com/windows/servercore:ltsc2019
。我正在尝试创建我们自己的基础映像版本,并进行一些修改(如安全强化、日志记录等),将其发布到我们的Azure容器注册中心(ACR),计划让开发人员从我们的ACR而不是Microsoft的公共中心拉取
至于网络,不确定它是否重要,但它使用默认的NAT
网络
docker网络检查nat
[
{
"Name": "nat",
"Id": "78l2lk902jsxu82jskais92alxp51mcf2907djsla81m154985snjo1d69xh51da",
"Created": "2020-04-15T20:18:39.9097816-07:00",
"Scope": "local",
"Driver": "nat",
"EnableIPv6": false,
"IPAM": {
"Driver": "windows",
"Options": null,
"Config": [
{
"Subnet": "172.27.128.0/20",
"Gateway": "172.27.128.1"
}
]
},
"Internal": false,
"Attachable": false,
"Ingress": false,
"ConfigFrom": {
"Network": ""
},
"ConfigOnly": false,
"Containers": {},
"Options": {
"com.docker.network.windowsshim.hnsid": "5045b0b6-d9a6-4b50-b1da-f66b0b770feb",
"com.docker.network.windowsshim.networkname": "nat"
},
"Labels": {}
}
]