【iptables】修改规则和保存规则

发布时间:2023年12月29日

1 修改规则

(1)修改指定表中指定链的规则

????????????????iptables?-t?表名?-R?链名?规则序号?-s?源地址?-j?处理动作

????????接着上面的例子,假如我们想把下面的规则中的动作从DROP改为ACCEPT

????????可以使用-R选项来修改指定的链中的规则,在修改规则时指定规则对应的编号即可,如图所示:

????????上例中,-R选项表示修改指定的链,使用?-R?INOUT?1?表示修改INPUT链的第1条规则,使用-j?REJECT?表示INPUT?链中的第一条规则的动作修改为REJECT。

注意:-s选项以及对应的源地址不可省略。

????????即使我们已经指定了规则对应的编号,但是在使用-R选项修改某个规则时,必须指定规则对应的原本的匹配条件(如果有多个匹配条件,都需要指定)。如果上图中的命令没有使用-s指定对应规则中原本的源地址,那么在修改完成后,你修改的规则中的源地址对应的原本的匹配条件会自动变成0.0.0.0/0(此IP表示所以网段的IP地址),而此时,-j对应的动作又为REJECT,所以在执行上述命令时,如果没有指明规则原本的源地址,那么所有IP的请求都被拒绝了(因为没有指定原本的源地址,当前规则的源地址自动变成0.0.0.0/0),如果你正在使用ssh远程到服务器上进行iptables设置,那么你的ssh请求也将会被阻断。

????????既然使用-R选项修改规则时,必须指明规则原本的匹配条件,那么我们则可以理解为,只能通过-R选项修改规则对应的动作了,所以如果你想要修改某条规则,还不如先将这条规则删除,然后在同样位置再插入一条新规则,这样更好,当然,如果你只是为了修改某条规则的动作,那么使用-R选项时,不要忘了指明规则原本对应的匹配条件。

拓展:DROP和REJECT的区别

????????上例中,我们已经将规则中的动作从DROP改为了REJECT,那么DROP与REJECT有什么不同呢?从字面上理解,

  • DROP表示丢弃,直接丢弃数据包,不给出任何回应信息
  • REJECT表示拒绝,拒绝数据包通过,会给数据发送端一个响应信息

????????我们分别从133主机上向132主机上发起ping请求,有不同的结果:

DROP的现象

REJECT的现象

????????当132主机中的iptables规则对应的动作为REJECT时,从133上进行ping操作时,直接就提示”目标端口不可达”,并没有像之前那样卡在那里,看来,REJECT比DROP更加”干脆”。

(2)修改指定链的默认策略

????????一般每个链都有默认规则,即该链没有任何规则或者没有任何一条规则被匹配的情况下,对数据的放行策略是怎么样的。

????????当报文没有被链中的任何规则匹配到时,或者,当链中没有任何规则时,防火墙会按照默认动作处理报文,我们可以修改指定链的默认策略,使用如下命令即可

????????????????iptables?-t?表名?-P?链名?处理动作

????????使用-t指定要操作的表,使用-P选项指定要修改的链,上例中,-P?FORWARD?DROP表示将表中FORWRD链的默认策略改为DROP。

2 保存规则

????????在默认的情况下,我们对”防火墙”所做出的修改都是”临时的”,换句话说就是,当重启iptables服务或者重启服务器以后,我们平常添加的规则或者对规则所做出的修改都将消失,为了防止这种情况的发生,我们需要将规则”保存”。

????????在centos6中,直接使用“service?iptables?save”命令即可保持规则,规则默认保存在/etc/sysconfig/iptables文件中,我系统使用的是centos7,已经不能再使用类似service?iptables?start这样的命令了,所以service?iptables?save也无法执行,同时,在centos7中,使用firewall替代了原来的iptables?service,不过我们只要通过yum源安装iptables与iptables-services即可(iptables一般会被默认安装,但是iptables-services在centos7中一般不会被默认安装),在centos7中安装完iptables-services后,即可像centos6中一样,通过service?iptables?save命令保存规则了,规则同样保存在/etc/sysconfig/iptables文件中。

centos7中配置iptables-service的步骤:

#配置好yum源以后安装iptables-service
#?yum?install?-y?iptables-services

#停止firewalld
#?systemctl?stop?firewalld

#禁止firewalld自动启动
#?systemctl?disable?firewalld

#启动iptables
#?systemctl?start?iptables

#将iptables设置为开机自动启动,以后即可通过iptables-service控制iptables服务
#?systemctl?enable?iptables

????????上述配置过程只需一次,以后即可在centos7中愉快的使用service?iptables?save命令保存iptables规则了。

????????当我们添加一条如下规则时,

????????使用保持规则命令

????????????????service?iptables?save

????????可以看到,新规则已经被保存到?/etc/sysconfig/iptables?中。当我们重启设备的时候,再次看规则,可以发现刚刚新加的REJECT?133的规则已经存在。

文章来源:https://blog.csdn.net/m0_56573171/article/details/135273168
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。