三十三、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
<?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
原文地址:http://blog.51cto.com/13576245/2091019