Firewalld防火墙详解

news2024/11/25 11:05:27

文章目录

  • Firewalld防火墙
    • 什么是防火墙
    • Firewalld防火墙的概念
    • Firewalld防火墙运行模式
    • Firewalld防火墙的命令
      • Firewalld防火墙的高级规则

Firewalld防火墙

什么是防火墙

防火墙:防范一些网络攻击。有软件防火墙、硬件防火墙之分。

硬件防火墙和软件防火墙的主要区别在于它们的工作原理和应用场景。

工作原理

硬件防火墙是一种独立的网络设备,通常由专门的硬件和软件组成。它工作在网络层或传输层,通过过滤和分析网络流量来保护网络安全。硬件防火墙通常具有更高的处理能力和速度,可以处理大量的网络流量,同时也可以提供更强的安全性能和可靠性。

软件防火墙则是一种基于软件的安全解决方案,通过在主机上运行防火墙软件来保护网络安全。软件防火墙通常工作在操作系统内核层,通过监测网络流量和应用程序行为来实现防护。软件防火墙的处理能力和速度通常较低,但它可以提供更灵活、更细致的安全控制和配置,同时也可以在多种操作系统平台上运行。

应用场景

硬件防火墙通常应用于企业级网络或大型数据中心等场景,可以提供全面的安全防护和管理。硬件防火墙可以对入侵尝试、恶意攻击、病毒和蠕虫等进行检测和防护,同时也可以支持多种安全协议和 VPN 连接。硬件防火墙通常需要专业人员进行配置和管理,成本较高。

软件防火墙则适用于小型企业或个人用户的网络安全保护。软件防火墙可以在个人计算机或服务器上运行,提供基本的网络安全防护和管理。软件防火墙可以对网络连接和应用程序进行检测和防护,同时也可以进行更灵活的安全控制和配置。软件防火墙通常易于安装和配置,成本较低。

Linux 防火墙_加载

防火墙有很好的保护作用,入侵者首先必须穿越防火墙的安全防线,才能接触目标计算机。

Firewalld防火墙的概念

firewalld是Linux系统上的一种动态防火墙管理工具。它是Red Hat公司开发的,现在已经被很多Linux发行版广泛采用。相比于传统的iptables防火墙,firewalld具有更加灵活和易用的特点,可以实现更加细粒度的网络访问控制。

firewalld防火墙主要包括如下几个方面:

  • 区域(zone)

firewalld将网络的不同部分分为若干个区域,每个区域都有一组预定义的规则集合。例如,public区域适用于公共互联网环境下的主机,internal区域适用于内部网络环境下的主机。

区域默认策略
trusted允许所有数据包
home拒绝流入的流量,除非与流出的流量相关,允许ssh、mdns、ippclient、amba-client、dhcpv6-client服务通过
internal等同于home
work拒绝流入的流量,除非与流出的流量相关,允许ssh、ipp-client、dhcpv6-client服务通过
public拒绝流入的流量,除非与流出的流量相关,允许ssh、dhcpv6-client服务通过
external拒绝流入的流量,除非与流出的流量相关,允许ssh服务通过
dmz拒绝流入的流量,除非与流出的流量相关,允许ssh服务通过
block拒绝流入的流量,除非与流出的流量相关,非法流量采取拒绝操作
drop拒绝流入的流量,除非与流出的流量相关,废了流量采取丢弃操作
  • 服务(Service)

在firewalld中,防火墙服务是一组预定义的规则,用于允许或拒绝对特定端口的访问。每个服务都有一个名称,并与一个或多个端口相关联。例如,HTTP服务通常使用端口80,可以定义一个HTTP服务规则来允许对该端口的访问

  • 端口(Port)

firewalld防火墙的端口规则是一种基于端口号的规则,用于控制特定端口的访问。它可以允许或拒绝特定端口的进出流量。firewalld中的端口规则可以应用于指定的区域或服务,也可以直接应用于所有区域。

Firewalld防火墙运行模式

firewalld防火墙有两种运行模式:(运行时模式)runtime模式(永久模式)permanent模式

runtime模式runtime模式是指firewalld防火墙在内存中的运行模式。在这种模式下,所有的防火墙规则都是临时的,它们只会在系统重新启动前保持有效。可以使用firewall-cmd命令在runtime模式下添加、删除、修改防火墙规则,但是这些更改在系统重新启动后会被清除。

permanent模式permanent模式是指firewalld防火墙在硬盘上的运行模式。在这种模式下,所有的防火墙规则都是永久的,它们会被保存在硬盘上,并在系统重新启动后仍然有效。可以使用firewall-cmd命令的--permanent选项将防火墙规则添加、删除、修改到permanent模式中。

Firewalld防火墙的命令

查看,开启和停止firewalld服务

语法:
systemctl [选项] firewalld
status:检查指定服务的运行状况
start:启动指定服务
stop:停止指定服务
restart:重启指定服务
reload:重新加载指定服务的配置文件

管理firewall配置

firewall-cmd [参数选项1] ... [参数选项n]

常用选项

  • 查看防火墙规则:firewall-cmd --list-all
[root@localhost ~]# firewall-cmd --list-all
public (active)
  target: default
  icmp-block-inversion: no
  interfaces: ens34
  sources: 
  services: dhcpv6-client  ssh
  ports: 
  protocols: 
  masquerade: no
  forward-ports: 
  source-ports: 
  icmp-blocks: 
  rich rules: 
  • 查看可用的zone:firewall-cmd --get-zones
[root@localhost ~]# firewall-cmd --get-zones
block dmz docker drop external home internal public trusted work
  • 查看当前zone:firewall-cmd --get-default-zone
[root@localhost ~]# firewall-cmd  --get-default-zone
public
  • 设置默认的zone:firewall-cmd --set-default-zone=public
[root@localhost ~]# firewall-cmd --set-default-zone=public
Warning: ZONE_ALREADY_SET: public   # 默认就是public,所以再次设置会告诉当前状态已经是public
success  # 执行成功
[root@localhost ~]# firewall-cmd --reload   # 设置完成后一定要重新加载防火墙规则才会生效
success
  • 查看zone的详细信息:firewall-cmd --zone=public --list-all
[root@localhost ~]# firewall-cmd --zone=public --list-all
public (active)
  target: default
  icmp-block-inversion: no
  interfaces: ens34
  sources: 
  services: dhcpv6-client  ssh
  ports: 
  protocols: 
  masquerade: no
  forward-ports: 
  source-ports: 
  icmp-blocks: 
  rich rules: 
  • 开放端口:firewall-cmd --zone=public --add-port=80/tcp --permanent
[root@localhost ~]# firewall-cmd --zone=public --add-port=80/tcp --permanent
success          # 设置成功会显示 success
[root@localhost ~]# firewall-cmd --reload   # 设置完成后一定要重新加载防火墙规则才会生效
success
[root@localhost ~]# firewall-cmd --zone=public --list-all
public (active)
  target: default
  icmp-block-inversion: no
  interfaces: ens34
  sources: 
  services: dhcpv6-client  ssh
  ports: 80/tcp
  protocols: 
  masquerade: no
  forward-ports: 
  source-ports: 
  icmp-blocks: 
  rich rules:   
# 设置成功
  • 关闭端口:firewall-cmd --zone=public --remove-port=80/tcp --permanent
[root@localhost ~]# firewall-cmd --zone=public --remove-port=80/tcp --permanent
success   # 设置成功会显示 success
[root@localhost ~]# firewall-cmd --reload   # 设置完成后一定要重新加载防火墙规则才会生效
success
[root@localhost ~]# firewall-cmd --zone=public --list-all
public (active)
  target: default
  icmp-block-inversion: no
  interfaces: ens34
  sources: 
  services: dhcpv6-client  ssh
  ports: 
  protocols: 
  masquerade: no
  forward-ports: 
  source-ports: 
  icmp-blocks: 
  rich rules: 
  • 开放服务:firewall-cmd --zone=public --add-service=http --permanent
[root@localhost ~]# firewall-cmd --zone=public --add-service=http --permanent
success
[root@localhost ~]# firewall-cmd  --reload
success
[root@localhost ~]# firewall-cmd --zone=public --list-all
public (active)
  target: default
  icmp-block-inversion: no
  interfaces: ens34
  sources: 
  services: dhcpv6-client http ssh
  ports: 
  protocols: 
  masquerade: no
  forward-ports: 
  source-ports: 
  icmp-blocks: 
  rich rules: 
  • 关闭服务:firewall-cmd --zone=public --remove-service=http --permanent
[root@localhost ~]# firewall-cmd --zone=public --remove-service=http --permanent
success
[root@localhost ~]# firewall-cmd --reload
success
[root@localhost ~]# firewall-cmd --zone=public --list-all
public (active)
  target: default
  icmp-block-inversion: no
  interfaces: ens34
  sources: 
  services: dhcpv6-client ssh
  ports: 
  protocols: 
  masquerade: no
  forward-ports: 
  source-ports: 
  icmp-blocks: 
  rich rules:
  • 允许源IP访问:firewall-cmd --zone=public --add-source=192.168.200.0/24 --permanent
[root@localhost ~]# firewall-cmd --zone=public --add-source=192.168.200.0/24 --permanent
success
[root@localhost ~]# firewall-cmd --reload
success
[root@localhost ~]# firewall-cmd --zone=public --list-all
public (active)
  target: default
  icmp-block-inversion: no
  interfaces: ens34
  sources: 192.168.200.0/24
  services: dhcpv6-client  ssh
  ports: 
  protocols: 
  masquerade: no
  forward-ports: 
  source-ports: 
  icmp-blocks: 
  rich rules:
  • 拒绝源IP访问:firewall-cmd --zone=public --remove-source=192.168.200.0/24 --permanent
[root@localhost ~]# firewall-cmd --zone=public --remove-source=192.168.200.0/24 --permanent
success
[root@localhost ~]# firewall-cmd --reload
success
[root@localhost ~]# firewall-cmd --zone=public --list-all
public (active)
  target: default
  icmp-block-inversion: no
  interfaces: ens34
  sources: 
  services: dhcpv6-client  ssh
  ports: 
  protocols: 
  masquerade: no
  forward-ports: 
  source-ports: 
  icmp-blocks: 
  rich rules: 
  • 重新加载防火墙规则:firewall-cmd --reload

Firewalld防火墙的高级规则

在使用防火墙时,基础规则通常可以满足大多数情况下的需求,例如简单的端口和服务控制等。但是在一些更加复杂的场景下,基础规则的灵活性和细粒度控制就显得有限,这时需要使用高级规则来实现更加精细的流量控制,而 rich rule 就是 firewalld 防火墙中的一种高级规则。

在使用 firewall-cmd 命令设置 rich rule 高级规则时,可以参考以下常用参数:

  1. family:指定网络协议族,可选值为 ipv4ipv6inetinet6arp。例如:family="ipv4"
  2. source address:指定源 IP 地址,可以为单个 IP、IP 段或 CIDR 网段,例如 source address="192.168.1.1"source address="192.168.1.1-192.168.1.10"source address="192.168.1.0/24"
  3. port port:指定端口号,可以为单个端口、端口段或者逗号分隔的多个端口,例如 port port="8080"
  4. protocol:指定协议,可以为 tcpudpicmp 等协议。
  5. service name:指定服务名,可以为 /etc/services 中定义的服务名称,如 httpftp 等。
  6. action:指定动作,可以为 acceptdroprejectmasqueraderedirect 等动作。

要注意的是,在使用 rich-rules 规则时,必须使用双引号将参数值括起来,例如:source address="192.168.1.0/24"。还有就是,不能同时设置portservice name

测试案例

  1. 启动一个简单的HTTP服务器,可以通过浏览器访问到主机上的文件
[root@localhost ~]# nohup python -m SimpleHTTPServer 8080 > ceshil.log 2>&1 &
# python -m SimpleHTTPServer 8080
# 这行命令的意思是在本地主机上启动一个简单的HTTP服务器
# 监听8080端口,可以通过浏览器访问本地主机上的文件。
  1. 设置规则
[root@localhost ~]# firewall-cmd --zone=public --add-rich-rule='rule family="ipv4" source address="192.168.200.0/24" port port="8080" protocol="tcp"  accept' --permanent
success
[root@localhost ~]# firewall-cmd --reload
success
[root@localhost ~]# firewall-cmd --zone=public --list-all
public (active)
  target: default
  icmp-block-inversion: no
  interfaces: ens34
  sources: 
  services: dhcpv6-client  ssh
  ports: 
  protocols: 
  masquerade: no
  forward-ports: 
  source-ports: 
  icmp-blocks: 
  rich rules: 
        rule family="ipv4" source address="192.168.200.0/24" port port="8080" protocol="tcp" accept
# 我这里仅是展示了高级规则的使用方法,也可以使用基础规则设置。
  1. 访问浏览器

已经访问到了当前目录下的文件

[root@localhost ~]# ls -al
总用量 522640
dr-xr-x---.  6 root root      4096 66 14:42 .
dr-xr-xr-x. 17 root root       239 528 21:21 ..
-rw-r--r--.  1 root root       254 529 12:17 0520source
drwx------.  4 root root        27 526 13:11 .ansible
-rw-r--r--.  1 root root       113 61 21:15 ansible.yaml
-rwxr-xr-x.  1 root root      8472 529 10:19 a.out
-rw-------.  1 root root      5792 66 13:47 .bash_history
-rw-r--r--.  1 root root        18 1229 2013 .bash_logout
-rw-r--r--.  1 root root       176 1229 2013 .bash_profile
-rw-r--r--.  1 root root       176 1229 2013 .bashrc
drwxr-xr-x.  4 root root        55 62 12:53 ceshi
-rw-r--r--.  1 root root       233 66 14:57 ceshil.log
-rw-r--r--.  1 root root       254 529 10:19 cos_value.c
-rw-r--r--.  1 root root       100 1229 2013 .cshrc
-rw-r--r--.  1 root root 535099919 530 12:21 DjangoBlog.tar.gz
-rw-r--r--.  1 root root        86 529 09:23 haha.c
-rw-r--r--.  1 root root       319 529 09:31 main.c
-rw-r--r--.  1 root root       160 529 11:43 makefile
-rw-r--r--.  1 root root       273 529 12:18 ntp-4.2.8p3.tar.gz
drwxr-----.  3 root root        19 526 12:00 .pki
-rw-r--r--.  1 root root       237 529 10:16 sin_value.c
drwx------.  2 root root        57 527 08:50 .ssh
-rw-r--r--.  1 root root       129 1229 2013 .tcshrc
-rw-------.  1 root root         0 64 15:08 .viminfo

在一个局域网的小伙伴们就可以使用这个命令一起共享文件,下载到本地上

image-20230606145850328

更多的firewall-cmd命令请查看

[root@localhost ~]# firewall-cmd  --help

此内容参考B站Linux超哥讲解的Firewalld防火墙

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

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

相关文章

【软件开发】MyBatis 理论篇

MyBatis 理论篇 1.MyBatis 是什么? MyBatis 是一个半 ORM(对象关系映射)框架,它内部封装了 JDBC,开发时只需要关注 SQL 语句本身,不需要花费精力去处理加载驱动、创建连接、创建 statement 等繁杂的过程。…

初识网络之协议定制

目录 一、数据在网络传输中遇到的部分问题 1. 序列化与反序列化 2. 如何保证接收端读取一个完整的报文 二、实现一个简单的网络计算器 1. 客户端处理 1.1 请求结构体和返回结构体 1.2 解析输入的字符串 1.3 序列化 1.4 添加标识符和字符串长度 1.5 接收服务端返回的数…

浏览器的回流与重绘与事件循环

浏览器的回流与重绘和事件循环 浏览器回流浏览器重绘事件循环 浏览器回流 什么是浏览器回流? 回流是通过JS代码让布局或者几何属性改变,使部分页面或者整个页面更新的过程 浏览器重绘 剩下的是浏览器重绘:比如改变div的visibility, color、…

如何使用Foxmail 7.2.25版本登录Microsoft 365 国内版(即世纪互联版)邮箱

近期微软在全球取消了在Exchange Online 的基本身份验证,取消了之后只有适配微软新式验证的客户端才支持登录,以往的直接配置IMAP/POP服务器地址和邮箱账号密码来登录的方式已经行不通了。 详情可以点击此链接了解:弃用 Exchange Online 中的…

APP性能测试中的几个重要概念,你都知道吗?

目录 前言 一. 内存  二. CPU 三. 流量 四. 电量 五. 启动时间 六. 总结 前言 我们在使用各种 App 的时候基本会关注到:这款软件挺耗流量的?运行起来设备掉电有点快嘛?切换页面的时候还会有卡顿等现象?如果遇到有这些问题…

程序员必看的书籍推荐

程序员必看的书籍推荐: 推荐1:Python 网络数据采集 作者:Ryan Mitchell 译者:陶俊杰,陈小莉 原书4.6星好评,一本书搞定数据采集 涵盖数据抓取、数据挖掘和数据分析 提供详细代码示例,快速解决实…

九、RGBA数据转YUV422存储

1、介绍 将RGBA转换为YUV数据,首先我们是知道有公式是可以将RGBA转换为YUV的,但是图像的每个像素都有一个R、G、B,A值的,但是YUV422(就是两个像素两个Y一个U一个V的),因此我们还需要将一个像素的RGBA四个值转换为YUV三…

VLAN内容

一、VLAN VLAN是拥有一组共同要求且与物理位置无关的终端设备的逻辑组。 终端设备包括终端用户工作站、服务器、路由器等诸如此类设备。 物理子网由想同物理电缆分段中的设备组成;逻辑子网由相互通信且物理位置无关的设备所组成。VLAN是一种逻辑子网,并…

华为OD机试真题 Java 实现【分糖果】【2022Q2 200分】,附详细解题思路

一、题目描述 小明从糖果盒中随意抓一把糖果,每次小明会取出一半的糖果分给同学们。 当糖果不能平均分配时,小明可以选择从糖果盒中(假设盒中糖果足够)取出一个糖果或放回一个糖果。 小明最少需要多少次(取出、放回…

Sentinel-1(Resolution、Pixel Spacing)

目录 10m?还是20*22m? Resolution和Pixel Spacing 10m?还是20*22m? Sentinel-1 SAR GRD的分辨率为10m,基本上是常识了https://developers.google.com/earth-engine/datasets/catalog/COPERNICUS_S1_GRD#description…

创建型设计模式06-单例模式

🧑‍💻作者:猫十二懿 ❤️‍🔥账号:CSDN 、掘金 、个人博客 、Github 🎉公众号:猫十二懿 单例模式 单例模式是一种创建型设计模式,它的目的是确保一个类只有一个实例,并…

RHCE 作业四

1.dns正向解析 一.初始准备 关闭安全软件安装bind软件 [rootserver ~]# setenforce 0 [rootserver ~]# systemctl stop firewalld [rootserver ~]# yum install bind -y 配置服务端和客户端ip 二.DNS配置 1>服务端编辑bind主配置文件 [rootserver ~]# vim /et…

案例24:基于Springboot旅游景点导游平台系统开题报告

博主介绍:✌全网粉丝30W,csdn特邀作者、博客专家、CSDN新星计划导师、java领域优质创作者,博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域和毕业项目实战✌ 🍅文末获取源码联系🍅 👇🏻 精彩专…

六、opengles显示YUV数据

工程文件名为:com.example.threetextureyuv 1、yuv回顾 1)yuv的由来 是在保持图片质量的前提下降低图片内存大小提供传输效率,并且传统的BGR格式 对于黑白图片不支持亮度的调节。 Y”表示明亮度(Luminance、Luma)&…

javascript基础二十九:JavaScript如何判断一个元素是否在可视区域中?

一、用途 可视区域即我们浏览网页的设备肉眼可见的区域,如下图 在日常开发中,我们经常需要判断目标元素是否在视窗之内或者和视窗的距离小于一个值(例如 100 px),从而实现一些常用的功能,例如:…

路径规划算法:基于和声优化的路径规划算法- 附代码

路径规划算法:基于和声优化的路径规划算法- 附代码 文章目录 路径规划算法:基于和声优化的路径规划算法- 附代码1.算法原理1.1 环境设定1.2 约束条件1.3 适应度函数 2.算法结果3.MATLAB代码4.参考文献 摘要:本文主要介绍利用智能优化算法和声…

chatgpt赋能python:Python如何倒序循环

Python如何倒序循环 在Python编程中,倒序循环是一种常见的操作。有时候我们需要倒序遍历一个序列,以便获取最后一个元素或在某些情况下需要运算。Python提供了多种方法来实现倒序循环。在本文中,我们将介绍Python中可用的不同循环遍历方法&a…

源代码加密技术分析

在源代码开发企业,如何保护好自己开发的产品,维护好自主知识产权,是企业开发过程中必要了解的,对于经常做开发的来讲对源代码加密也多种方法,对于传统的C或C之类的语言来说,要在Web上保护源代码是很容易的&…

快手流批一体数据湖构建实践

导读 本次将介绍快手为什么建设数据湖,在数据湖建设过程中遇到的问题和取得的成果,并对未来发展进行展望。 主要内容包括以下四大部分: 1. 数据湖架构 2. 基于 Hudi 构建快手数据湖 3. 快手的实践案例 4. 快手的发展规划 01 数据湖架构…

AB压测工具的介绍及安装

前言 今天我要和大家聊聊AB压测工具,如果你对网站性能测试感兴趣或有需要,那么这篇文章一定会帮到你。 我曾经也因为缺少良好的压力测试工具而苦恼,直到我发现了AB压测工具。它可以帮助我们测试网站在高并发情况下的性能表现,让…