29.Linux防火墙管理 - 详解

news/2025/9/27 11:01:14/文章来源:https://www.cnblogs.com/yxysuanfa/p/19114848

文章目录

  • Linux防火墙管理
    • 认识防火墙
    • 静态防火墙和动态防火墙
      • 静态防火墙
      • 动态防火墙
    • Firewalld 防火墙
      • Firewalld 区域 zone
        • Firewalld 提供的区域
        • 数据包与区域匹配规则
      • Firewalld 规则
    • Firewalld 配置
      • Firewalld 配置方法
      • Firewalld 配置文件
      • 设置默认zone
      • 设置 source
      • 设置 interface
    • 综合实验1:配置防火墙
      • 实验要求
      • 配置过程
    • 综合实验2:配置防火墙
      • 实验要求
      • 配置过程

Linux防火墙管理

认识防火墙

通俗来说,你的电脑相当于你的家,电脑上的网络端口就相当于你家的门、窗、通风口,每个端口都是一个潜在的通道。网络数据包可以理解为想要进门的人或从家里出去的人。防火墙就可以是安装在电脑上的一个软件(或操作系统自带的功能),它扮演==保安==的角色。

保安拥有一份规则表,在每个端口都巡视,它的核心工作是:根据预设的规则,控制谁可以进来(入站),以及谁可以出去(出站),以保护内部的安全。

防火墙的作用:

  1. 监控网络流量:时刻检查所有试图进入或离开你电脑的数据。
  2. 阻止未经授权的访问:比如,有一个黑客想通过某个“端口”潜入你的电脑,防火墙发现这个端口没有对你开放,就会立刻拦截这个请求。
  3. 控制程序上网:当你第一次运行一个新游戏或软件时,防火墙可能会弹窗问:“是否允许‘某程序’访问网络?” 这就是在制定规则。如果你选择“否”,那么这个程序就无法连接到互联网。
  4. 防御网络攻击:可以识别并阻挡一些常见的网络扫描和攻击行为。

静态防火墙和动态防火墙

静态防火墙

用户管理防火墙规则时,为了让规则永久保存,防火墙服务会重新加载所有防火墙规则,哪怕只修改一条规则也要重新读取所有规则,这种载入模式称为静态模式。静态模式加载规则时,会导致网络连接丢失。

我们称使用静态模式载入规则的防火墙为静态防火墙。例如iptables,用户执行 service iptables reload 命令将变更的规则保存到配置文件里,并重新加载所有防火墙规则。

动态防火墙

用户管理防火墙规则时,为了让规则永久保存,防火墙只需要将变更部分保存并更新到运行中的 iptables 即可,而不需要对整个防火墙规则列表进行重新加载,这种载入模式称为动态模式。

我们称使用动态模式载入规则的防火墙为动态防火墙,例如 firewalld。

Firewalld 防火墙

firewalld是CentOS 7默认的动态防火墙管理工具,用于管理系统的网络访问规则。

Firewalld 区域 zone

firewalld 防火墙为了简化管理,zone是firewalld中预设的规则集合,每个zone对应不同的网络安全级别(如信任、公共、内部等),包含允许或拒绝的服务/端口规则。

通过将网络接口或源IP绑定到不同zone,快速适配不同网络环境的安全需求(如家庭网络用trusted zone,公网用public zone)。

Firewalld 提供的区域

firewalld 防火墙提供了如下zone:

数据包与区域匹配规则

数据包与zone匹配规则如下:

  1. 首先匹配“源IP地址绑定的zone”(通过firewall-cmd --zone=xxx --add-source=IP设置);

  2. 若未匹配源IP,则匹配“网络接口绑定的zone”(通过firewall-cmd --zone=xxx --add-interface=网卡设置);

  3. 若均未匹配,则使用“默认zone”(通过firewall-cmd --get-default-zone查看)。

注意事项:

  • firewalld默认指定public区域为默认区域,并将lo 回环接口映射至 trusted 区域
  • 如果流量不与允许的端口或协议或服务匹配,则通常会被拒绝

Firewalld 规则

对于所有区域,区域内规则的优先级是相同的。

区域内规则匹配优先级如下:

  1. 首先匹配为该区域设置的任何端口转发伪装原则。
  2. 其次匹配该区域设置的任何允许规则。
  3. 最后匹配该区域设置的任何拒绝规则。
  4. 还可以同时为以上3个规则设置记录和审计规则,可以同时生效。
  5. 富规则中的规则优先级高于区域中其他规则。
  6. 如果区域中所有规则都不匹配,那么通常会拒绝该包,trusted 例外。

Firewalld 配置

Firewalld 配置方法

  1. 直接编辑 /etc/firewalld/ 中的配置文件
  2. firewall-cmd 命令行工具
  3. firewall-config 图形工具

Firewalld 配置文件

Firewalld 配置配置文件存放在:

  • /usr/lib/firewalld/目录,Firewalld软件包自带配置位置。
  • /etc/firewalld/目录,目录结构与/usr/lib/firewalld/一致,管理员自定义配置保存在该位置。

**提示:**我们不建议大家通过修改/etc/firewalld/目录配置防火墙。

设置默认zone

当防火墙执行命令的时候,如果不加–zone选项,则代表规则是配置在默认zone

查看默认zone

[root@server ~ 21:03:07]# firewall-cmd --get-default-zone
public

设置默认zone

[root@server ~ 21:05:52]# firewall-cmd --set-default-zone=home
success
[root@server ~ 21:06:08]# firewall-cmd --get-default-zone
home

设置回来,仍然保持为public

[root@server ~ 21:06:10]# firewall-cmd --set-default-zone=public 
success
[root@server ~ 21:06:23]# firewall-cmd --get-default-zone
public

设置 source

关联 source 到 zone

[root@server ~ 21:06:24]# firewall-cmd --add-source=10.1.8.0/24 --zone=home 
success
[root@server ~ 21:06:55]# firewall-cmd --list-all --zone=home
home
target: default
icmp-block-inversion: no
interfaces:
sources:
services: dhcpv6-client mdns samba-client ssh
ports:
protocols:
masquerade: no
forward-ports:
source-ports:
icmp-blocks:
rich rules:

查看 source

[root@server ~ 13:41:47]# firewall-cmd --list-sources --zone=home 
10.1.8.0/24

变更到其他zone

[root@server ~ 21:08:26]# firewall-cmd --change-source=10.1.8.0/24 --zone=internal
success
[root@server ~ 21:09:28]# firewall-cmd --list-sources --zone=internal
10.1.8.0/24

删除 source

[root@server ~ 21:09:32]# firewall-cmd --remove-source=10.1.8.0/24 --zone=internal
success
[root@server ~ 21:10:15]# firewall-cmd --list-sources --zone=internal 

重新设置回来

[root@server ~ 21:10:32]# firewall-cmd --add-source=10.1.8.0/24 --zone=internal 
success
[root@server ~ 21:10:56]# firewall-cmd --list-sources --zone=internal 
10.1.8.0/24

设置 interface

变更到 home

[root@server ~ 21:10:59]# firewall-cmd --change-interface=ens37 --zone=home 
success
[root@server ~ 21:11:24]# firewall-cmd --list-interfaces --zone=home 
ens37

删除zone中interface

[root@server ~ 21:11:54]# firewall-cmd --remove-interface=ens37 --zone=home
success
[root@server ~ 21:16:24]# firewall-cmd --list-interfaces --zone=home 

zone关联interface

[root@server ~ 21:16:40]# firewall-cmd --add-interface=ens37 --zone=home
success
[root@server ~ 21:16:47]# firewall-cmd --list-interfaces --zone=home 
ens37

最后活动的 zone

[root@server ~ 21:16:59]# firewall-cmd --get-active-zones 
work
sources: 10.1.8.0/24
internal
sources: 10.1.1.0/24
public
interfaces: ens33 ens37

综合实验1:配置防火墙

实验要求

  1. 10.1.8.0/24 关联到 work
  2. 10.1.1.0/24 关联到 internal
  3. ens33 ens37 关联到 public
  4. 设置 public 为默认 zone
  5. 可以通过 10.1.8.10 地址访问 web 服务,禁止访问 ssh 服务
  6. 可以通过 10.1.1.10 地址访问 ssh 服务,禁止访问 web 服务

配置过程

准备 web 服务

[root@server ~ 21:18:13]# yum install -y nginx
[root@server ~ 21:18:28]# systemctl enable nginx.service --now

配置默认zone

[root@server ~ 21:18:39]# firewall-cmd --set-default-zone=public

配置 source

--permanent设置持久化规则

[root@server ~ 21:19:28]# firewall-cmd --permanent --add-source=10.1.8.0/24 --zone=work
success
[root@server ~ 21:19:37]# firewall-cmd --permanent --add-source=10.1.1.0/24 --zone=internal 
success

--reload重新加载规则,也就是使用 --permanent设置的规则,原先未加 --permanent 设置的规则则失效。

[root@server ~ 21:20:22]# firewall-cmd --reload 
success
[root@server ~ 21:20:32]# firewall-cmd --get-active-zones 
work
sources: 10.1.8.0/24
internal
sources: 10.1.1.0/24
public
interfaces: ens33 ens37

配置 work zone

[root@server ~ 21:20:52]# firewall-cmd --add-service=http --permanent --zone=work 
[root@server ~ 21:20:59]# firewall-cmd --remove-service=ssh --permanent --zone=work 
[root@server ~ 21:21:05]# firewall-cmd --reload 

配置 internal zone

[root@server ~ 21:21:59]# firewall-cmd --add-service=ssh --permanent --zone=internal 
[root@server ~ 21:22:07]# firewall-cmd --remove-service=http --permanent --zone=internal
[root@server ~ 21:22:17]# firewall-cmd --reload 

设置默认zone 禁止 ssh访问

[root@server ~ 21:22:30]# firewall-cmd --remove-service=ssh --permanent 
[root@server ~ 21:22:37]# firewall-cmd --remove-service=ssh

通过 port 放行 http 服务

[root@server ~ 21:22:37]# grep http /etc/services |head -n 5
http://www.iana.org/assignments/port-numbers
http 80/tcp www www-http # WorldWideWeb HTTP
http 80/udp www www-http # HyperText Transfer Protocol
http 80/sctp # HyperText Transfer Protocol
https 443/tcp # http protocol over TLS/SSL
[root@server ~ 21:23:41]# firewall-cmd --remove-service=http --permanent --zone=work
[root@server ~ 21:24:26]# firewall-cmd --add-port=80/tcp --permanent --zone=work
[root@server ~ 21:24:33]# firewall-cmd --reload

综合实验2:配置防火墙

实验要求

  1. 配置client网络

  2. 配置client网关为server(10.1.1.10),设置防火墙允许client访问公网

  3. 配置客户端访问 10.1.8.10:1022 端口,转发到 10.1.1.11:22

  4. 配置 client 网络:网卡模式为vmnet1,ip地址为10.1.1.11,网关为10.1.1.10

配置过程

  1. 配置client网络
[root@client ~ 21:41:42]# nmcli connection modify ens33 ipv4.addresses 10.1.1.11/24 ipv4.gateway 10.1.1.10
[root@client ~ 21:42:00]# nmcli connection up ens33
连接已成功激活(D-Bus 活动路径:/org/freedesktop/NetworkManager/ActiveConnection/2)
[root@client ~ 21:42:05]# nmcli connection
NAME UUID TYPE DEVICE
ens33 4dd56f90-92f5-486f-9055-ba5a4c2ff049 ethernet ens33
[root@client ~ 21:42:09]# ip -br a
lo UNKNOWN 127.0.0.1/8 ::1/128
ens33 UP 10.1.1.11/24 fe80::20c:29ff:fe55:a3e4/64
  1. 配置防火墙开启masquerade功能,也就是SNAT,允许client访问公网
[root@server ~ 21:27:28]# firewall-cmd --add-masquerade --zone=public
[root@server ~ 21:27:37]# firewall-cmd --add-masquerade --zone=public --permanent
此时client可以ping通1.1.1.1
  1. 配置防火墙开启端口转发功能,也就是DNAT,将10.1.8.10:1022 端口,转发到 10.1.1.11:22
[root@server ~ 21:28:06]# firewall-cmd --add-forward-port=port=1022:proto=tcp:toport=22:toaddr=10.1.1.11
[root@server ~ 21:28:20]# firewall-cmd --add-forward-port=port=1022:proto=tcp:toport=22:toaddr=10.1.1.11 --permanent

ssh服务 扩展知识:
默认情况 客户端连ssh服务的时候,ssh服务器会解析自己的主机名对应的ip地址。

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

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

相关文章

【转】中国信通院《低代码产业发展研究报告(2025年)》核心解读

【转】中国信通院《低代码产业发展研究报告(2025年)》核心解读中国信通院(CAICT)于2025年6月发布的《低代码产业发展研究报告》是中国低代码行业发展的权威性风向标。这份报告不仅全面梳理了低代码市场的最新发展现…

【C++】内存管理 - 指南

【C++】内存管理 - 指南pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco", &qu…

昇腾多机推理极速上手:10倍简化的 DeepSeek R1 超大规模模型部署

昇腾多机推理太复杂?易出错?试试 GPUStack在昇腾 NPU 上部署超大规模模型,往往面临一个现实难题:目前主流的官方推理引擎 MindIE 的多机分布式推理虽然性能表现尚可,但配置流程异常复杂。从环境准备、配置初始化到…

python开始exe应用程序初级教程

以下是一个关于如何将Python脚本打包成可执行文件(.exe)的初级教程,使用目前最常用的PyInstaller工具。 准备工作 首先需要安装PyInstaller,打开命令提示符(CMD)或终端,运行以下命令: pip install pyinstaller…

中职校园网站建设建议制作网页的思路

cp -rpf #强行递归复制/etc目录到/mist目录中,并保持源目录的权限等信息不变。 有点类似于打patch,不会改变已有的内容。

凡科可以建设多个网站吗上海手机网站建设电话咨询

用Python解析HTML页面 文章目录 用Python解析HTML页面HTML 页面的结构XPath 解析CSS 选择器解析简单的总结 在前面的课程中,我们讲到了使用 request三方库获取网络资源,还介绍了一些前端的基础知识。接下来,我们继续探索如何解析 HTML 代码&…

网站建设选用平台分析极速蜂app拉新加盟

阿里云服务器是阿里云推出的一种云核算产品,它能够帮助企业和个人快速建立、扩展和管理网络服务。可是,有时候在运用阿里云服务器时,或许会遇到无法装置程序的问题。本文将具体介绍如何处理这个问题。 阿里云服务器无法装置程序或许是由多种原…

版权申请网站宾馆酒店网站建设方案

小伙伴们好久不见,今天我们来聊聊中国 AZURE 的日志分析告警。为什么是中国 AZURE,目前中国 AZURE 的 Monitor 服务和运维相关周围服务和 Global 是有所不同的,所以有些功能和设计不能复制和套用全球版 AZURE 的架构。我们先看一下中国 AZURE…

深入解析:cocos 添加背景,帧动画,贴图

深入解析:cocos 添加背景,帧动画,贴图2025-09-27 10:49 tlnshuju 阅读(0) 评论(0) 收藏 举报pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block…

B站油管抖音一键笔记

在最近,我有一个需求就是需要对视频内容进行一个总结,做成一个笔记,但是又不想自己手动去写,于是我找到了一个项目 BiliNote,BiliNote 是一个开源的 AI 视频笔记助手,支持通过哔哩哔哩、YouTube、抖音等视频链接…

网站安装出现dir更改wordpress地址

集成swagger2的时候swagger-ui.html页面的v2/api-docs接口报404 尝试网上说的权限、包版本不一致、资源路径映射问题,发现都没有问题。 单独访问v2/api-docs接口的时候报 Swagger2Controller Unable to find specification for group 查看相关代码: …

成熟网站开发联系电话陕西网

简介:OpenKruise 是针对 Kubernetes 的增强能力套件,聚焦于云原生应用的部署、升级、运维、稳定性防护等领域。 云原生应用自动化管理套件、CNCF Sandbox 项目 -- OpenKruise,近期发布了 v1.0 大版本。 OpenKruise[1] 是针对 Kubernetes 的…

网站设计公司官网如何设计购物网站

Java流程控制语句有三种: 顺序结构、分支结构和循环结构。 顺序结构: 顺序结构语句是Java程序默认的执行流程,按照代码的先后顺序,从上到下依次执行。 原文链接: Java流程控制控制语句 - 红客网络编程与渗透技术 示例…

介绍自己

大家好!我是一个数据科学与大数据技术专业的大三学生。在日常生活中我有着许多的兴趣爱好打羽毛球、听音乐、做手工。技能树与专业规划 当前技术能力 编程基础:稍微掌握Python数据处理(Pandas、NumPy) 数据库技能:…

pycharm更换国内源

1、找到pip.ini2、记事本修改 [global] timeout = 6000 index-url = https://pypi.tuna.tsinghua.edu.cn/simple trusted-host = https://pypi.tuna.tsinghua.edu.cn

基于Python+Vue开发的反诈视频宣传管理系统源码+运行步骤

项目简介该项目是基于Python+Vue开发的反诈视频宣传管理系统(前后端分离),这是一项为大学生课程设计作业而开发的项目。该系统旨在帮助大学生学习并掌握Python编程技能,同时锻炼他们的项目设计与开发能力。通过学习…

MySQL中的空间碎片率计算分析 - 指南

pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco", "Courier New", …

网站开发财务预算企业手机网站建设流程

以下部门功能在lucene5以上版本可能有的API所有改变 目录1.简介 2.了解索引操作 2.1倒排索引 2.2字段类型 2.3细分 2.4文件编号 2.5搜索索引 3.创建索引 4.基本索引操作 4.1核心索引类 4.2将数据添加到索引 5.文件和领域 5.1文件 5.2领域 5.3在Lucene中增强文档 1.简介 该索引是…

为什么网站目录不收录seowhy问答

一、初识 1.1 基础 1.1.1 语言速成课 1.1.1.1 变量 ​ 变量是存储值的容器。首先用let关键字声明一个变量,后面跟着你给变量的名字 ​ 变量命名区分大小写 ​ 分号在JavaScript中是用来分隔语句的,但是如果语句后面有一个换行符(或者在{block}中只…