文章目录
- 什么是Firewalld防火墙
- firewalld防火墙的域概念
- firewalld-cmd的参数及作用
- firewalld中的过滤规则
- firewalld防火墙的作用模式
- firewalld-cmd操作实例
- 对Firewalld服务的简单操作
- 新版系统上已自带firewalld防火墙还可以使用iptables吗?
- firewalld 和iptables的关系
- firewalld图形界面(GUI)
什么是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-inversion | ICMP协议类型黑白名单开关(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 ~]
success
[root@linux ~]
success
查询eno16777728网卡在firewalld服务中的区域:
[root@linux ~]
firewalld服务中请求HTTP协议的流量设置为永久拒绝:
[root@linux ~]
success
实例:添加开发端口重载后生效
[root@MiWiFi-R4AC-srv ~]
running
[root@MiWiFi-R4AC-srv ~]
80/tcp
[root@MiWiFi-R4AC-srv ~]
success
[root@MiWiFi-R4AC-srv ~]
80/tcp
[root@MiWiFi-R4AC-srv ~]
success
[root@MiWiFi-R4AC-srv ~]
80/tcp 8090/tcp
[root@MiWiFi-R4AC-srv ~]
success
[root@MiWiFi-R4AC-srv ~]
success
[root@MiWiFi-R4AC-srv ~]
success
[root@MiWiFi-R4AC-srv ~]
80/tcp
[root@MiWiFi-R4AC-srv ~]
实例: 开启某个端口(指定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"
实例:删除某个端口(指定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"
实例:防火墙配置文件路径
[root@MiWiFi-R4AC-srv ~]
[root@MiWiFi-R4AC-srv ~]
[root@MiWiFi-R4AC-srv zones]
block.xml dmz.xml drop.xml external.xml home.xml internal.xml public.xml trusted.xml work.xml
实例:firewall-cmd --list-all #默认查看的是public
[root@MiWiFi-R4AC-srv ~]
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:
实例:查询9个域
block dmz drop external home internal public trusted work
对Firewalld服务的简单操作
查看本机使用哪种服务的防火墙
systemctl list-unit-files |grep firewalld
systemctl status firewalld
查看开机是否启动防火墙
systemctl is-enabled firewalld.service
重新加载防火墙
systemctl reload firewalld.service
firewall-cmd --reload
启动firewalld防火墙
systemctl start firewalld
service firewalld.service start
重启firewalld服务
systemctl restart firewalld
service firewalld.service restart
关闭防火墙
systemctl stop firewalld
开机启动防火墙
systemctl enable firewalld.service
chkconfig firewalld on
开机不启动firewalld防火墙
systemctl disable firewalld.service
or
chkconfig firewalld.service off
新版系统上已自带firewalld防火墙还可以使用iptables吗?
CentOS7 默认使用firewalld防火墙,如果想换回iptables防火墙,可关闭firewalld并安装iptables,启用iptables后即可使用iptalbes防火墙和对其进行配置使用。
yum install iptables.service
firewalld 和iptables的关系
借图一张
Linux防火墙配置
/etc/firewalld/firewalld.conf
firewalld图形界面(GUI)
由于这里没有说GUI界面的操作,所以放一张图让大家认识一下,知道了firewalld的设置原理,使用GUI界面应该不难(从书上借图一张)
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)