标签:drop 总结 ssh put 不为 就会 源地址 接收 理解
经过前文的总结,我们已经能够熟练的管理规则了,但是我们使用过的"匹配条件"少得可怜,之前的示例中,我们只使用过一种匹配条件,就是将"源地址"作为匹配条件。
那么这篇文章中,我们就来了解一下更多的匹配条件,以及匹配条件的更多用法。
还是从我们最常用的"源地址"说起吧,我们知道,使用-s选项作为匹配条件,可以匹配报文的源地址,但是之前的示例中,我们每次指定源地址,都只是指定单个IP,示例如下。
[root@node1 ~]# iptables -I INPUT -s 192.168.1.146 -j DROP
其实,我们也可以在指定源地址时,一次指定多个,用"逗号"隔开即可,示例如下。
[root@node1 ~]# iptables -I INPUT -s 192.168.1.146,192.168.1.102 -j DROP
可以看出,上例中,一次添加了两条规则,两条规则只是源地址对应的IP不同,注意,上例中的"逗号"两侧均不能包含空格,多个IP之间必须与逗号相连。
除了能指定具体的IP地址,还能指定某个网段,示例如下
[root@node1 ~]# iptables -I INPUT -s 10.6.0.0/24 -j DROP
上例表示,如果报文的源地址IP在10.6.0.0/16网段内,当报文经过INPUT链时就会被DROP掉。
其实,我们还可以对匹配条件取反,先看示例,如下。
[root@node1 ~]# iptables -I INPUT ! -s 192.168.1.146 -j ACCEPT
注意:取反符号!需要在 -s之前并且需要有空格
上图中,使用"! -s 192.168.1.146"表示对 -s 192.168.1.146这个匹配条件取反, -s 192.168.1.146表示报文源IP地址为192.168.1.146即可满足匹配条件,使用 "!" 取反后则表示,报文源地址IP只要不为192.168.1.146即满足条件,那么,上例中规则表达的意思就是,只要发往本机的报文的源地址不是192.168.1.146,就接受报文。
此刻,你猜猜,按照上例中的配置,如果此时从146主机上向防火墙所在的主机发送ping请求,146主机能得到回应吗?(此处不考虑其他链,只考虑filter表的INPUT链)
答案是:能,也就是说,按照上例的配置,146主机仍然能够ping通当前主机,为什么呢?我们来分析一下。
上例中,filter表的INPUT链中只有一条规则,这条规则要表达的意思就是:
只要报文的源IP不是192.168.1.146,那么就接受此报文,但是,某些小伙伴可能会误会,把上例中的规则理解成如下含义,
只要报文的源IP是192.168.1.146,那么就不接受此报文,这种理解与上述理解看似差别不大,其实完全不一样,这样理解是错误的,上述理解才是正确的。
换句话说就是,报文的源IP不是192.168.1.146时,会被接收,并不能代表,报文的源IP是192.168.1.146时,会被拒绝。
上例中,因为并没有任何一条规则指明源IP是192.168.1.146时,该执行怎样的动作,所以,当来自192.168.1.146的报文经过INPUT链时,并不能匹配上例中的规则,于是,此报文就继续匹配后面的规则,可是,上例中只有一条规则,这条规则后面没有其他可以匹配的规则,于是,此报文就会去匹配当前链的默认动作(默认策略),而上例中,INPUT链的默认动作为ACCEPT,所以,来自146的ping报文就被接收了,如果,把上例中INPUT链的默认策略改为DROP,那么,146的报文将会被丢弃,146上的ping命令将得不到任何回应,但是如果将INPUT链的默认策略设置为DROP,当INPUT链中没有任何规则时,所有外来报文将会被丢弃,包括我们ssh远程连接。
好了,我们通过上例,不仅了解到了怎样对匹配条件取反,还加深了我们对默认策略的了解,一举两得,我们继续聊。
四,iptables详解(4):iptables匹配条件总结之一
标签:drop 总结 ssh put 不为 就会 源地址 接收 理解
原文地址:https://www.cnblogs.com/minseo/p/13597503.html