七周五次课(1月26日)

10.19 iptables规则备份和恢复

10.20 firewalld的9个zone

10.21 firewalld关于zone的操作

10.22 firewalld关于service的操作

10.19 iptables规则备份和恢复

咱们设定的防火墙规则只保存在内存中,并没有保存到某一个文件中。也就是说,当系统重启后以前设定的规则就没有了,所以设定好规则后要先保存一下。命令如下:

# service iptables save

iptables: Saving firewall rules to /etc/sysconfig/iptables: [确定]

它会提示你防火墙规则保存在/etc/sysconfig/iptables文件内,这个文件就是iptables的配置文件。所以日后如果你遇到备份防火墙规则的任务,只要复制一份这个文件的副本即可

有时我们需要清除防火墙的所有规则,使用命令iptables -F固然可以,但最好的办法还是停止防火墙服务,如下所示:  

# service iptables stop

iptables:清除防火墙规则                    [确定]

iptables:将链设置为政策ACCEPT: nat filter    [确定]

 iptables:正在卸载模块:                    [确定]

这样防火墙就失效了,但是一旦重新设定规则(哪怕只有一条),防火墙服务会自动开启。

备份防火墙规则的命令:利用重定向功能,重定向到一个文件里

iptables-save > my.ipt

恢复防火墙规则的命令

iptables-restore < my.ipt

10.20 firewalld的9个zone

介绍完了netfilter,觉得也有必要再说一下行firewalld,毕竟这个才是Centos7上的防火墙机器。在上一节中,把行firewalld服务给禁掉了,而是打开了iptables服务,现在再反过来关闭iptables服务,打开firewalld服务

打开firewalld

  • systemctl disable iptables

  • systemctl stop iptables

  • systemctl enable firewalld

  • systemctl start firewalld

打开行firewalld以后,你可以执行一下iptables –nvL命令查看行firewalld的默认规则,会发现这些规则要比netfilter的规则复杂。上面介绍的iptables相关的命令,其实也是可以继续使用的,只不过在 CentOS 7中不用那么操作,而是有firewalld自己的命令。

firewalld有两个基础概念,分别是zone和service,每一个zone里面有不同的iptables规则,默认一共有9个zone,而centos 7默认的zone为public

  • firewall-cmd --get-zones     //查看所有zone

  • firewall-cmd --get-default-zone    //查看默认zone

10.21 firewalld关于zone的操作

下面介绍几个关于zone的命令:

  • firewall-cmd --set-default-zone=work //设定默认zone

  • firewall-cmd --get-zone-of-interface=ens33 //查指定网卡

  • firewall-cmd --zone=public --add-interface=lo  //给指定网卡设置zone

  • firewall-cmd --zone=dmz --change-interface=lo //针对网卡更改zone

  • firewall-cmd --zone=dmz  --remove-interface=lo  //针对网卡删除zone

变成默认的zone=work

  • firewall-cmd --get-active-zones  //查看系统所有网卡所在的zone

10.22 firewalld关于service的操作

在centos7中使用firewalld,开发者可能是想简化用户的使用过程,在提供的9种zone中,总有一个是适合我们的使用场景的。那么到底zone是什么?每一种zone之间有什么区别呢?这里就要给大家介绍一个概念——service。其实,之所以有9种zone,是因为每一种zone里面提供了不同的service,而service就是针对一个服务(端口)做的iptables规则。这些service都是由一个个配置文件定义的,配置文件的模板在/usr/lib/firewalld/services/目录下,真正生效的配置在/etc/firewalld/services目录下面(默认为空)。

  • firewall-cmd --get-services //查看所有的servies

  • firewall-cmd --list-services  //查看当前zone下有哪些service

  • firewall-cmd --zone=public --add-service=http   //把http增加到public zone下面

  • firewall-cmd --zone=public --add-service=http --permanent //更改配置文件,之后会在/etc/firewalld/zones目录下面生成配置文件

ftp服务写入配置文件

http服务写入配置文件

zones配置文件

services配置文件(目前是空的)

  • ls /usr/lib/firewalld/zones/   //zone的配置文件模板

  • ls /usr/lib/firewalld/services/   //service的配置文件模板

需求:ftp服务自定义端口1121,需要在work zone下面放行ftp

  • cp /usr/lib/firewalld/services/ftp.xml  /etc/firewalld/services   //拷贝ftp配置文件模板到生效的目录下

  • vi /etc/firewalld/services/ftp.xml //把21改为1121

  • cp /usr/lib/firewalld/zones/work.xml /etc/firewalld/zones/ //拷贝work配置文件模板到生效的目录下

  • vi /etc/firewalld/zones/work.xml   //增加一行

<service name="ftp"/>

  • firewall-cmd --reload //重新加载

  • firewall-cmd --zone=work --list-services