这些的指令适用对象是ap,网关路由器之类的,所以有一些FORWARD的配置,如果没带网络转发的机器,就没必要配置FORWAD。

配置黑白名单逻辑总体说比较简单

先说黑名单

1、首先清空以前的防护规则

    iptables  -F INPUT

    iptables  -F  FORWARD

2、首先设置默认所有的访问都能够通过,没有匹配上任何规则的导致没有任何处理的访问

      就按默 认操作处理(下面是的操作ACCEPT丢弃)

     iptables  -P INPUT  ACCEPT

     iptables  -P  FORWARD  ACCEPT

3、设置不可以访问通过的规则(下文中的IP地址只是举个例子,tcp也只是举个例子,icmp和        udp也是可以的)

     iptables  -I  INPUT  -p tcp  -s 192.168.10.100 -j  DROP

     iptables  -I  FORWARD  -p tcp   -s 192.168.10.100   -d  192.168.10.101  -j  DROP

     ... (你需要的类似的允许通过的规则可以继续添加)

4、允许所有的访问规则通过(由于使用的是-I(insert),后面的规则会被插入到                            INPUT/FORWARD链最上面,规则被匹配的时候是从上面的的规则开始的)

      iptables  -I  INPUT  ACCEPT

      iptables  -I  FORWARD  ACCEPT

总的来说规则匹配的流程,
INPUT匹配,比如某个 从192.168.10.100 地址发出的访问数据包要访问本机(也就是被设置防火墙的机器,先匹配第四步设置的规则,然后匹配第三步设置的规则( iptables  -I  INPUT  -p tcp  -s 192.168.10.100 -d  192.168.10.101 -j  DROP)匹配上了执行相应的操作-j  DROP,也就是丢弃,于是该访问被拒绝了。如果是 从192.168.10.200 地址发出的访问数据包要访问本机,首先通过第四步的规则,由于第三步的规则不能与其匹配,也就是后面没有规则和其匹配了,那就按照默认操作允许访问。

FORWARD匹配,比如某个 从192.168.10.100 地址发出的访问数据包要访问ip 192.168.10.101(在同一个局域网)的机器,先匹配第四步设置的规则,然后匹配第三步设置的规则( iptables  -I  INPUT  -p tcp  -s 192.168.10.100 -j  DROP)匹配上了执行相应的操作-j  DROP,也就是丢弃,于是该访问被拒绝了。如果是 从192.168.10.200 地址发出的访问数据包要访问ip 192.168.10.101的机器,首先通过第四步的规则,由于第三步的规则不能与其匹配,也就是后面没有规则和其匹配了,那就按照默认操作允许访问。

黑名单的拦截原理也就如上所说。

再说白名单

白名单设置要比黑名单设置复杂一些

1、首先清空以前的防护规则

    iptables  -F INPUT

    iptables  -F  FORWARD

2、首先设置默认所有的访问都能够通过,没有匹配上任何规则的导致没有任何处理的访问

      就按默 认操作处理(下面是的操作DROP丢弃)

     iptables  -P INPUT  DROP

     iptables  -P  FORWARD  DROP

3、设置不可以访问通过的规则(下文中的IP地址只是举个例子,tcp也只是举个例子,icmp和        udp也是可以的)

     iptables  -I  INPUT  -p tcp  -s 192.168.10.100 -j  ACCEPT

     iptables  -I  FORWARD  -p tcp   -s 192.168.10.100   -d  192.168.10.101  -j  ACCEPT

     iptables  -I  FORWARD  -p tcp   -s 192.168.10.101   -d  192.168.10.100  -j  ACCEPT

    在这里岔开话题多讲一下

    为什么白名单每一个访问规则同时需要一个反向的规则,因为访问是双向的,白名单会禁止默认的所有的访问规则,所以要完成一个访问需要设置正反向的规则,如同写信需要双方的地址,发信方向收信方地址,以便收信方回信实现访问这个过程。

docker 白名单 iptables 白名单设置_docker 白名单

收到信后需要回信,这是访问的必须过程,也就是首先访问端request,然后被访问端reponse

iptables  -I  FORWARD  -p tcp   -s 192.168.10.100  (如果没有  --sport xx ,访问端不指明源地址端口号,默认为添加所有端口号为源地址端口) -d  192.168.10.101 --dport  21:22  -j  ACCEPT

iptables  -I  FORWARD  -p tcp   -s 192.168.10.101  --sport  21:22 -d  192.168.10.100   (如果没有  --sport xx ,访问端不指明目的地址端口号,默认为添加所有端口号为目的地址端口)-j  ACCEPT

访问端口是由访问端随机决定的,而被访问端是被访问端的特定设置的,比如上面的规则是允许客服端访问ftp服务端,ftp服务端被访问端口特定为21(控制端口)和22(数据端口),客服端的端口可以不用指明,因为它被访问端随机分配的

  ...(你需要的类似的允许通过的规则可以继续添加)

4、允许所有的访问规则通过(由于使用的是-A(append),后面的规则会被追加到                           INPUT/FORWARD链最下面,规则被匹配的时候是从上面的的规则开始的,也就是说第四步          的规则最后被匹配以及操作)

      iptables  -A  INPUT  DROP

      iptables  -A  FORWARD  DROP

 

总的来说规则匹配的流程,
INPUT匹配,比如某个 从192.168.10.100 地址发出的访问数据包要访问本机(也就是被设置防火墙的机器,先匹配第四步设置的规则,然后匹配第三步设置的规则( iptables  -I  INPUT  -p tcp  -s 192.168.10.100 -d  192.168.10.101 -j  ACCEPT)匹配上了执行相应的操作-j  ACCEPT,也就是接受,于是该访问被允许了。如果是 从192.168.10.200 地址发出的访问数据包要访问本机,首先通过第四步的规则,由于第三步的规则不能与其匹配,也就是后面没有规则和其匹配了,那就按照默认操作拒绝访问。

FORWARD匹配,比如某个 从192.168.10.100 地址发出的访问数据包要访问ip 192.168.10.101(在同一个局域网)的机器,先匹配第四步设置的规则,然后匹配第三步设置的规则( iptables  -I  INPUT  -p tcp  -s 192.168.10.100 -j  ACCEPT)匹配上了执行相应的操作-j  ACCEPT,也就是接受,于是该访问被允许了。如果是 从192.168.10.200 地址发出的访问数据包要访问ip 192.168.10.101的机器,首先通过第四步的规则,由于第三步的规则不能与其匹配,也就是后面没有规则和其匹配了,那就按照默认操作拒绝访问。