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

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的规则已经存在。

  • 8
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值