大家好今天分享第三篇关于iptables的规则管理,文章并非自己原创,但是感觉写的很不错所以分享出来,如果大家有什么想法欢迎留言,如果喜欢的话也可以关注我,我会持续不断的更新内容。
上一篇文章中,我们已经学会了怎样使用iptables命令查看规则,那么这篇文章我们就来总结一下,怎样管理规则。
之前,我们把查看iptables规则的操作比作"增删改查"当中的"查",那么在这篇文章中,我们就聊聊怎样对iptables进行"增、删、改"操作。
注意:在参照本文进行iptables实验时,请务必在个人的测试机上进行,因为如果iptables规则设置不当,有可能使你无法连接到远程主机中。
![4e8dfee0e25e5b71e7f3ce5bf31d0ba5.png](https://i-blog.csdnimg.cn/blog_migrate/af4a533de93821e792a862c3e1259bf1.jpeg)
首先,我们来回顾一下什么是iptables的规则。
之前打过一个比方,每条"链"都是一个"关卡",每个通过这个"关卡"的报文都要匹配这个关卡上的规则,如果匹配,则对报文进行对应的处理,比如说,你我二人此刻就好像两个"报文",你我二人此刻都要入关,可是城主有命,只有器宇轩昂之人才能入关,不符合此条件的人不能入关,于是守关将士按照城主制定的"规则",开始打量你我二人,最终,你顺利入关了,而我已被拒之门外,因为你符合"器宇轩昂"的标准,所以把你"放行"了,而我不符合标准,所以没有被放行,其实,"器宇轩昂"就是一种"匹配条件","放行"就是一种"动作","匹配条件"与"动作"组成了规则。
只不过,在iptables的世界中,最常用的匹配条件并不是"器宇轩昂",而是报文的"源地址"、"目标地址"、"源端口"、"目标端口"等,在iptables的世界中,最常用的动作有ACCEPT(接受)、DROP(丢弃)、REJECT(拒绝),其中ACCEPT就与我们举例中的"放行"类似,但是,我们刚才提到的这些并不是全部的匹配条件与动作,只是最常用的一些罢了,具体的匹配条件与动作不是我们今天讨论的重点,我们会在以后的文章中再做总结。
好了,我们已经回顾了规则的概念,并且已经明白了,规则大致由两个逻辑单元组成,匹配条件与动作,那么多说无益,我们来动手定义一条规则,此处仍然以filter表中的INPUT链为例,因为filter表负责"过滤"功能,而所有发往本机的报文如果需要被过滤,首先会经过INPUT链(PREROUTING链没有过滤功能),这与我们所比喻的"入关"场景非常相似,所以,使用filter表的INPUT链为例,有助于我们进行理解。
首先,查看一下filter表中的INPUT链中的规则,查看规则的相关命令在前文已经总结了,此处不再赘述,如果你忘了,请回顾前文。
使用如下命令查看filter表INPUT链的规则,下图中的规则为centos6默认添加的规则。
![1ff423c615ff9d9c43fc52bf90470700.png](https://i-blog.csdnimg.cn/blog_migrate/c559a72eb3bf2a5d79fbbabc412d805c.jpeg)
注意:在参照本文进行iptables实验时,请务必在个人的测试机上进行。
为了准备一个从零开始的环境,我们将centos6默认提供的规则清空,以便我们进行实验,使用iptables -F INPUT命令清空filter表INPUT链中的规则,后面我们会单独对清除规则的相关命令进行总结,此处不用纠结此命令。
![442b44968f52519bd55942f6565e43de.png](https://i-blog.csdnimg.cn/blog_migrate/6d18fab1857fbaed61d79b0bba949e96.jpeg)
清空INPUT链以后,filter表中的INPUT链已经不存在任何的规则,但是可以看出,INPUT链的默认策略是ACCEPT,也就是说,INPUT链默认"放行"所有发往本机的报文,当没有任何规则时,会接受所有报文,当报文没有被任何规则匹配到时,也会默认放行报文。
那么此刻,我们就在另外一台机器上,使用ping命令,向当前机器发送报文,如下图所示,ping命令可以得到回应,证明ping命令发送的报文已经正常的发送到了防火墙所在的主机,ping命令所在机器IP地址为146,当前测试防火墙主机的IP地址为156,我们就用这样的环境,对iptables进行操作演示。
![2975770e4b4201e1c79575a62d06e20e.png](https://i-blog.csdnimg.cn/blog_migrate/fe51e66b9098b74226317e3810afbb96.jpeg)
增加规则
那么此处,我们就在156上配置一条规则,拒绝192.168.1.146上的所有报文访问当前机器,之前一直在说,规则由匹配条件与动作组成,那么"拒绝192.168.1.146上的所有报文访问当前机器"这条规则中,报文的"源地址为192.168.1.146"则属于匹配条件,如果报文来自"192.168.1.146",则表示满足匹配条件,而"拒绝"这个报文,就属于对应的动作,好了,那么怎样用命令去定义这条规则呢?使用如下命令即可