笔记内容:

l 10.19 iptables规则备份和恢复

l 10.20 firewalld的9个zone

l 10.21 firewalld关于zone的操作

l 10.22 firewalld关于service的操作

笔记日期:2017.8.31

 

10.19 iptables规则备份和恢复

备份iptables规则 iptables备份当前规则_规则集



iptables-save可以将规则重定向保存到指定的文件中:

备份iptables规则 iptables备份当前规则_运维_02

备份iptables规则 iptables备份当前规则_xml文件_03



iptables-restore则是相反,把文件里的规则恢复到iptables中:

备份iptables规则 iptables备份当前规则_备份iptables规则_04



其实这两个命令就是把规则备份到指定的文件里,当需要用到备份文件里的规则时,就可以使用iptables-restore恢复回去。

  例如我现在备份nat表的规则到指定的文件里,然后把nat表的规则清空,如果我想恢复的话只需要从指定的文件里恢复即可:

备份iptables规则 iptables备份当前规则_xml文件_05

备份iptables规则 iptables备份当前规则_xml文件_06

备份iptables规则 iptables备份当前规则_运维_07






10.20 firewalld的9个zone

备份iptables规则 iptables备份当前规则_备份iptables规则_08



是CentOS7的防火墙机制,之前我们学习iptables时,把firewalld防火墙禁掉了,所以现在我们要反着操作一下,开启firewalld关闭iptables:

备份iptables规则 iptables备份当前规则_运维_09

备份iptables规则 iptables备份当前规则_备份iptables规则_10



现在使用iptables -nvL查看iptables 的规则会发现多了很多规则:

备份iptables规则 iptables备份当前规则_xml文件_11


这是firewalld自带的规则。




firewalld默认有9个zone,zone是firewalld的一个单位,默认的是public zone,每个zone都是一个规则集,规则集就是zone里面自带的一些规则的一个集合体,使用firewall-cmd  --get-zones命令可以查看所有的zone:

备份iptables规则 iptables备份当前规则_备份iptables规则_12



firewall-cmd  --get-default-zone命令可以查看默认的zone:

备份iptables规则 iptables备份当前规则_规则集_13



这些不同的zone的区别与含义:

备份iptables规则 iptables备份当前规则_配置文件_14





10.21 firewalld关于zone的操作

备份iptables规则 iptables备份当前规则_规则集_15



设定默认的zone:

备份iptables规则 iptables备份当前规则_运维_16



查看指定网卡:

备份iptables规则 iptables备份当前规则_规则集_17




如果你新添加的网卡显示的是no zone的话,你就需要进入到/etc/sysconfig/network-scripts/目录下,把正常的网卡配置文件复制一份为你新网卡名称命名的文件,然后修改一下配置文件为你新网卡的信息,然后重启一下网络服务:

备份iptables规则 iptables备份当前规则_运维_18

备份iptables规则 iptables备份当前规则_备份iptables规则_19

备份iptables规则 iptables备份当前规则_xml文件_20

备份iptables规则 iptables备份当前规则_xml文件_21

备份iptables规则 iptables备份当前规则_xml文件_22




如果配置了配置文件之后还是显示no zone的话,就给这个网卡设置zone,语法:

firewall-cmd --zone=zone的名称 --add-interface=网卡名称

例如:

备份iptables规则 iptables备份当前规则_运维_23

备份iptables规则 iptables备份当前规则_备份iptables规则_24



针对网卡更改zone:

备份iptables规则 iptables备份当前规则_xml文件_25



针对网卡删除zone:

备份iptables规则 iptables备份当前规则_配置文件_26



查看系统所有网卡所在的zone:

备份iptables规则 iptables备份当前规则_规则集_27






10.22 firewalld关于service的操作

备份iptables规则 iptables备份当前规则_配置文件_28



所谓service就是zone下面的一个子单元,可以理解为一个指定的端口,因为防火墙无外乎就是对某个端口进行限制,例如http连接的是80端口、https连接的是43端口、ssh连接的22端等等。

  查看所有的service:

备份iptables规则 iptables备份当前规则_运维_29



查看当前的zone里都有哪些service:

备份iptables规则 iptables备份当前规则_配置文件_30



查看指定的zone下面有哪些service:

备份iptables规则 iptables备份当前规则_配置文件_31



把http增加到public的zone下面:

备份iptables规则 iptables备份当前规则_配置文件_32




现在仅仅是在内存里把zone增加了service,重启之后就会失效,想要永久有效,就要保存到配置文件里:

备份iptables规则 iptables备份当前规则_运维_33



这个文件会保存在/etc/firewalld/zones/目录下:

备份iptables规则 iptables备份当前规则_运维_34

备份iptables规则 iptables备份当前规则_xml文件_35



  除了zones还有service,service默认是没有文件的,只有更改了service的配置文件之后,才会放在/etc/firewalld/services/目录下:

备份iptables规则 iptables备份当前规则_运维_36



/usr/lib/firewalld/zones/目录下存放的是zone配置文件的模板:

备份iptables规则 iptables备份当前规则_配置文件_37



/usr/lib/firewalld/services/目录下存放的是services配置文件的模板:

备份iptables规则 iptables备份当前规则_配置文件_38



现在我有一个需求,把ftp的默认端口改一下,改为1121端口,并且在work zone下放行ftp。

  第一步,把ftp的配置文件拷贝到/etc/firewalld/services/目录下:

备份iptables规则 iptables备份当前规则_备份iptables规则_39



第二步,编辑/etc/firewalld/services/目录下的ftp.xml文件:

备份iptables规则 iptables备份当前规则_备份iptables规则_40



  第三步,把/usr/lib/firewalld/zones/目录下的work.xml文件放到/etc/firewalld/zones/目录下:

备份iptables规则 iptables备份当前规则_规则集_41



第四步,编辑/etc/firewalld/zones/目录下的work.xml文件:

备份iptables规则 iptables备份当前规则_xml文件_42



配置文件修改完成后,重新加载一下:

备份iptables规则 iptables备份当前规则_备份iptables规则_43



指定zone为work:

备份iptables规则 iptables备份当前规则_xml文件_44

这个需求就完成了。



总结:

firewalled服务有两个角色,一个是zone一个是service,zone是firewalled的一个规则集合,每个zone里都会有对应的iptables规则。每个zone下面都有一些service,这些service就像是这个zone的白名单,放行这些service。如果遇到需求,需要放行某个服务,就可以把这个服务增加到配置文件里去,再重新reload就可以了,操作方式和上面的那个例子一样。