当前位置:   article > 正文

linux 防火墙管理-firewalld_linux firewalld

linux firewalld

什么是Firewalld防火墙

当前很多linux系统中都默认使用 firewalld(Dynamic Firewall Manager of Linux systems,Linux系统的动态防火墙管理器)服务作为防火墙配置管理工具。
“firewalld”是firewall daemon。它提供了一个动态管理的防火墙,带有一个非常强大的过滤系统,称为 Netfilter,由 Linux 内核提供。有命令行界面(CLI)和图形界面(GUI).
这里主要讲解CLI方式。
“Firewalld”提供了一种非常灵活的方式来处理防火墙管理,有了区域(zone)的概念,用户根据使用场景选择不同域(zone),为每个域设置好策略,切换办公场所只要用鼠标去选择不同的区域即可(也可用简单的命令行来进行域的切换),区域如同进入主机的安全门, 每个区域都具有不同限制程度的规则, 只会允许符合规则的流量传入,默认public区域(默认情况下,public区域是默认区域,包含所有接口 (网卡))。

firewalld防火墙的域概念

firewalld防火墙可以分为9个域,用命令可以查看系统中这几个域(下面会有介绍)。
(1)丢弃区域(Drop Zone):如果使用丢弃区域,任何进入的数据包将被丢弃,这个类似于Centos6上的 iptables -j drop ,使用丢弃规则意味着将不存在相应。
(2)阻塞区域(Block Zone):阻塞区域会拒绝进入的网络连接,返回icmp-host-prohibited,只有服务器已经建立的连接会被通过,即只允许由该系统初始化的网络连接。
(3)公共区域(Public Zone):只接受那些被选中的连接,默认只允许ssh和dhcpv6-client,这个zone是缺省zone(缺省就是默认的意思,所以公共区域也是默认区域,在没有任何配置的情况下走的是公共区域)。
(4)外部区域(External Zone):这个区域相当于路由器的启动伪装(masquerading)选项,只有指定的连接会被接受,即ssh,而其他的连接将被丢弃或者不被接受。
(5)隔离区域(DMZ Zone):如果想要只允许给部分服务能被外部访问,可以在DMZ区域中定义,它也拥有只通过被选中连接的特性,即ssh, 这个区域又叫做非军事化区域。
(6)工作区域(Work Zone):在这个区域中,我们只能定义内部网络,比如私有网络通信才被允许, 只允许ssh、ipp-client和dhcpv6-client。
(7)家庭区域(Home Zone):这个区域专门用于家庭环境,它同样只允许被选中的连接, 即ssh、ipp-client、mdns、samba-client和dhcpv6-client。
(8)内部区域(Internal Zone):这个区域和 工作区域(Work Zone) 类似,只允许通过被选中的连接,与 家庭区域(Home Zone) 相同。
(9)信任区域(Trusted Zone):信任区域允许所有网络通信通过,因为 信任区域(Trusted Zone)是最被信任的,即使没有设置任何的服务,那么也是被允许的,因为 信任区域(Trusted Zone)是允许所有连接的。

以上是系统定义的所有的区域(Zone),但是,不是所有的区域(Zone)都在使用,只有活跃的区域(Zone)才有实际操作意义,活跃域是当前使用的域,这个活动域可以根据需要切换。
firewalld-cmd 是firewalld防火墙的命令行管理工具。

firewalld-cmd的参数及作用

参数作用
–get-default-zone查询默认的区域名称
–set-default-zone=<区域名称>设置默认的区域,使其永久生效
–get-zones显示可用的区域
–get-services显示预先定义的服务
–get-active-zones显示当前正在使用的区域与网卡名称
–add-source=将源自此IP或子网的流量导向指定的区域
–remove-source=不再将源自此IP或子网的流量导向某个指定区域
–add-interface=<网卡名称>将源自该网卡的所有流量都导向某个指定区域
–change-interface=<网卡名称>将某个网卡与区域进行关联
–list-all显示当前区域的网卡配置参数、资源、端口以及服务等信息
–list-all-zones显示所有区域的网卡配置参数、资源、端口以及服务等信息
–add-service=<服务名>设置默认区域允许该服务的流量
–add-port=<端口号/协议>设置默认区域允许该端口的流量
–remove-service=<服务名>设置默认区域不再允许该服务的流量
–remove-port=<端口号/协议>设置默认区域不再允许该端口的流量
–reload让“永久生效”的配置规则立即生效,并覆盖当前的配置规则
–panic-on开启应急状况模式
–panic-off关闭应急状况模式
–add-rich-rule防火墙富规则,具体用户也可以参见https://blog.51cto.com/u_3823536/2552274
–zoon制定设置域,用法–zoon=work

firewalld中的过滤规则

参数参数作用
target目标区域
icmp-block-inversionICMP协议类型黑白名单开关(yes/no)
Interfaces关联的网卡接口
sources来源,可以是IP地址,也可以是mac地址
services允许的服务
ports允许的目标端口,即本地开放的端口
protocols允许通过的协议
masquerade是否允许伪装(yes/no),可改写来源IP地址及mac地址
forward-ports允许转发的端口
source-ports允许的来源端口
icmp-blocks可添加ICMP类型,当icmp-block-inversion为no时,这些ICMP类型被拒绝;当icmp-block-inversion为yes时,这些ICMP类型被允许。
rich rules富规则,即更细致、更详细的防火墙规则策略,它的优先级在所有的防火墙策略中也是最高的。

对于一个接受到的请求具体使用哪个zone,firewalld是通过三种方法来判断的:
1、source,也就是源地址 优先级最高
2、interface,接收请求的网卡 优先级第二
3、firewalld.conf中配置的默认zone 优先级最低

firewalld防火墙的作用模式

Runtime模式:firewalld默认模式,当前生效模式,重启后失效;
Permanent模式:永久模式,需要系统重启或手动执行firewalld-cmd reload后生效。

firewalld-cmd操作实例

把原本访问本机8000端口的流量转发到7000端口,且长期有效
流量转发命令格式为:
firewall-cmd --permanent --zone=<区域> --add-forward-port=port= <源端口号>:proto=<协议>:toport=<目标端口号>:toaddr=<目标IP地址>

[root@linux ~]# firewall-cmd --permanent --zone=public --add-forward port=8000:proto=tcp:toport=7000:toaddr=192.168.1.100 
success 
[root@linux ~]# firewall-cmd --reload
success
  • 1
  • 2
  • 3
  • 4

查询eno16777728网卡在firewalld服务中的区域:

[root@linux ~]# firewall-cmd --get-zone-of-interface=eno16777728 public
  • 1

firewalld服务中请求HTTP协议的流量设置为永久拒绝:

[root@linux ~]# firewall-cmd --permanent --zone=public --remove-service=http
  success
  • 1
  • 2

实例:添加开发端口重载后生效

[root@MiWiFi-R4AC-srv ~]# firewall-cmd --state #查询firewalld防火墙状态
running
[root@MiWiFi-R4AC-srv ~]# firewall-cmd --list-ports #列出防火墙开放端口
80/tcp
[root@MiWiFi-R4AC-srv ~]# firewall-cmd --permanent --add-port=8090/tcp #添加8090开放端口
success
[root@MiWiFi-R4AC-srv ~]# firewall-cmd --list-ports #列出防火墙开放端口
80/tcp
[root@MiWiFi-R4AC-srv ~]# firewall-cmd --reload #重载firewalld防火墙
success
[root@MiWiFi-R4AC-srv ~]# firewall-cmd --list-ports #列出防火墙开放端口
80/tcp 8090/tcp
[root@MiWiFi-R4AC-srv ~]# firewall-cmd --query-port=8090/tcp #查询8090端口是否开放
success
[root@MiWiFi-R4AC-srv ~]# firewall-cmd --permanent --remove-port=8090/tcp #移出8090开发端口
success
[root@MiWiFi-R4AC-srv ~]# firewall-cmd --reload #重载firewalld防火墙
success
[root@MiWiFi-R4AC-srv ~]# firewall-cmd --permanent --list-ports #列出防火墙开放端口
80/tcp
[root@MiWiFi-R4AC-srv ~]# 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21

实例: 开启某个端口(指定IP可访问)

firewall-cmd --permanent --zone=public --add-rich-rule="rule family="ipv4" source address="10.1.1.14/32" port protocol="tcp" port="80" accept"
  • 1

实例:删除某个端口(指定IP可访问)策略

firewall-cmd --permanent --zone=public --remove-rich-rule="rule family="ipv4" source address="10.1.1.14/32" port protocol="tcp" port="80" accept"
  • 1

实例:防火墙配置文件路径

[root@MiWiFi-R4AC-srv ~]# firewall-cmd --list-all-zones #查看9个域
[root@MiWiFi-R4AC-srv ~]#cd /etc/firewalld/zones
[root@MiWiFi-R4AC-srv zones]# ls
block.xml  dmz.xml  drop.xml  external.xml  home.xml  internal.xml  public.xml  trusted.xml  work.xml
  • 1
  • 2
  • 3
  • 4

实例:firewall-cmd --list-all #默认查看的是public

[root@MiWiFi-R4AC-srv ~]# firewall-cmd --list-all #默认查看的是public
public (active)
  target: default
  icmp-block-inversion: no
  interfaces: eno1
  sources: 
  services: dhcpv6-client ssh
  ports: 80/tcp 8090/tcp
  protocols: 
  masquerade: no
  forward-ports: 
  source-ports: 
  icmp-blocks: 
  rich rules: 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14

实例:查询9个域

#[root@MiWiFi-R4AC-srv zones]# firewall-cmd --get-zones #查询防火墙9个域,配置文件位于/etc/firewalld/zones
block dmz drop external home internal public trusted work
  • 1
  • 2

对Firewalld服务的简单操作

查看本机使用哪种服务的防火墙

systemctl list-unit-files |grep firewalld  #查看是否安装了firewalld防火墙
systemctl status firewalld #查看firewalld防火墙状态
  • 1
  • 2

查看开机是否启动防火墙

systemctl is-enabled firewalld.service 
  • 1

重新加载防火墙

systemctl reload firewalld.service
firewall-cmd --reload
  • 1
  • 2

启动firewalld防火墙

systemctl start firewalld
service firewalld.service start
  • 1
  • 2

重启firewalld服务

systemctl restart firewalld
service firewalld.service restart
  • 1
  • 2

关闭防火墙

systemctl stop firewalld
  • 1

开机启动防火墙

systemctl enable firewalld.service
chkconfig firewalld on #开机启动firewalld
  • 1
  • 2

开机不启动firewalld防火墙

systemctl disable firewalld.service
or
chkconfig firewalld.service off #永久关闭firewalld.service
  • 1
  • 2
  • 3

新版系统上已自带firewalld防火墙还可以使用iptables吗?

CentOS7 默认使用firewalld防火墙,如果想换回iptables防火墙,可关闭firewalld并安装iptables,启用iptables后即可使用iptalbes防火墙和对其进行配置使用。

yum install iptables.service #安装iptables
  • 1

firewalld 和iptables的关系

借图一张
在这里插入图片描述

Linux防火墙配置

/etc/firewalld/firewalld.conf

firewalld图形界面(GUI)

由于这里没有说GUI界面的操作,所以放一张图让大家认识一下,知道了firewalld的设置原理,使用GUI界面应该不难(从书上借图一张)
在这里插入图片描述

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/你好赵伟/article/detail/703186
推荐阅读
相关标签
  

闽ICP备14008679号