一、iptables规则备份和恢复
iptables如果不使用service iptables save命令,则重启之后规则会全部消失。
services save命令默认把规则保存在/etc/sysconfig/iptables文件里。
可以用ipables-save > ipt.txt 这个命令把现在的规则保存在文本文件里。然后在恢复默认配置
等到想用的时候再用iptables-restore < ipt.txt这个命令恢复保存的配置。
如果想启动服务就让有规则,就把iptables保存在/etc/sysconfig/iptables
举例:
二、firewalld防火墙的9个zone以及他们的用法
firewalld默认有9个zone(zone是firewalld的单位)
默认zone为public
drop(丢弃):任何接受的网络数据包都被丢弃,没有任何恢复,仅能有发送出去的网络连接(数据包不能进来,但是可以出去)
block(限制):任何接受的网络连接都被IPv4的icmp-host-prohibited信息和IPv6的icmp6-adm-prohibited信息所拒绝。(和drop相比,比较宽松一些,主要是为了针对icmp)
piblic(公共):在公共区域内使用,不能相信网络内其他计算机不会对你造成危害,只能接受经过选取的连接。
external(外部):特别是为路由器启用了伪装功能的外部网,你不能信任来自网络的其他计算,不能相信他们不会对你造成伤害,只能接受经过选择的连接。
dmz(非军事区):用于你的非军事区内的电脑,此区域可公开访问,可以有限的进入你的内部网络,仅仅接受经过选择的连接。
work(工作):用于工作区,你可以基本信任网络内的其他电脑不会对你造成危害,仅仅接收经过选择的连接。
home(家庭):用于内部网络,你可以基本上信任网络内其他电脑不会对你造成危害,仅仅接收经过选择的连接。
internal(内部):用于内部网络,你可以基本上信任网络内其他电脑不会对你造成危害,仅仅接收经过选择的连接。
trusted(信任):可接受所有的网络连接。
[root@litongyao ~]# firewall-cmd --get-zones (查看所有zone的命令,一共有9个zone)
work drop internal external trusted home dmz public block
[root@litongyao ~]# firewall-cmd --get-default-zone (查看默认的zone的命令)
public
我们知道每个zone就是一套规则集,但是有那么多zone,对于一个具体的请求来说应该使用哪个zone(哪套规则)来处理呢?这个问题至关重要,如果这点不弄明白其他的都是空中楼阁,即使规则设置的再好,不知道怎样用、在哪里用也不行,在/usr/lib/iptables/zone,保存着zone的配置文件
对于一个接受到的请求具体使用哪个zone,firewalld是通过三种方法来判断的:
1、source,也就是源地址
2、interface,接收请求的网卡
3、firewalld.conf中配置的默认zone
这三个的优先级按顺序依次降低,也就是说如果按照source可以找到就不会再按interface去查找,如果前两个都找不到才会使用第三个。
[root@litongyao ~]# firewall-cmd --get-active-zones (查看素有网卡所拥有的zone)
public
interfaces: ens33 ens37
[root@litongyao ~]# firewall-cmd --get-zone-of-interface=ens33 (查看指定网卡的zone)
public
[root@litongyao ~]# firewall-cmd --zone=public --add-interface=lo (给指定网卡设置zone)
success
[root@litongyao ~]# firewall-cmd --get-zone-of-interface=lo
public
[root@litongyao ~]# firewall-cmd --zone=dmz --change-interface=lo (给指定网卡更改zone)
success
[root@litongyao ~]# firewall-cmd --get-zone-of-interface=lo
dmz
[root@litongyao ~]# firewall-cmd --zone=dmz --remove-interface=lo (指定网卡删除zone,会恢复到默认网卡zone)
success
[root@litongyao ~]# firewall-cmd --get-zone-of-interface=lo
no zone
没有办法删除网卡的默认zone,如果要更改,可以使用以下命令更改默认zone:
[root@litongyao ~]# firewall-cmd --set-default-zone=work
success
[root@litongyao ~]# firewall-cmd --get-zone-of-interface=ens33
work
[root@litongyao ~]# firewall-cmd --get-zone-of-interface=ens37
work
三、service
-
在/usr/lib/firewalld/services/目录中,还保存了另外一类配置文件,每个文件对应一项具体的网络服务,如ssh服务等。
-
与之对应的配置文件中记录了各项服务所使用的tcp/udp端口,在最新版的firewalld中默认已经定义了70多种服务供我们使用。
-
zone就是调用了不同的service而实现了不同的效果。
[root@litongyao ~]# firewall-cmd --get-service (把系统文件内所有的service列出来)
[root@litongyao ~]# firewall-cmd --get-default-zone (查看系统当前的默认zone)
[root@litongyao ~]# firewall-cmd --list-service (把默认zone下的service列出来)
[root@litongyao ~]# firewall-cmd --zone=(zone名) --list-service (把指定的zone下的service列出来)
[root@litongyao ~]# firewall-cmd --zone=(zone名) --add-service=(service名)(把service加入到指定zone下)(只是暂时写入内存中)
[root@litongyao ~]# firewall-cmd --zone=(zone名) --add-service=(service名) --permanent (修改配置文件,把service永久的加入到指定Zone下面)
配置文件在/etc/firewalld/zones/下,每次修改完配置文件,他都会把旧的配置文件后缀名加上.old也保存在目录下
[root@litongyao zones]# ls /etc/firewalld/zones/
public.xml public.xml.ol
修改zone和service有两种方法,一种是刚才我们写的命令行,一种是直接修改配置文件
在/usr/lib/firewalld/services下保存的是services的模板
在/usr/lib/firewalld/zone下保存的是zone的模板
举例:(使用配置文件的方法修改zone和service)
1.需求:把ftp服务自定义端口1121,需要在work zone下面方形ftp
[root@litongyao zones]# cp /usr/lib/firewalld/services/ftp.xml /etc/firewalld/services (复制模板到service下)
[root@litongyao zones]# vim /etc/firewalld/services/ftp.xml (修改ftp的配置文件,修改端口1121)
[root@litongyao zones]# cp /usr/lib/firewalld/zones/work.xml /etc/firewalld/zones/ (复制模板到zones下)
[root@litongyao zones]# vim /etc/firewalld/zones/work.xml (修改work.xml的配置文件,把ftp加到里面)
<service name="ftp"/>
[root@litongyao zones]# firewall-cmd --reload (重新加载配置,配置文件生效)