前面我了解了iptables的表,链的规则原理,今天学习一下iptables的规则管理:
iptables -n -L
这条命令表示查看filter中的所有规则,包括INPUT和OUTPUT
如果在命令后面添加INPUT或者OUTPUT,就只针对INPUT链或者OUTPUT链进行查询
上图中我的INPUT链上允许ip 47.99.53.225访问我的服务器,就是说来自这个ip的数据包不做阻拦,统统放行
那么这样的规则是怎么添加上去的呢?
iptables -t filter -I INPUT -s 47.99.53.225 -j ACCEPT
这条命令中-t指定了filter这个表的名称。-I表示insert插入一个链INPUT,-s指定来源ip,-j表示执行动作(ACCEPT,REJECT,DROP)
这样理解就比较简单了
上面的-F表示清空所有的INPUT链上的规则
查看后发现我们之前添加的规则已经不见了
这个命令表示一次性清空所有规则,如果我们要请掉指定的规则,我们后面会再学习到
上面我们在规则中先添加了一条丢弃所有来自118的数据包的规则,我们用118来ping火墙所在的主机时发现ping不通,然后我们用-A表示在INPUT链上追加一条允许来自118的数据包通过火墙的规则,那么我们再来ping一下看是否可以ping通
发现不可以。。。。
是不是DROP的优先级高于ACCEPT的优先级,或者追加在后面的规则默认不生效,我们再来实验一下,我们不追加,直接添加一条一模一样的新规则
发现可以ping通,所以火墙的规则遵循前后顺序
下面来说一下删除规则:
iptables --line-number -vnL INPUT
上面的命令表示将规则进行序号排列,因为在插入或者删除规则的时候需要知道序号,直接指定序号删除更加方便
iptables -D INPUT 3
上面的命令表示删除INPUT链中的第三条规则
我们也可以根据匹配的动作去删除
iptables -D INPUT -s 118.24.119.177 -j DROP
修改规则:
如图我想要将ACCEPT修改为REJECT,我们该怎么做
iptables -R INPUT 1 -s 118.24.119.177 -j REJECT
上面的命令表示-R(修改)INPUT链上的第一条规则(DROP)修改为REJECT
那么在我们设置完规则之后,我们重启主机或者再次去连接的时候发现我们之前的策略已经消失,有没有什么方法将策略一直保存呢,我们可以在fstab里面加入开机自启的命令,但是这样又得将命令复制一遍翟铁在文件中,而且在开机启动时,系统调用fstab文件时会发生系统变慢,开机启动也会变慢,所以如果我们是centos6的系统,我们直接serivce iptables save就可以保存策略,规则会保存在/etc/sysconfig/iptables文件中
centos7中,我们不在使用init风格的脚本启动服务,使用了unit,所以在7中不会使用类似于service iptables start这样的命令,7中用firewall替代了原来的iptables服务,只要用yum源安装iptables与iptables-service即可像6一样用service命令保存规则,规则同样保存在/etc/sysconfig/iptables下,具体步骤如下:
通过查看文件可以看到我们的规则,相当于我们把7上的firewall给禁止,然后自己装了iptables,允许iptables顶替firewall的功能
今天的iptables增删改学习完毕,,,,,,,iptables还有一大部分知识有待学习