Linux日常维护(firewalld的9个zone和service)

一、iptables规则备份和恢复


iptables如果不使用service iptables save命令,则重启之后规则会全部消失。

services save命令默认把规则保存在/etc/sysconfig/iptables文件里。

可以用ipables-save > ipt.txt 这个命令把现在的规则保存在文本文件里。然后在恢复默认配置

等到想用的时候再用iptables-restore < ipt.txt这个命令恢复保存的配置。

如果想启动服务就让有规则,就把iptables保存在/etc/sysconfig/iptables


举例:

Linux日常维护(firewalld的9个zone和service)

Linux日常维护(firewalld的9个zone和service)


二、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                  (重新加载配置,配置文件生效)











本文转自 小新锐 51CTO博客,原文链接:http://blog.51cto.com/13407306/2046941,如需转载请自行联系原作者
上一篇:TCP 三次握手原理,你真的理解吗?


下一篇:上手体验!如何借助龙蜥实验室快速部署 Web 应用?