(十三)Linux firewalld防火墙

一、简介

RHEL 7 系统中集成了多款防火墙管理工具,其中 firewalld(Dynamic Firewall Manager of Linux systems,Linux 系统的动态防火墙管理器)服务是默认的防火墙配置管理工具,它拥有基于 CLI(命令行界面)和基于 GUI(图形用户界面)的两种管理方式。
相较于传统的防火墙管理配置工具,firewalld 支持动态更新技术并加入了区域(zone)的概念。简单来说,区域就是 firewalld 预先准备了几套防火墙策略集合(策略模板),用户可以根据生产场景的不同而选择合适的策略集合,从而实现防火墙策略之间的快速切换。
例如:我们有一台笔记本电脑,每天都要在办公室、咖啡厅和家里使用。按常理来讲,这三者的安全性按照由高到低的顺序来排列,应该是家庭、公司办公室、咖啡厅。当前,我们希望为这台笔记本电脑指定如下防火墙策略规则:在家中允许访问所有服务;在办公室内仅允许访问文件共享服务;在咖啡厅仅允许上网浏览。在以往,我们需要频繁地手动设置防火墙策略规则,而现在只需要预设好区域集合,然后只需轻点鼠标就可以自动切换了,从而极大地提升了防火墙策略的应用效率。firewalld 中常见的区域名称(默认为 public)以及相应的策略规则。
image

1、firewalld 中常用的区域名称及策略规则

终端管理工具 firewall-cmd
firewall-cmd 是 firewalld 防火墙配置管理工具的 CLI(命令行界面)版本。它的参数一般都是以“长格式”来提供。
image

2、firewall-cmd 命令中使用的参数以及作用

知识点
与 Linux 系统中其他的防火墙策略配置工具一样,使用 firewalld 配置的防火墙策略默认为运行时(Runtime)模式,又称为当前生效模式,而且随着系统的重启会失效。如果想让配置策略一直存在,就需要使用永久(Permanent)模式了,方法就是在用 firewall-cmd 命令正常设置防火墙策略时添加--permanent 参数,这样配置的防火墙策略就可以永久生效了。但是,永久生效模式有一个“不近人情”的特点,就是使用它设置的策略只有在系统重启之后才能自动生效。如果想让配置的策略立即生效,需要手动执行 firewall-cmd --reload 命令。
注意:Runtime 模式与 Permanent 模式。如果不关注这个细节,就算是正确配置了防火墙策略,也可能无法达到预期的效果。

3、使用

查询操作
• # 查看当前所使用的区域
• firewall-cmd --get-default-zone

• # 查看指定网卡在firewalld服务中的区域
• firewall-cmd --get-zone-of-interface=网卡名

• # 查询指定服务在指定区域下当前是否允许请求服务协议的流量
• firewall-cmd --zone=区域 --query-service=服务名

• # 查看指定服务在指定区域下当前的端口所有状态
• firewall-cmd --zone=区域 --list-ports

• # 查看指定区域下当前所有状态
• firewall-cmd --zone=区域 --list-all
配置策略
• # 修改指定网卡内使用的永久模式区域、系统重启后生效
• firewall-cmd --permanent --zone=区域 --change-interface=网卡名称

• # 修改当前区域修改成指定区域
• firewall-cmd --set-default-zone=区域

• # 修改指定服务在指定区域下当前允许协议流量访问、立即生效、重启后失效
• firewall-cmd --zone=区域 --add-service=服务名

• # 修改指定服务在指定区域下永久允许协议流量访问、重启后生效
• firewall-cmd --permanent --zone=区域 --add-service=服务名

•  # 修改指定服务再指定区域下当前拒绝协议流量访问、立即生效、重启后失效
• firewall-cmd --zone=区域 --remove-service=服务名

• # 修改指定服务再指定区域下永久拒绝协议流量访问、重启生效
• firewall-cmd --permanent --zone=区域 --remove-service=服务名

• # 允许指定端口再指定区域下当前允许访问、立即生效
• firewall-cmd --zone=区域 --add-port=端口号/tcp

• # 允许指定端口再指定区域下永久允许访问、重启生效
• firewall-cmd --permanent --zone=区域 --add-port=端口号/tcp

• # 把访问指定源端口再指定区域下临时转发到指定目标端口、立即生效
• firewall-cmd --zone=区域 --add-forward-port=port=源端口:proto=tcp:toport=目标端口:toaddr=目标IP地址

• # 把访问指定源端口再指定区域下永久转发到指定目标端口、重启生效
• firewall-cmd --permanent --zone=区域 --add-forward-port=port=源端口:proto=tcp:toport=目标端口:toaddr=目标IP地址

•  # 把指定源端口再指定区域下临时转发到目标网段端口、立即生效
• firewall-cmd --zone=区域 --add-rich-rule 'rule family="ipv4" source address="网段/掩码位" forward-port port="源端口" protocol="tcp" to-port="目标端口"'

• # 把指定源端口再指定区域下永久转发到目标网段端口、重启生效
• firewall-cmd --permanent --zone=区域 --add-rich-rule 'rule family="ipv4" source address="网段/掩码位" forward-port port="源端口" protocol="tcp" to-port="目标端口"'

• # 指定区域下临时禁用指定IP地址的访问、accept 为允许
• firewall-cmd --zone=区域 --add-rich-rule='rule family=ipv4 source address="IP地址" reject'

• # 指定区域下永久禁用指定IP地址的访问、重启生效、accept 为允许
• firewall-cmd --permanent --zone=区域 --add-rich-rule='rule family="ipv4" source address="IP地址" reject'

• # 指定区域下指定服务临时拒绝一个网段访问、适用于单个IP、accept 为允许
• firewall-cmd --zone=区域 --add-rich-rule="rule family="ipv4" source address="网段/掩码位" service name="服务名" reject"

• # 指定区域下指定服务永久拒绝一个网段访问、重启生效、适用于单个IP、accept 为允许
• firewall-cmd --permanent --zone=区域 --add-rich-rule="rule family="ipv4" source address="网段/掩码位" service name="服务名" reject"

• # 指定区域下指定端口临时拒绝一个网段访问、适用于单个IP、accept 为允许
• firewall-cmd --zone=区域 --add-rich-rule="rule family="ipv4" source address="网段/掩码位" port protocol="tcp" port="端口号" reject"

• # 指定区域下指定端口永久拒绝一个网段访问、重启生效、适用于单个IP、accept 为允许
• firewall-cmd --permanent --zone=区域 --add-rich-rule="rule family="ipv4" source address="网段/掩码位" port protocol="tcp" port="端口号" reject"
其他操作
•  # 启动/关闭 firewalld 防火墙服务的应急状况模式,阻断一切网络连接(当远程控制服务器时请慎用)
• firewall-cmd --panic-on
• firewall-cmd --panic-off

• # 保存设置、可立即生效permanent配置
• firewall-cmd --reload

• # 删除操作、将参数签的 add 改为 remove
• firewall-cmd .. --zone=区域 --remove-..

3、其他知识

REJECT 与 DROP
1、REJECT动作会返回一个拒绝(终止)数据包(TCP FIN或UDP-ICMP-PORT-UNREACHABLE),明确的拒绝对方的连接动作。
2、DROP动作只是简单的直接丢弃数据,并不反馈任何回应。需要Client等待超时,Client容易发现自己被防火墙所阻挡。

posted @ 2022-06-08 11:27  比特边界  阅读(113)  评论(0编辑  收藏  举报