linux防火墙 firewalld命令、防火墙区域、区域规则、服务管理、firewalld端口、运行时、永久配置、禁止ping、查看网卡情况、协议、路由转发功能、将网卡添加到对应的某一区域。

目录

概述:

传统意义上的防火墙技术主要分为以下几类:

关键特点:

firewalld网络区域

firewall命令

启动

停止

开机自启 

禁止开机自启动

查看

获取预定义信息

显示预定义的区域

显示预定义的服务

显示预定义的icmp类型

firewall-cmd --get-icmptypes命令执行结果阻塞信息类型

firewalld防火墙区域

查看区域

查看默认区域

设置默认区域

显示默认区域的所有规则

查看活动区域--显示所有激活区域。

修改接口区域

查看区域规则

添加或删除服务

永久更改

显示网络接口 ens33 对应区域

将网络接口 ens33 对应区域更改为 internal 区域。

 服务管理

列出可用服务

查看服务的详细信息

添加服务

删除服务

永久更改

查看当前区域的服务(允许的)

查看特定区域的服务

firewalld端口

添加端口

删除端口

查看端口

永久更改

运行时和永久配置

两种配置模式

运行时模式 (Runtime mode) 

永久模式 (Permanent mode )

firewall-cmd 命令工具与配置模式相关的选项有三个。

范围端口

协议

开启网关服务器的路由转发功能

禁止ping

将(ens33)网卡配置到某一个区域

查看网卡配置情况


概述:

        Firewalld是Linux系统上的一种动态防火墙管理工具,提供了支持网络/防火墙区域(zones)和接口的标记能力,它是CentOS 7及其后续版本的默认防火墙管理工具,取代了之前的iptables防火墙。Firewalld提供了一种简化和易于使用的方法来配置和管理防火墙,支持IPv4、IPv6防火墙设置以及以太网桥。它支持运行时配置与永久配置,允许动态更新防火墙规则,这意味着您可以在运行时添加、删除或修改规则,而无需重新加载整个防火墙配置。这是 CentOS、Fedora 和其他基于 RHEL 的发行版中的默认防火墙管理工具。

设置在不同网络与网络安全域之间的一系列部件的组合,也是不同安全域之间信息 的唯一出口。通过监测、限制并更改跨越防火墙的数据流,尽可能地对外屏蔽网络内部的信息、结构和运行状态,且有选择地接受外部网络访问。在内外网之间架起一道屏障,以避免发生不可预知 或潜在的入侵。

        Linux 的防火墙体系主要工作在网络层,针对TCP/P 数据包实时过滤和限制,属于典型的包过滤 防火墙(或称为网络层防火墙)。Linux 系统的防火墙体系基于内核编码实现,具有非常稳定的性能 和高效率,也因此获得广泛的应用。在 CentOS7 系统中几种防火墙共存:firewalld、iptables、ebtables, 默认使用firewalld 来管理 netfilter 子系统。

传统意义上的防火墙技术主要分为以下几类:

  1. 包过滤防火墙(Packet Filtering Firewall): 这是最基本的防火墙类型,它工作在网络层(OSI模型的第三层)和传输层(OSI模型的第四层)。包过滤防火墙根据预设的规则检查数据包的头部信息,如源IP地址、目的IP地址、端口号、协议类型等,然后决定是否允许数据包通过。

  2. 应用层防火墙(Application-Level Gateway Firewall,也称为代理防火墙): 应用层防火墙工作在OSI模型的第五层或更高层,它能够检查应用层协议的数据。这种防火墙可以理解特定应用协议的细节,并据此进行过滤。它通常通过代理服务器来处理数据传输,可以提供更高级的安全功能,如用户身份验证和数据内容检查。

  3. 电路层防火墙(Circuit-Level Gateway Firewall): 电路层防火墙工作在OSI模型的会话层(第五层),它在传输层建立了一个连接,并监控这个连接的状态。它不会检查每个数据包的内容,而是检查建立连接的尝试和连接的状态,确保连接是合法的。

  4. 状态检测防火墙(Stateful Inspection Firewall): 状态检测防火墙结合了包过滤防火墙和电路层防火墙的特点。它不仅检查数据包的头部信息,还会记录和检查数据包的状态信息,以决定是否允许数据包通过。这种防火墙可以跟踪TCP连接的状态,确保只有合法的连接数据包被允许通过。

  5. 下一代防火墙(Next-Generation Firewall,NGFW): 下一代防火墙是较新的技术,它不仅包括上述所有防火墙的功能,还增加了更多的安全特性,如入侵预防系统(IPS)、应用层过滤、用户身份识别、深度包检查(DPI)等。NGFW能够提供更细粒度的控制和更全面的安全保护。

无论一个防火墙的实现过程有多复杂,根本原因都是在这三种技术的基础上进行扩展的。

传统意义上的防火墙技术可以单独使用,也可以组合使用。

关键特点:

  1. 区域(Zones)firewalld 使用区域来管理规则。每个区域都有自己的规则集,用于处理进入该区域的流量。例如,public 区域可能允许有限的流量,而 trusted 区域可能允许所有流量。

  2. 服务(Services):服务是预定义的规则,用于简化特定类型流量的管理。例如,ssh 服务会自动打开端口 22,允许 SSH 连接。

  3. 接口(Interfaces):可以将网络接口分配给一个区域,以便对该接口上的流量应用相应的规则。

  4. 富规则(Rich Rules):除了基本的服务和端口规则之外,firewalld 还允许使用富规则进行更复杂的流量管理,如基于源地址、目的地址、协议等条件进行过滤。

  5. 运行时和永久配置firewalld 允许您在运行时(即时生效,但重启后失效)和永久(重启后仍然有效)之间进行选择。

  6. 动态更新firewalld 支持在不中断服务的情况下动态更新规则,这意味着可以在不重启服务的情况下更改防火墙设置。

  7. IPv4 和 IPv6 支持firewalld 同时支持 IPv4 和 IPv6。

  8. 图形界面和命令行工具firewalld 提供了图形界面(firewall-config)和命令行工具(firewall-cmd),方便用户进行配置。

firewalld网络区域

根据数据包的源IP  址或传入网络接口等条件,将数据流量转入相应区域的防火墙规则。对于进入系统的数据包,首先检查的就是其源地址。

若源地址关联到特定的区域,则执行该区域所制定的规则。

若源地址未关联到特定的区域,则使用传入网络接口的区域并执行该区域所制定的规则。

若网络接口未关联到特定的区域,则使用默认区域并执行该区域所制定的规则。

block(限制)

任何进入的流量都会被拒绝,并回复一个拒绝包。只有出口流量,与传出流量相关,会被允许。

drop(丢弃)任何进入的流量都会被丢弃,没有任何回复。只有出口流量与传出流量相关会被允许。
dmz(隔离区用于隔离区域。只有与传出的流量相关,或者与ssh预定以服务匹配,否则拒绝流量通过。
external(外部)

通过此区域转 发的IPv4传出流量将进行地址伪装,可用于为路由器启用了伪装功能的外部网络。

用于路由器等设备,保护内部网络不受外部网络的攻击。

home(家庭)用于家庭区域,除与传出流量相关,或与ssh、ipp-client、mdns、samba-client、dhcpv6-client预定 义服务匹配,否则拒绝流量传入,信任网络内的其他计算机不会危害计算机,仅接收经过选择的连接。
internal(内部)用于内部网络。除非与传出流量相关,或与ssh、ipp-client、mdns、samba-client、dhcpv6-client预定 义服务匹配,否则拒绝流量传入。信任网络内的其他计算机不会危害计算机,仅接收经过选择的连接。
public(公共)默认区域用于在公共场所,您不信任其他计算机。只允许选定的入口流量,例如用于浏览网页和电子邮件。        

除非与传出流量相关,或与ssh或dhcpv6-client预定义服务匹配,否则拒绝流量传入 在公共区域内,不能相信网络内的其他计算机不会对计算机造成危害,只能接收经过 选择的连接。且该区域是新添加网络接口的默认区域。

trusted(信任)所有流量都允许,可接收所有的网络连接。这个区域对于您完全信任的内部网络非常有用。
work(工作)用于工作区域,您信任其他计算机不会危害您的计算机。除非与传出流量相关,或与ssh、ipp-client、dhcpv6-client预定义服务匹配,否则拒绝 流量传入,用于工作区。相信网络内的其他计算机不会危害计算机,仅接收经过选择的连接。

firewall命令

启动

systemctl start direwalld

停止

systemctl stop firewalld

开机自启 

systemctl enable firewalld

禁止开机自启动

systemctl disable firewalld

查看

systemctl status firewalld

#或者
 

firewall-cmd  --state

获取预定义信息

firewall-cmd预定义信息主要分为三种:

1、可用区域

2、可用服务

3、可用的icmp阻塞类型

显示预定义的区域

firewall-cmd --get-zones

显示预定义的服务

firewall-cmd --get-service

显示预定义的icmp类型

firewall-cmd --get-icmptypes

firewall-cmd --get-icmptypes命令执行结果阻塞信息类型

address-mask-reply:回应子网掩码请求。
address-mask-request:请求子网掩码。

 destination-unreachable

当数据包无法到达目的地时使用。

目的地址不可达。

echo-reply

回应 ICMP 回显请求(ping)。

应答回应 (ping)。

parameter-problem

参数问题。

当数据包中的某个参数有问题时使用。

redirect:

重新定向。

用于路由器通知主机更好的路由。

router-advertisement:

路由器通告。

router-solicitation:

路由器征寻。

source-quench:

旧版的流量控制消息,现代网络中很少使用。

源端抑制。

time-exceeded:

超时。

当数据包的生存时间(TTL)耗尽时使用。

timestamp-reply:

时间戳应答回应。

回应时间戳请求。

timestamp-request:

时间戳请求。

information-request:旧版的 ICMP 请求,已不再使用。
information-reply:旧版的 ICMP 回复,已不再使用。

要允许或阻止特定的 ICMP 类型,您可以使用 firewall-cmd 命令的 --add-icmp-block 和 --add-icmp-block-inversion 选项。例如,要阻止所有 ICMP 流量,可以使用以下命令:

firewall-cmd --add-icmp-block=incoming --permanent
firewall-cmd --reload

要仅阻止特定的 ICMP 类型,例如 echo-request(ping),可以使用:

firewall-cmd --add-icmp-block=echo-request --permanent
firewall-cmd --reload

命令中的 --permanent 选项意味着更改将永久生效,并在防火墙服务重载后生效。如果您不使用 --permanent 选项,更改将只在当前会话中生效,并在系统重启或防火墙服务重载后失效。

firewalld防火墙区域

在 firewalld 中,区域(zones)是一个核心概念,它允许管理员根据网络的信任级别来应用不同的防火墙规则。每个区域都有自己的规则集,决定了哪些流量被允许进入或离开系统。

查看区域

firewall-cmd --get-zones

查看默认区域

firewall-cmd --get-default-zone

设置默认区域

firewall-cmd --set-default-zone=public

public 是您想要设置为默认的区域名称。

显示默认区域的所有规则

firewall-cmd --list-all

查看活动区域--显示所有激活区域。

firewall-cmd --get-active-zones

修改接口区域

要将某个接口分配到特定区域,eth0 是您想要分配区域的接口名称,public 是目标区域的名称。

firewall-cmd --zone=public --change-interface=eth0

查看区域规则

要查看特定区域的所有规则,

firewall-cmd --list-all --zone=public

添加或删除服务

要在特定区域中添加或删除服务。

firewall-cmd --zone=public --add-service=http
firewall-cmd --zone=public --remove-service=http

永久更改

要在系统重启后保持更改,需要添加 --permanent 选项。

firewall-cmd --zone=public --add-service=http --permanent

在做出永久性更改后,需要重新加载 firewalld 以应用这些更改:

firewall-cmd --reload

显示网络接口 ens33 对应区域

firewall-cmd --get-zone-of-interface=ens33

将网络接口 ens33 对应区域更改为 internal 区域。

firewall-cmd --zone=public --change-interface=ens33
#The interface is under control of NetworkManager,setting zone to 'internal'. 
#该接口由NetworkManager控制,将区域设置为“内部”。
#success
#成功
firewall-cmd --zone=internal --list-interfaces
#ens33
firewall-cmd --get-zone-of-interface=ens33 
#internal

 服务管理

firewalld 中,服务(services)是一组预定义的防火墙规则,用于简化对特定网络服务的管理。每个服务通常对应于一个或多个端口和协议,以及可能需要的任何额外的防火墙设置。

firewalld 预先定义了很多服务,存放在/usr/lib/firewalld/services/    目录中   服务通过单个的 XML 配置文件来指定。这些配置文件则按以下格式命名: service-name.xml,每个 文件对应一项具体的网络服务。

以 XML 格式编写的,它们定义了服务的基本属性,包括服务名称、端口号、协议、模块等。服务配置文件的优点包括:

简化规则管理通过服务配置文件,管理员可以为常用服务定义一组预配置的规则,而不是手动添加每个需要的端口和协议。这简化了防火墙的配置和管理。
可重用性:一旦为某个服务定义了配置文件,该配置可以在多个区域中重复使用,而无需为每个区域重新定义相同的规则。
易于理解和维护服务配置文件提供了一个清晰的结构,使得理解和维护防火墙规则变得更加容易。文件名和服务名通常与服务本身相对应,如 ssh.xml 对应于 SSH 服务。
一致性使用服务配置文件有助于保持防火墙规则的一致性。当服务更新或端口变化时,只需更新一个配置文件,而不是所有引用该服务的规则。
灵活性管理员可以根据需要轻松地自定义或修改服务配置文件,以满足特定的安全需求或网络环境。
中央化管理在大型或分布式环境中,服务配置文件可以在多个系统之间共享,使得中央化管理变得更加方便。
运行时和永久配置firewalld 允许管理员在运行时和永久配置之间进行选择。服务配置文件可以应用于即时生效的运行时配置,也可以应用于重启后仍然有效的永久配置。
模块化服务配置文件支持使用内核模块,这允许更高级的防火墙规则,如根据连接的状态或内容过滤流量。
良好的文档和社区支持由于 firewalld 是许多 Linux 发行版的一部分,因此有广泛的文档和社区支持,这有助于解决配置和管理中的问题。

 firewall-cmd 命令区域中服务管理的常用选项说明

选项说明

[--zone=<zone>]--list-services

显示指定区域内允许访问的所有服务

[--zone=<zone>]--add-service=<service>

为指定区域设置允许访问的某项服务

[--zone=<zone>]--remove-service=<service>

删除指定区域已设置的允许访问的某项服务

[--zone=<zone>]--list-ports

显示指定区域内允许访问的所有端口号

[--zone=<zone>]--add-port=<portid>[-<portid>]/<protocol>

为指定区域设置允许访问的某个/某段端口号(包括协议名)

[--zone=<zone>]--remove-port=<portid>[-<portid>]/<protocol>

删除指定区域已设置的允许访问的端口号(包括 协议名)

[--zone=<zone>]--list-icmp-blocks

显示指定区域内拒绝访问的所有ICMP类型

[--zone=<zone>]--add-icmp-block=<icmptype>

为指定区域设置拒绝访问的某项ICMP类型

[--zone=<zone>]--remove-icmp-block=<icmptype>

删除指定区域已设置的拒绝访问的某项ICMP 类型,省略--zone=<zone>时表示对默认区域操作

列出可用服务

firewall-cmd --get-services

查看服务的详细信息

firewall-cmd --service=ssh --get-all
#ssh 是您想要查看的服务名称。

添加服务

firewall-cmd --zone=public --add-service=http

public 是您想要添加服务的区域名称,http 是您想要添加的服务名称。

删除服务

firewall-cmd --zone=public --remove-service=http

永久更改

要在系统重启后保持更改,需要添加 --permanent 选项。

firewall-cmd --zone=public --add-service=http --permanent

在做出永久性更改后,需要重新加载 firewalld 以应用这些更改:

firewall-cmd --reload

查看当前区域的服务(允许的)

firewall-cmd --list-services

查看特定区域的服务

firewall-cmd --zone=public --list-services

firewalld端口

在 firewalld 中,端口管理是控制网络流量进出系统的关键方面。您可以使用 firewalld 的命令行工具 firewall-cmd 来添加、删除或查询端口的防火墙规则。

在进行服务配置时,预定义的网络服务可以使用服务名配置,服务所涉及的端口就会自动打开。 但是,对于非预定义的服务只能手动为指定的区域添加端口。

添加端口

firewall-cmd --zone=public --add-port=1626/tcp

public 是您想要添加端口的区域名称,1626/tcp 表示您想要添加的端口和协议。

删除端口

firewall-cmd --zone=public --remove-port=1626/tcp

查看端口

firewall-cmd --zone=public --list-ports

永久更改

firewall-cmd --zone=public --add-port=1626/tcp --permanent

要在系统重启后保持更改,需要添加 --permanent 选项。

在做出永久性更改后,需要重新加载 firewalld 以应用这些更改:

firewall-cmd --reload

运行时和永久配置

firewalld 允许您在运行时(即时生效,但重启后失效)和永久(重启后仍然有效)之间进行选择。如果您不使用 --permanent 选项,更改将只在当前会话中生效,并在系统重启或防火墙服务重载后失效。

两种配置模式

运行时模式 (Runtime mode) 

运行时模式 (Runtime mode) 表示当前内存中 运行的防火墙配置,在系统或firewalld 服务重启、停止时配置将失效;

永久模式 (Permanent mode )

表示重启防火墙或重新加载防火墙时的规则配置,是永久存储在配置文件中的。

firewall-cmd 命令工具与配置模式相关的选项有三个。

--reload:

重新加载防火墙规则并保持状态信息,即将永久配置应用为运行时配置。

--permanent:

带有此选项的命令用于设置永久性规则,这些规则只有在重新启动 firewalld

或重新加载防火墙规则时才会生效;若不带有此选项,表示用于设置运行时规则。

--runtime-to-permanent:

将当前的运行时配置写入规则配置文件中,使之成为永久性配置。

范围端口

您还可以添加端口范围,而不是单个端口:

firewall-cmd --zone=public --add-port=10000-20000/tcp

协议

firewalld 支持多种协议,包括但不限于 tcpudp 和 sctp。确保在添加端口时指定正确的协议。

开启网关服务器的路由转发功能

vim /etc/sysctl.conf
net.ipv4.ip_forward = 1
sysctl -p

禁止ping

firewall-cmd --add-icmp-block=echo-request --zone=external --permanent

将(ens33)网卡配置到某一个区域

firewall-cmd --change-interface=ens33 --zone=external

查看网卡配置情况

firewall-cmd --get-active-zones
  • 15
    点赞
  • 30
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

jingyu飞鸟

醒来觉得甚是爱你。

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值