三十三、iptables规则备份和恢复、firewalld的9个zone、firewalld关于zone的操作、firewalld关于service的操作

一、iptables规则备份和恢复

# /service iptables save会把规则保存到/etc/sysconfig/iptables(开机就加载的规则)

# iptables-save > /tmp/ipt.txt自定义保存一个位置

# iptables-restore < /tmp/ipt.txt恢复刚才的备份

当需要清除防火墙的所有规则,iptables -F固然可以,但最好的办法是停止防火墙服务,如下所示:

# service iptables stop

这样防火墙便失效,重新设定规则,防火墙服务自动开启。

二、firewalld的9个zone

先把iptables禁掉,开启firewalld。

# systemctl disable iptables

# systemctl stop iptables

# systemctl enable firewalld

# systemctl start firewalld

firewalld默认有9个zone,zone是firewalld的一个单位,默认使用public。每个zone好比是一个规则集,zone里自带一些规则。

# firewall-cmd --get-zones              查看所有的zone

# firewall-cmd --get-default-zone     查看系统默认的zone

public

三十三、iptables规则备份和恢复、firewalld的9个zone、关于zone的操作、_备份 三十三、iptables规则备份和恢复、firewalld的9个zone、关于zone的操作、_iptables_02

三、firewalld关于zone的操作

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

# firewall-cmd --get-zone-of-interface=ens33   //查看指定网卡所在的zone

public

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

success

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

success

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

success

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

public

 interfaces: ens33 ens37

若查看ens37的zone时,显示no zone。就需要复制一下ens33的配置文件,然后更改一下ens37的相关内容,再重启一下网络服务,再重新加载一下firewalld服务;也可以直接指定设置zone

# systemctl restart firewalld

四、firewalld关于service的操作

# firewalld-cmd --get-service   //列出当前系统所有的service

service都是由一个个配置文件定义,配置文件的模板/usr/lib/firewalld/services/目录下,真正生效的配置文件在/etc/firewalld/services/目录下(默认为空)。

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

每个zone下有不同的service

# firewall-cmd --zone=public --list-services    //查看指定zone下有哪些service

ssh dhcpv6-client

一个zone下有某个service,意味着这个service是被信任的。比如,当前zone下面有ssh,那么ssh服务(就是22)端口是放行的。可以给zone下添加一个service,示例:

# firewall-cmd --zone=public --add-service=http  //把http增加到public zone下。

# firewall-cmd --zone=public --list-services

ssh dhcpv6-client http

zone的配置文件:/usr/lib/firewalld/zones/

之前的操作仅在内存中生效,若想修改配置文件,就要加此选项:

# firewall-cmd --zone=public --add-service=http --permanent

更改了某个zone的配置文件以后,会在/etc/firewalld/services/下生成对应zone的配置文件(.xml后缀文件),这才是真正生效的文件。

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

真正生效的配置文件:/etc/firewalld/services/

# cp /usr/lib/firewalld/services/ftp.xml /etc/firewalld/services/  把模板拷贝一份到真正的路径

# vi /etc/firewalld/services/ftp.xml         把里面的21改为1121

<?xml version="1.0" encoding="utf-8"?>

<service>

<short>FTP</short>

<description>FTP is a protocol used for remote file transfer. If you plan to make your FTP server publicly available, enable this op

tion. You need the vsftpd package installed for this option to be useful.</description>

<port protocol="tcp" port="1121"/>

<module name="nf_conntrack_ftp"/>

</service>

# cp /usr/lib/firewalld/zones/work.xml /etc/firewalld/zones/   拷贝模板

# vi /etc/firewalld/zones/work.xml    在里面加一行FTP的配置

<?xml version="1.0" encoding="utf-8"?>

<zone>

<short>Work</short>

<description>For use in work areas. You mostly trust the other computers on networks to not harm your computer. Only selected incomi

ng connections are accepted.</description>

<service name="ssh"/>

 <service name="ftp"/>

<service name="dhcpv6-client"/>

</zone>

# firewall-cmd --reload        重新加载

success

# firewall-cmd --zone=work --list-services     查看work zone里的service是否有FTP

ssh ftp dhcpv6-client