RHEL/CentOS的firewalld防火墙服务配置

从 RHEL/CentOS 7开始,使用新的防火墙服务------firewalld。这里介绍该防火墙服务的基本用法

一、防火墙服务管理:从 RHEL/CentOS 7开始采用Systemd作为新的系统管理器,而systemctl则是Systemd中用于管理服务的命令

复制代码
# 启动防火墙服务
systemctl start firewalld

# 停止防火墙服务
systemctl stop firewalld

# 重启防火墙服务
systemctl restart firewalld

# 查看防火墙服务状态
systemctl status firewalld

# 防火墙服务 设置开机自启
systemctl enable firewalld

# 防火墙服务 取消开机自启
systemctl disable firewalld

二、防火墙配置

firewalld提供了命令行客户端------firewall-cmd用于实现配置、修改防火墙规则

在firewalld中引入zone区域的概念。可以按网卡接口、网络连接的源地址将网络流量归属到不同的区域下进行管理。每个区域使用独立的防火墙规则。故一个网格连接只能属于一个区域,但一个区域拥有多个网络连接。当一个网络流量不属于任何一个区域管理时,则会使用默认区域(通常,该默认区域为public区域)

复制代码
# 查看所有区域的名称
firewall-cmd --get-zones

# 查看所有区域的详情
firewall-cmd --list-all-zones

# 查看指定区域的详情(防火墙规则)
firewall-cmd --zone=<区域名称> --list-all

# 查看默认区域
firewall-cmd --get-default-zone

# 设置默认区域
firewall-cmd --set-default-zone <区域名称>

# 查看活动的区域 及其配置的 网卡接口、源地址
# (一个区域如果配置了 网卡接口 或 网络连接的源地址,即为active zone活动区域)
firewall-cmd --get-active-zones

# 查看指定网卡接口所属的区域
firewall-cmd --get-zone-of-interface=<网卡接口名称>

# 向指定区域 添加 网卡接口
firewall-cmd --zone=<区域名称> --add-interface=<网卡接口名称>

# 从指定区域 移除 网卡接口
firewall-cmd --zone=<区域名称> --remove-interface=<网卡接口名称>

# 查看指定源地址所属的区域
firewall-cmd --get-zone-of-source=<源地址>

# 向指定区域 添加 源地址
firewall-cmd --zone=<区域名称> --add-source=<源地址>

# 从指定区域 移除 源地址
firewall-cmd --zone=<区域名称> --remove-source=<源地址>

三、控制端口

开放端口

复制代码
# 对指定区域,开放端口
firewall-cmd --zone=<区域名称>  --add-port=<端口号>[-端口号]/<协议>

# 对public区域,开放tcp协议83端口
firewall-cmd --zone=public  --add-port=83/tcp

# 对public区域,开放udp协议的10、11、12、13、14、15端口
firewall-cmd --zone=public  --add-port=10-15/udp

删除端口,相当于禁用端口

复制代码
# 从指定区域,删除端口
firewall-cmd --zone=<区域名称>  --remove-port=<端口号>[-端口号]/<协议>

# 对public区域,删除tcp协议的83端口
firewall-cmd --zone=public  --remove-port=83/tcp

# 对public区域,删除udp协议的10、11、12、13、14、15端口
firewall-cmd --zone=public  --remove-port=10-15/udp

查看所有开放的端口

复制代码
# 查看指定区域下,所有开放的端口
firewall-cmd --zone=<区域名称> --list-ports

# 查询指定区域下,指定协议的端口是否开放,结果yes表示开放,结果no表示未开放
firewall-cmd --zone=<区域名称> --query-port=<端口>/<协议>

# 查看public区域下,tcp协议的19999端口是否开放
firewall-cmd --zone=public --query-port=19999/tcp

使用服务

在firewalld中引入了服务service的概念,可以将其理解为一系列端口的集合。这样只需添加相应的服务到防火墙规则中,即可打开该服务关联的所有端口。firewalld中已经预定义了一部分service服务及其相应的端口

复制代码
# 查看所有预定义的服务
firewall-cmd --get-services

预定义服务的xml文件位于 /usr/lib/firewalld/services/ 下,可通过查看相应服务的xml文件确认其所关联的端口

此外我们还可以自定义服务及其关联的端口集合,自定义服务xml文件的写法可以去抄预定义服务xml文件的作业;然后将自定义服务的xml文件存放于 /etc/firewalld/services 路径下;最后执行 firewall-cmd --reload 命令,使得自定义服务的xml文件生效。此时就可以像使用预定义服务一样,去使用自定义服务了(自定义服务的服务名即为xml文件的文件名,例如demo1.xml文件对应的服务名即为demo1)

复制代码
# 查看指定区域下添加的服务
firewall-cmd --zone=<区域名称> --list-service

# 查询指定区域下,指定的服务是否被添加到该区域,结果yes表示已添加,结果no表示未添加
firewall-cmd --zone=<区域名称> --query-service=<服务名>

# 向指定区域中添加服务
firewall-cmd --zone=<区域名称> --add-service=<服务名>

# 从指定区域中移除服务
firewall-cmd --zone=<区域名称> --remove-service=<服务名>

Note

Runtime Mode 运行时模式、Permanent Mode 永久模式

Runtime Mode 运行时模式:通过 firewall-cmd 修改防火墙配置时,默认只会对当前立即有效,即所谓的Runtime Mode 运行时模式。防火墙服务重启后将会失效

Permanent Mode 永久模式:如果期望防火墙服务重启后使用新配置,可在firewall-cmd命令中使用 --permanent选项。此时新配置将不会在当前立即生效,而是在重启防火墙服务后永久生效。即所谓的Permanent Mode 永久模式

如果期望同时修改两种模式(运行时模式、永久模式)下的配置,可有下述两种方式实现。这里推荐使用方式1,这样可以实现在将新配置应用到永久模式前,能够立即验证修改配置的效果

复制代码
# 在 运行时模式下 修改防火墙配置
firewall-cmd <other options>

# 将修改后的所有配置保存到永久模式下,使得防火墙服务重启后新配置依然生效。即修改了永久模式的配置
firewall-cmd --runtime-to-permanent

# 在 永久模式下 修改防火墙配置
firewall-cmd --permanent <other options>

# 重新加载配置,使得修改后的所有配置在当前立即生效。即修改了运行时模式的配置
firewall-cmd --reload

timeout 选项

通过远程访问服务器时,一旦使用错误配置可能会导致用户锁定自身的机器,无法再次登陆访问。故可以使用 --timeout 选项 避免发生该问题。在达到超时时间后,相关更改会恢复到之前的状态。此外使用该选项时,将无法使用--permanent选项

复制代码
# 向pulbic区域添加名为demo6的服务,并在5分钟后撤销此配置
firewall-cmd --zone=public --add-service=demo6 --timeout 5m
相关推荐
用户97183563346628 分钟前
银河麒麟 KY10 申威(SW64) 安装 nginx-1.16.1-2.p01.ky10.sw_64.rpm 详细步骤
linux
猪脚踏浪2 小时前
linux 拷贝文件或目录到指定的位置
linux
大树8818 小时前
金刚石散热越强,管路越先见顶
大数据·运维·服务器·人工智能·ai
摇滚侠18 小时前
Linux CentOS7 rpm 安装 MySQL 5.7
linux·运维·mysql
霸道流氓气质18 小时前
领域驱动设计(DDD)在 Spring Boot 微服务中的实践指南
运维·spring boot·微服务
bush418 小时前
嵌入式linux学习记录十四、术语
linux·嵌入式
载数而行52018 小时前
Linux 11 动态监控指令top
linux
Inhand陈工19 小时前
基于台达PLC与映翰通IG502的智慧水产养殖精准投喂与远程运维解决方案
运维·人工智能·物联网·阿里云·信息与通信
酣大智19 小时前
ARP代理--工作原理
运维·网络·arp·arp代理
不会C语言的男孩20 小时前
Linux 系统编程 · 第 8 章:进程基础
linux·c语言