三十三、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
三、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
tion. You need the vsftpd package installed for this option to be useful.
# cp /usr/lib/firewalld/zones/work.xml /etc/firewalld/zones/ 拷贝模板
# vi /etc/firewalld/zones/work.xml 在里面加一行FTP的配置
ng connections are accepted.
# firewall-cmd --reload 重新加载
success
# firewall-cmd --zone=work --list-services 查看work zone里的service是否有FTP
ssh ftp dhcpv6-client