自学内容网 自学内容网

(14)关于docker如何通过防火墙做策略限制

关于docker如何通过防火墙做策略限制

1、iptables相关问题

在Iptables防火墙中包含四种常见的表,分别是filter、nat、mangle、raw。

filter:负责过滤数据包。

  1. filter表可以管理INPUT、OUTPUT、FORWARD链。

nat:用于网络地址转换。

  1. nat表可以管理PREROUTING、INPUT、OUTPUT、POSTROUTING链。

mangle:修改数据包中的内容,例如服务类型、TTL、QOS等等。

  1. mangle表可以管理PREROUTING、INPUT、OUTPUT、POSTROUTING、FORWARD链。

raw:决定数据包是否被状态跟踪机制处理。

  1. raw表可以管理PREROUTING、OUTPUT链。

4张表的优先级顺序是:raw --> mangle --> nat --> filter

在Iptables防火墙中包含五条链(数据流向是自上而下的):

PREROUTING:需要做目的地址转换(DNAT)的优先走这个表

INPUT:流量进入时会经过的链

FORWARD:负责流量转发时经过的链

OUTPUT:流量离开时会经过的链

POSTROUTING:需要做源的地址转换(SNAT)的优先走这个表

2、Docker部分

查看当前防火墙策略

# itpables -nL       默认是查看filter表中的规则

# iptables -nL -t nat    可以查看nat表中的规则

2.1 进行策略限制

限制192.168.228.129用户访问192.168.228.128:8082端口

3、结论:

当用户通过外部网络访问docker容器时,流量是先经过宿主机,然后通过nat转换成一个叫docker0网卡上的ip去访问容器的

因此想要做限制,分两步:

1、需要先在NAT表上的(NAT优先级>filter)PREROUTING链或者DOCKER链(因为docker程序修改了防火墙策略,优先将PREROUTING链上的规则转发到自定义的DOCKER链)添加一条RETURN策略

2、因为NAT表是做地址转换的,无法做过滤,所以要在NAT表中添加RETURN策略,让匹配到的流量跳过本张表,流转到filter表中,这样就可以通过filter表中的DROP或REJECT来做限制了。

操作NAT表

# iptables -t nat -I PREROUTING  -p tcp -s 192.168.228.129 --dport 8082 -j RETURN

操作filter表

# iptables -A OUTPUT -d 192.168.228.129 --sport 8082 -j DROP


原文地址:https://blog.csdn.net/qq_37651894/article/details/142492443

免责声明:本站文章内容转载自网络资源,如本站内容侵犯了原著者的合法权益,可联系本站删除。更多内容请关注自学内容网(zxcms.com)!