30.Firewalld-Linux

1.网络区域

trusted(信任区域) 可接收所有网络连接

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

work(工作区域) 除非与传出流量相关,或与 ssh、ipp-client、dhcpv6-client 预定义服务匹配,否则拒绝流量传入,用于工作区。相信网络内的其他计算机不会危害计算机,仅接收经过选择的连接

home(家庭区域) 除非与传出流量相关,或与 ssh、ipp-client、mdns、samba-client、dhcpv6-client 预定义服务匹配,否则拒绝流量传入,用于家庭网络。信任网络内的其他计算机不会危害计算机,仅接收经过选择的连接

internal(内部区域) 除非与传出流量相关,或与 ssh、ipp-client、mdns、samba-client、dhcpv6-client 预定义服务匹配,否则拒绝流量传入,用于内部网络。信任网络内的其他计算机不会危害计算机,仅接收经过选择的连接

external(外部区域) 除非与传出流量相关,或与 ssh 预定义服务匹配,否则拒绝流量传入。通过此区域转发的 IPv4 传出流量将进行地址伪装,可用于为路由器启用了伪装功能的外部网络

dmz(隔离区域也称为非军事区域)除非与传出的流量相关,或与 ssh 预定义服务匹配,否则拒绝流量传入

block(限制区域) 除非与传出流量相关,否则拒绝所有传入流量

drop(丢弃区域) 除非与传出流量相关,否则丢弃所有传入流量,并且不产生包含 ICMP(Internet Control Message Protocol,互联网控制报文协议)的错误响应

2.firewalld-cmd命令

(1).firewalld服务管理

systemctl start firewalld #启动firewalld

systemctl enable firewalld #设置firewalld为开机自启动

systemctl status firewalld #查看firewalld服务状态

firewall-cmd --state #查看firewalld服务状态

systemctl stop firewalld #停止firewalld

systemctl disable firewalld #设置firewalld开机不自启动

(2).获取预定义信息

firewall-cmd --get-zones #显示预定义的区域

firewall-cmd --get-service #显示预定义的服务

firewall-cmd --get-service | tr ' ' '\n' #显示预定义的服务以空格做换行操作

firewall-cmd --get-icmptypes | tr ' ' '\n' #显示预定义的ICMP类型

(3).区域管理 --get

firewall-cmd --get-default-zone #显示当前系统中的默认区域

firewall-cmd --list-all #显示默认区域的所有规则

firewall-cmd --get-zone-of-interface=ens33 #显示网络接口ens33对应区域

firewall-cmd --zone=internal --change-interface=ens33 #将网络接口ens33对应区域为internal区域

firewall-cmd --zone=internal --list-interfaces

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

firewall-cmd --get-active-zones #显示所有激活区域

(4).服务管理 /usr/lib/firewalld/services XML文件

firewall-cmd --list-services #显示默认区域内允许访问的所有服务

firewall-cmd --add-service=http #设置默认区域允许访问http服务

firewall-cmd --add-service=https #设置默认区域允许访问https服务

firewall-cmd --list-services #查看当前默认区域中已放行的 firewalld 预定义服务

firewall-cmd --zone=internal --add-service=mysql #设置internal1区域允许访问mysql服务

firewall-cmd --zone=internal --remove-service=samba-client #设置internal1区域不允许访问samba-client服务

firewall-cmd --zone=internal --list-services #显示internal区域内允许访问的所有服务

(5).端口管理

firewall-cmd --zone=internal --add-port=443/tcp #在internal区域打开443/tcp端口

firewall-cmd --zone=internal --remove-port=443/tcp #在internal区域禁止443/tcp端口

(6).两种配置模式

Runtime mode:运行时模式

Permanent mode:永久模式

--reload:重新加载防火墙规则并保持状态信息,也就是将永久配置应用为运行时模式。

--permanent:带有此选项的命令用于设置永久性规则,这些规则只有在重新启动firewalld 或重新加载防火墙规则时才会生效;若不带有此选项,表示用于设置运行时规则。

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

实验

1. 禁止所有主机 ping 服务器(阻断 ICMP echo-request)
bash 复制代码
# 临时生效(internal 区域)
firewall-cmd --zone=internal --add-icmp-block=echo-request
# 永久生效
firewall-cmd --zone=internal --add-icmp-block=echo-request --permanent
firewall-cmd --reload
2. 仅允许 192.168.8.130 访问 SSH 服务
bash 复制代码
# 先移除 internal 区域默认放行的 SSH(避免冲突)
firewall-cmd --zone=internal --remove-service=ssh
firewall-cmd --permanent --zone=internal --remove-service=ssh

# 添加富规则(仅允许指定IP访问SSH,作用于internal区域)
firewall-cmd --zone=internal --add-rich-rule='rule family="ipv4" source address="192.168.8.130" port protocol="tcp" port="22" accept'
firewall-cmd --permanent --zone=internal --add-rich-rule='rule family="ipv4" source address="192.168.8.130" port protocol="tcp" port="22" accept'
firewall-cmd --reload
3. 允许所有主机访问 Apache 服务
bash 复制代码
# 临时生效(internal 区域)
firewall-cmd --zone=internal --add-service=http
# 永久生效
firewall-cmd --permanent --zone=internal --add-service=http
firewall-cmd --reload

验证 internal 区域的规则(确认配置生效)

bash 复制代码
# 查看 internal 区域所有放行规则(含服务、富规则、ICMP阻断等)
firewall-cmd --zone=internal --list-all

输出中应能看到:

  • icmp-blocks: echo-request(ping 已阻断);
  • rich rules: rule family="ipv4" source address="192.168.8.130" port port="22" protocol="tcp" accept(SSH 仅允许指定IP);
  • services: http(Apache 已放行)。

可选优化(简化后续操作)

若后续所有规则都针对 internal 区域,可将其设为默认区域,避免每次加 --zone=internal

bash 复制代码
# 永久设置默认区域为 internal
firewall-cmd --permanent --set-default-zone=internal
firewall-cmd --reload

# 验证默认区域
firewall-cmd --get-default-zone  # 输出 internal
相关推荐
jiayong231 小时前
DevOps体系详解01-核心概念与价值
运维·devops
jiayong232 小时前
DevOps体系详解02-技术架构与工具链
运维·架构·devops
pride.li2 小时前
开发板和Linux--nfs服务挂载
linux·运维·服务器
looking_for__3 小时前
【Linux】应用层协议
linux·服务器·网络
BB_CC_DD3 小时前
Linux截图工具(ubuntu18.04+flameshot(火焰截图))
linux
打码人的日常分享3 小时前
智能制造数字化工厂解决方案
数据库·安全·web安全·云计算·制造
云泽8084 小时前
不止是命令:Linux 高频指令实战 + 芯片架构底层逻辑
linux·运维·服务器
j_xxx404_4 小时前
Linux:基础IO
linux·运维·服务器
wdfk_prog4 小时前
[Linux]学习笔记系列 -- [drivers][i2c]i2c-dev
linux·笔记·学习
angushine5 小时前
银河麒麟V10创建用户
运维