如何在 Linux 中配置 firewalld 规则

什么是FirewallD

“firewalld”是firewall daemon。它提供了一个动态管理的防火墙,带有一个非常强大的过滤系统,称为 Netfilter,由 Linux 内核提供。

FirewallD 使用zones和services的概念,而 iptables 使用chain和rules。与 iptables 相比,“FirewallD”提供了一种非常灵活的方式来处理防火墙管理。

每个zones都可以按照指定的标准进行配置,以根据你的要求接受或拒绝某些服务或端口,并且它可以与一个或多个网络接口相关联。默认区域为public区域。
[yijiFirewalld zones[/yiji]
以下命令列出 FirewallD 提供的zones。运行以下命令以列出zones:

[root@server1 ~]# firewall-cmd --get-zones
block dmz drop external home internal public trusted work
  • block: 对于 IPv4,任何传入连接都会被 icmp-host-prohibited 消息拒绝,对于 IPv6 则是 icmp6-adm-prohibited。
  • dmz:应用于你的DMZ区域的计算机,这些计算机可公开访问,但对内部网络的访问受到限制。仅接受选定的传入连接。
  • drop:任何传入连接都将在没有任何通知的情况下被丢弃。只允许传出连接。
  • external:用于在系统中充当路由器时启用 NAT 伪装的外部网络。只允许选定的传入连接。
  • home:用于家庭网络。仅接受选定的传入连接。
  • internal:用于内部网络,网络上的其他系统通常是可信任的。仅接受选定的传入连接。
  • public:用于公共区域,仅接受选定的传入连接。
  • trusted:接受所有网络连接。
  • work:用于工作区域,同一网络上的其他计算机大多受信任。仅接受选定的传入连接。

Firewalld services

Firewalld 的service配置是预定义的服务。要列出可用的服务模块,请运行以下命令:

[root@server1 ~]# firewall-cmd --get-services

如何在 Linux 中配置 firewalld 规则如何在 Linux 中配置 firewalld 规则

Firewalld的临时设置和永久设置

Firewalld 使用两个独立的配置,即临时设置和永久设置:

  • 临时设置: 临时设置不会在系统重启时保持不变。这意味着临时设置不会自动保存到永久设置中。
  • 永久设置: 永久设置会存储在配置文件中,将在每次重新启动时加载并成为新的临时设置。

启用、禁用Firewalld

Firewalld默认安装在Centos7/8中,下面命令时如何启用或者停用firewalld:

# 启用Firewalld
[root@server1 ~]# systemctl start firewalld
# 禁用Firewalld
[root@server1 ~]# systemctl stop firewalld
# 开机启动
[root@server1 ~]# systemctl enable firewlald
# 禁止开机启动
[root@server1 ~]# systemctl disable firewalld

查看firewlald的状态:

[root@server1 ~]# systemctl status firewalld
或者
[root@server1 ~]# firewall-cmd --state
running

如何在 Linux 中配置 firewalld 规则如何在 Linux 中配置 firewalld 规则

zone管理

Firewalld 为每个区域提供不同级别的安全性,公共区域设置为默认区域。下面命令查看默认区域:

[root@server1 ~]# firewall-cmd --get-default-zone 
public

下面命令查看默认区域的配置:

[root@server1 ~]# firewall-cmd --list-all
public (active)target: defaulticmp-block-inversion: nointerfaces: ens160sources: services: cockpit dhcpv6-client ntp sshports: 2222/tcpprotocols: masquerade: noforward-ports: source-ports: icmp-blocks: rich rules: 

如何在 Linux 中配置 firewalld 规则如何在 Linux 中配置 firewalld 规则


通过使用选项"--zone”和“--change-interface”的组合,可以轻松更改zone中的接口。例如,要将“ens33”接口分配给“home”区域,请运行以下命令:

[root@server1 ~]# firewall-cmd --zone=home --change-interface=ens33
success
[root@server1 ~]# firewall-cmd --zone=home --list-all
home (active)target: defaulticmp-block-inversion: nointerfaces: ens33sources: services: cockpit dhcpv6-client mdns samba-client sshports: protocols: masquerade: noforward-ports: source-ports: icmp-blocks: rich rules: 

如何在 Linux 中配置 firewalld 规则如何在 Linux 中配置 firewalld 规则


要查看所有活动的zone,请运行以下命令:

[root@server1 ~]# firewall-cmd --get-active-zones 
homeinterfaces: ens33
publicinterfaces: ens160

如何在 Linux 中配置 firewalld 规则如何在 Linux 中配置 firewalld 规则


要更改默认zone,请使用以下命令。例如,要将默认区域更改为 home,请运行以下命令:

[root@server1 ~]# firewall-cmd --set-default-zone=home

要找出与 ens160 接口关联的区域,请运行以下命令:

[root@server1 ~]# firewall-cmd --get-zone-of-interface=ens160
public

要创建新zone,请使用以下命令。例如,要创建一个名为“test”的新区域,并永久生效,请运行:

[root@server1 ~]# firewall-cmd --permanent --new-zone=test
success
[root@server1 ~]# firewall-cmd --reload
success

开放和关闭端口

打开特定端口允许用户从外部访问系统,这代表了安全风险。因此,仅在必要时为某些服务打开所需的端口。

要获取当前区域中开放的端口列表,请运行以下命令:

[root@server1 ~]# firewall-cmd --list-ports 
2222/tcp

下面实例将特定端口永久添加到列表中:

[root@server1 ~]# firewall-cmd --permanent --add-port=8080/tcp
success
[root@server1 ~]# firewall-cmd --reload
success

同样,要删除特定端口,请运行以下命令:

[root@server1 ~]# firewall-cmd --remove-port=8080/tcp
success

可以使用以下命令每次确认端口是否已添加或删除:

[root@server1 ~]# firewall-cmd --list-ports

如果要为特定区域开放端口,例如,以下命令将为 home 区域打开端口 80:

[root@server1 ~]# firewall-cmd --permanent --zone=home --add-port=80/tcp
success
[root@server1 ~]# firewall-cmd --reload
success

如何在 Linux 中配置 firewalld 规则如何在 Linux 中配置 firewalld 规则


同样,要从开放的端口中删除特定区域的特定端口,请运行:

[root@server1 ~]# firewall-cmd --zone=home --remove-port=80/tcp
success

添加和移除服务类型

Firewalld 服务配置是预定义的服务,如果启用了服务,则会自动加载。使用预定义服务使用户可以更轻松地启用和禁用对服务的访问。

预定义的服务配置文件位于/usr/lib/firewalld/services目录中。

Firewalld的服务,你不需要记住任何端口,并且可以一次性允许所有端口。

例如,执行以下命令允许 samba 服务。samba 服务需要启用以下一组端口:“139/tcp 和 445/tcp”以及“137/udp 和 138/udp”。

添加'samba'服务后,所有端口都会同时激活,因为所有端口信息都在samba服务配置中。下面是Firewalld中预定义的samba的服务配置文件:

[root@server1 ~]# cat /usr/lib/firewalld/services/samba.xml 

如何在 Linux 中配置 firewalld 规则如何在 Linux 中配置 firewalld 规则


下面是在home区域放行samba服务:

[root@server1 ~]# firewall-cmd --permanent --zone=home --add-service=samba
success
[root@server1 ~]# firewall-cmd --reload
success

要获取有关 samba 服务的更多信息,请运行以下命令:

[root@server1 ~]# firewall-cmd --info-service=samba
sambaports: 137/udp 138/udp 139/tcp 445/tcpprotocols: source-ports: modules: netbios-nsdestination: 

要一次添加多个服务,请执行以下命令。例如,要添加 http 和 https 服务,请运行以下命令:

[root@server1 ~]# firewall-cmd --permanent --zone=home --add-service={http,https}
success
[root@server1 ~]# firewall-cmd --reload
success

如何在 Linux 中配置 firewalld 规则如何在 Linux 中配置 firewalld 规则

设置端口转发

端口转发是一种将任何传入网络流量从一个端口转发到另一个内部端口或另一台机器上的外部端口的方法。

注意:端口转发必须开启IP伪装。使用下面显示的命令为external区域启用伪装。

[root@server1 ~]# firewall-cmd --permanent --zone=external --add-masquerade 

要检查是否为区域启用了 IP 伪装,请运行以下命令:

[root@server1 ~]# firewall-cmd --zone=external --query-masquerade 
yes

显示yes,表示已经开启伪装。

要将端口重定向到同一系统上的另一个端口,例如:将80端口的所有数据包重定向到8080端口:

[root@server1 ~]# firewall-cmd --permanent --zone=external --add-forward-port=port=80:proto=tcp:toport=8080
success

如果要将流量转发到另一台服务器,例如:将所有 80 端口的数据包重定向到 IP 为 10.0.0.75 的服务器上的 8080 端口:

[root@server1 ~]# firewall-cmd --permanent --zone=external --add-forward-port=port=80:proto=tcp:toport=8080:toaddr=10.0.0.75
success

例如,要允许来自特定源地址的流量,仅允许从特定子网连接到服务器,请运行以下命令:

[root@server1 ~]# firewall-cmd --permanent --zone=home --add-source=192.168.1.0/24
success

富规则设置

富规则允许使用易于理解的命令创建更复杂的防火墙规则,但丰富的规则很难记住,可以查看手册man firewalld.richlanguage并找到示例。

富规则的一般规则结构如下:
rule[source][destination]service|port|protocol|icmp-block|icmp-type|masquerade|forward-port|source-port[log][audit][accept|reject|drop|mark]

要允许来自地址 192.168.0.0/24 的访问,请运行以下命令:

[root@server1 ~]# firewall-cmd --zone=public --add-rich-rule='rule family="ipv4" source address="192.168.0.0/24" accept'
success

如何在 Linux 中配置 firewalld 规则如何在 Linux 中配置 firewalld 规则


要允许来自地址 192.168.0.0/24 的连接访问 ssh 服务,请运行以下命令:

[root@server1 ~]# firewall-cmd --zone=public --add-rich-rule='rule family="ipv4" source address="192.168.0.0/24" service name="ssh" log prefix="ssh" level="info" accept'
success

如何在 Linux 中配置 firewalld 规则如何在 Linux 中配置 firewalld 规则


要拒绝来自192.168.10.0/24的流量访问ssh服务,请运行以下命令:

[root@server1 ~]# firewall-cmd --zone=public --add-rich-rule='rule family="ipv4" source address="192.168.10.0/24" port port=22 protocol=tcp reject'
success

如何在 Linux 中配置 firewalld 规则如何在 Linux 中配置 firewalld 规则


要删除任何富规则,请使用--remove-rich-rule选项,下面使用--list-rich-rules列出富规则,然后删除掉富规则:

[root@server1 ~]# firewall-cmd --zone=public --list-rich-rules 
rule family="ipv4" source address="192.168.0.0/24" accept
rule family="ipv4" source address="192.168.0.0/24" service name="ssh" log prefix="ssh" level="info" accept
rule family="ipv4" source address="192.168.10.0/24" port port="22" protocol="tcp" reject
[root@server1 ~]# firewall-cmd --zone=public --remove-rich-rule='rule family="ipv4" source address="192.168.0.0/24" accept'
success
[root@server1 ~]# firewall-cmd --zone=public --remove-rich-rule='rule family="ipv4" source address="192.168.0.0/24" service name="ssh" log prefix="ssh" level="info" accept'
success
[root@server1 ~]# firewall-cmd --zone=public --remove-rich-rule='rule family="ipv4" source address="192.168.10.0/24" port port="22" protocol="tcp" reject'
success

如何在 Linux 中配置 firewalld 规则如何在 Linux 中配置 firewalld 规则

Firewalld的Direct规则

Direct规则类似于 iptables 命令,对于熟悉 iptables 命令的用户很有用。或者,您可以编辑/etc/firewalld/direct.xml文件中的规则并重新加载防火墙以激活这些规则。Direct规则主要由服务或应用程序用来添加特定的防火墙规则。

以下Direct规则将在服务器上打开端口 8080:

[root@server1 ~]# firewall-cmd --permanent --direct --add-rule ipv4 filter INPUT 0 -p tcp --dport 8081 -j ACCEPT
success
[root@server1 ~]# firewall-cmd --reload
success

要列出当前区域中的Direct规则,请运行:

[root@server1 ~]# firewall-cmd --direct --get-all-rules 
ipv4 filter INPUT 0 -p tcp --dport 8080 -j ACCEPT
ipv4 filter INPUT 0 -p tcp --dport 8081 -j ACCEPT

如何在 Linux 中配置 firewalld 规则如何在 Linux 中配置 firewalld 规则


使用下面命令删除Direct规则:

[root@server1 ~]# firewall-cmd --direct --get-all-rules 
ipv4 filter INPUT 0 -p tcp --dport 8080 -j ACCEPT
ipv4 filter INPUT 0 -p tcp --dport 8081 -j ACCEPT
[root@server1 ~]# firewall-cmd --permanent --direct --remove-rule ipv4 filter INPUT 0 -p tcp --dport 8080 -j ACCEPT
success
[root@server1 ~]# firewall-cmd --reload
success

如何在 Linux 中配置 firewalld 规则如何在 Linux 中配置 firewalld 规则


如何清空一个表的链?下面是语法和实例:

firewall-cmd --direct --remove-rules ipv4 [table] [chain]
[root@server1 ~]# firewall-cmd --permanent --direct --remove-rules ipv4 filter INPUT
success
[root@server1 ~]# firewall-cmd --reload
success
[root@server1 ~]# firewall-cmd --direct --get-all-rules 

如何在 Linux 中配置 firewalld 规则如何在 Linux 中配置 firewalld 规则

总结

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/589461.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【LLM-RAG】知识库问答 | 检索 | embedding

note RAG流程(写作论文中的background:公式设定、emb、召回内容、召回基准)(工作中的思路:嵌入模型、向量存储、向量存储检索器、LLM、query改写、RAG评测方法)仅为个人关于RAG的一些零碎总结,…

【网络面试(4)】协议栈和套接字及连接阶段的三次握手原理

1. 协议栈 一直对操作系统系统的内核协议栈理解的比较模糊,借着这一篇博客做一下简单梳理, 我觉得最直白的理解就是,内核协议栈就是操作系统中的一个网络控制软件,就是一段程序代码,它负责和网卡驱动程序交互&#xff…

Docker 从入门到实践:Docker介绍

前言 在当今的软件开发和部署领域,Docker已经成为了一个不可或缺的工具。Docker以其轻量级、可移植性和标准化等特点,使得应用程序的部署和管理变得前所未有的简单。无论您是一名开发者、系统管理员,还是IT架构师,理解并掌握Dock…

7.11全排列(LC46-M)

算法: 排列和组合很像,但是有顺序。 还是用回溯算法。 与组合不同之处(无startindex,有used数组): 首先排列是有序的,也就是说 [1,2] 和 [2,1] 是两个集合。 可以看出元素1在[1,2]中已经使…

大学物理II-作业1【题解】

1.【单选题】——考查高斯定理 下面关于高斯定理描述正确的是(D )。 A.高斯面上的电场强度是由高斯面内的电荷激发的 B.高斯面上的各点电场强度为零时,高斯面内一定没有电荷 C.通过高斯面的电通量为零时,高斯面上各点电场强度…

基于被囊群算法优化的Elman神经网络数据预测 - 附代码

基于被囊群算法优化的Elman神经网络数据预测 - 附代码 文章目录 基于被囊群算法优化的Elman神经网络数据预测 - 附代码1.Elman 神经网络结构2.Elman 神经用络学习过程3.电力负荷预测概述3.1 模型建立 4.基于被囊群优化的Elman网络5.测试结果6.参考文献7.Matlab代码 摘要&#x…

2023-12-15 LeetCode每日一题(反转二叉树的奇数层)

2023-12-15每日一题 一、题目编号 2415. 反转二叉树的奇数层二、题目链接 点击跳转到题目位置 三、题目描述 给你一棵 完美 二叉树的根节点 root ,请你反转这棵树中每个 奇数 层的节点值。 例如,假设第 3 层的节点值是 [2,1,3,4,7,11,29,18] &…

lambda表达式和包装器

正文开始前给大家推荐个网站,前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家。点击跳转到网站。 我们在使用库里的排序算法时如果排序的是自定义类型或者库里默认的排序不能满足我们则需求&…

【力扣100】46.全排列

添加链接描述 class Solution:def permute(self, nums: List[int]) -> List[List[int]]:# 思路是使用回溯if not nums:return []def dfs(path,depth,visited,res):# 出递归的条件是当当前的深度已经和nums的长度一样了,把path加入数组,然后出递归if …

HTML与CSS

目录 1、HTML简介 2、CSS简介 2.1选择器 2.1.1标签选择器 2.1.2类选择器 2.1.3层级选择器(后代选择器) 2.1.4id选择器 2.1.5组选择器 2.1.6伪类选择器 2.2样式属性 2.2.1布局常用样式属性 2.2.2文本常用样式属性 1、HTML简介 超文本标记语言HTML是一种标记语言&…

帆软报表如何灵活控制水印的显示

在帆软报表中如果要显示水印,如果要全部都要显示,只需要到决策系统--安装设置中打开水印开关。如果想要某个报表显示水印,可以在设计器的水印设置中为该报表设置水印。 但是如果碰到这种需求,比如某些人或者某些角色需要显示水印,其他人不显示。或者是预览报表需要显示水印…

[附代码]稳态视觉诱发电位SSVEP之预训练模型提高性能

SSVEP 之深度学习 深度学习已经被广泛运用在脑电信号分析来提高脑机接口的性能,这是一个end-to-end的方法,简单来说,只要搭建好深度学习网络,做好特征工程,然后分类即可,对于一个刚刚接触脑机接口领域深度学习的学习者来说,可以先忽略中间的数学相关的东西,先建一个网…

软件测试/测试开发丨Linux 数据处理三剑客学习笔记

一、Linux 三剑客之 grep 1、 内容检索 获取行(单行) grep pattern file获取内容 grep -o pattern file获取上下文 grep -A -B -C pattern file 2、 文件检索 递归搜索 grep pattern -r dir/展示匹配文件名 grep -H 111 /tmp/1只展示匹配文件名 grep …

HTML进阶

列表、表格、表单 文章目录 列表、表格、表单01-列表无序列表有序列表定义列表 02-表格表格结构标签-了解合并单元格 03-表单input 标签input 标签占位文本单选框上传文件多选框下拉菜单文本域label 标签按钮 04-语义化无语义的布局标签有语义的布局标签 05-字符实体 01-列表 …

影视后期:Pr 调色处理之风格调色

写在前面 整理一些影视后期相关学习笔记博文为 Pr 调色处理中风格调色,涉及下面几个Demo 好莱坞电影电影感调色复古港风调色赛博朋克风格调色日系小清晰调色 理解不足小伙伴帮忙指正 简单地说就是害怕向前迈进或者是不想真正地努力。不愿意为了改变自我而牺牲目前所…

软考网络工程师教程第五版(2018最新版)

软考网络工程师教程第五版(2018最新版) 内容简介 本书是全国计算机技术与软件专业技术资格(水平)考试指定用书。作者在前4版的基础上,根据网络工程师新版大纲的要求,针对考试的重点内容做了较大篇幅的修订,书中主要内容包括数据通信、广域通信网、局域网、城域网、因特网…

Python 创建第一个项目

打开pycharm编辑器 点击New Project创建一个新项目。 主要修改项目名和项目路径,其它保持默认,点击Create。 当编辑器创建好项目后,我们通过右键项目名,点击New,再点击Python File 创建一个Python文件。 写好文件名&a…

Motionface VoiceFocus使用教程

Motionface VoiceFocus使用教程 1:系统要求 软件运行支持32位/64位window 10/11系统, 其他要求无。 2:下载安装 链接:百度网盘 请输入提取码 提取码:1234 复制这段内容后打开百度网盘手机App,操作更方便哦 下载VoiceFo…

69.乐理基础-打拍子-大切分与变体

内容来源于:三分钟音乐社 前置内容:66.乐理基础-打拍子-小切分-CSDN博客 上一个内容:68.乐理基础-打拍子-大附点与变体-CSDN博客 大切分: 把每个小切分的每一个音符翻一倍就变成大切分了,小切分是两个十六分音符夹一…

08 通信协议之UART

引言: 从本文开始, 本个专题之后的几篇文章都是讲解嵌入式开发中几种常见的通信协议的, 比如UART, I2C,SPI, CAN总线这些我就不讲了, 没用到过, 学是学不完的, 等用到的时候再去学习…