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
原文:http://blog.51cto.com/415326/2065685