第3章:Linux系统安全管理——第1节:Linux 防火墙部署(firewalld)

目录

一、项目整体框架

二、项目引入

[1. 背景](#1. 背景)

[2. 核心作用](#2. 核心作用)

三、需求分析

四、知识准备

(一)防火墙概述

[1. 定义](#1. 定义)

[2. 核心功能](#2. 核心功能)

[3. 扩展能力](#3. 扩展能力)

(二)防火墙分类

[1. 按是否专用设备划分](#1. 按是否专用设备划分)

[2. 按工作原理划分](#2. 按工作原理划分)

(1)包过滤防火墙

(2)代理服务型防火墙(应用层网关)

(3)状态检测防火墙

(4)复合型防火墙

[3. 四类防火墙对比](#3. 四类防火墙对比)

[(三)Linux 防火墙体系](#(三)Linux 防火墙体系)

[1. 发展历程](#1. 发展历程)

[2. 三层架构](#2. 三层架构)

[3. 主流工具对比](#3. 主流工具对比)

[五、项目实施:firewalld 防火墙部署](#五、项目实施:firewalld 防火墙部署)

[(一)安装 firewalld](#(一)安装 firewalld)

[1. 检查安装](#1. 检查安装)

[2. YUM 安装](#2. YUM 安装)

(二)服务控制命令

[(三)firewalld 区域(zone)管理](#(三)firewalld 区域(zone)管理)

[1. 区域作用](#1. 区域作用)

[2. 预定义区域(默认规则)](#2. 预定义区域(默认规则))

[3. 规则类型](#3. 规则类型)

(四)图形界面配置

(五)命令行:firewall-cmd(核心)

[1. 两种配置模式](#1. 两种配置模式)

[2. 基础查询命令](#2. 基础查询命令)

[3. 区域设置](#3. 区域设置)

[4. 服务管理](#4. 服务管理)

[5. 端口管理](#5. 端口管理)

[6. 紧急模式](#6. 紧急模式)

[7. 直接规则(iptables 兼容)](#7. 直接规则(iptables 兼容))

[8. 富规则(高级控制)](#8. 富规则(高级控制))

[六、综合实战:Web 服务 + 端口转发](#六、综合实战:Web 服务 + 端口转发)

环境

步骤

[七、进阶:NAT 地址转换(firewalld 实现)](#七、进阶:NAT 地址转换(firewalld 实现))

[(一)NAT 基础](#(一)NAT 基础)

[(二)firewalld NAT 实现](#(二)firewalld NAT 实现)

[1. 双网卡网关服务器](#1. 双网卡网关服务器)

[2. SNAT(共享上网)](#2. SNAT(共享上网))

[3. DNAT(发布内网 Web)](#3. DNAT(发布内网 Web))

八、项目小结

九、扩展知识(补充提升)

[1. firewalld 与 iptables 兼容问题](#1. firewalld 与 iptables 兼容问题)

[2. nftables 基础(未来趋势)](#2. nftables 基础(未来趋势))

[3. 生产最佳实践](#3. 生产最佳实践)

[4. 防火墙无法解决的风险](#4. 防火墙无法解决的风险)




一、项目整体框架

  1. 项目引入:网络安全需求提升,防火墙成为网络边界防护核心组件
  2. 需求分析:掌握防火墙原理、工具使用、部署方法与生产应用
  3. 知识准备:防火墙基础、分类、Linux 防火墙体系
  4. 项目实施:firewalld 安装、区域、命令、图形配置、综合应用
  5. 反思与进阶:NAT 实现、内外网服务发布
  6. 小结:防火墙安全价值与 NAT 作用



二、项目引入

1. 背景

  • 网络普及→攻击成本降低→服务器必须做安全防护
  • 防火墙是访问控制技术,管控网络数据交换
  • 全球超半数用户受防火墙保护,是网络安全必备技术

2. 核心作用

  • 隔离内外网,按规则放行 / 拦截流量
  • 提供审计、监控、NAT、VPN 等扩展能力



三、需求分析

  1. 理解防火墙工作原理与安全价值
  2. 掌握 Linux 防火墙工具(firewalld/iptables)
  3. 能按场景部署防火墙规则
  4. 适配生产环境的防火墙应用方式



四、知识准备

(一)防火墙概述

1. 定义

位于内部网与外部网之间的安全屏障,按管理员预设规则控制数据包进出,允许授权通信、拒绝未授权访问,并生成访问日志。

2. 核心功能
  1. 边界防护:强制内外网流量经防火墙,提升内网私密性
  2. 访问限制:仅放行符合安全策略流量,保护脆弱服务
  3. 审计监控:记录网络行为,异常报警,集中降低管理成本
  4. 自身安全:具备抗渗透能力,保证防火墙不被攻破
3. 扩展能力

支持NAT(地址转换)VPN(虚拟专用网) 功能


(二)防火墙分类

1. 按是否专用设备划分
类型 原理 特点 适用场景
硬件防火墙 程序固化在芯片,硬件执行过滤 性能高、CPU 占用低、稳定 企业网络边界、核心网关
软件防火墙 纯软件运行在主机系统 占用资源、安全性较低 单机 / 个人 PC

典型软件防火墙:Windows 防火墙、天网防火墙

2. 按工作原理划分
(1)包过滤防火墙
  • 工作层级:网络层
  • 原理:检查 IP/TCP/UDP 头(源 / 目的 IP、协议、端口、ICMP 类型)
  • 优点:性能好、扩展性强
  • 缺点:不识别应用层内容,易被 IP 伪造绕过
(2)代理服务型防火墙(应用层网关)
  • 工作层级:应用层
  • 原理:代理客户端请求,中转内外网流量
  • 优点:应用层控制精细
  • 缺点:网络层防护弱,不维护连接状态
(3)状态检测防火墙
  • 工作层级:网络层 + 传输层
  • 原理:建立状态连接表,跟踪会话上下文
  • 优点:安全性高于包过滤,对应用透明
  • 缺点:应用层控制弱,无法识别木马 / 垃圾邮件
(4)复合型防火墙
  • 整合:状态检测 + 透明代理 + 防病毒 + 内容过滤 + IDS+VPN
  • 工作层级:覆盖 OSI 1~7 层
  • 优点:网络层强防护、应用层细管控
  • 定位:企业级主流下一代防火墙(NGFW)
3. 四类防火墙对比
  • 包过滤:无法防 IP 伪造,不支持应用层
  • 代理型:网络层保护弱,无状态表
  • 状态检测:不检查数据区,应用层控制弱
  • 复合型:全报文检查,强安全、多功能

(三)Linux 防火墙体系

1. 发展历程
内核版本 过滤机制 管理工具
Linux 2.0 ipfw ipfwadm
Linux 2.2 ipchain ipchains
Linux 2.4/2.6/3.0 netfilter iptables
Linux 3.13+ netfilter firewalld、iptables、nftables
2. 三层架构
  1. 内核层:netfilter 框架
    • 内核内置的包过滤引擎,用户不可直接操作
    • 结构:表 → 链 → 规则,决定数据包处理方式
  2. 中间层:守护进程对接内核与用户层,传递规则
  3. 用户层:管理工具
    • iptables:传统静态防火墙
    • firewalld:RHEL7 + 默认,动态、支持区域
    • nftables:iptables 替代方案,语法更简洁
3. 主流工具对比
  • iptables:静态规则,修改需重启,底层基于 netfilter
  • firewalld:动态管理,运行时 / 永久配置分离,支持区域(zone)
  • nftables:新框架,统一替代 iptables/ip6tables/arp/ebtables,firewalld 0.8 + 默认后端



五、项目实施:firewalld 防火墙部署

(一)安装 firewalld

1. 检查安装
复制代码
rpm -qa | grep firewalld
2. YUM 安装
复制代码
yum install -y firewalld*

RHEL7/CentOS7 默认已安装

(二)服务控制命令

复制代码
# 启动
systemctl start firewalld
# 重启
systemctl restart firewalld
# 停止
systemctl stop firewalld
# 查看状态
systemctl status firewalld
# 开机自启
systemctl enable firewalld
# 禁止开机自启
systemctl disable firewalld

(三)firewalld 区域(zone)管理

1. 区域作用

信任级别划分网络,简化安全策略管理

2. 预定义区域(默认规则)
区域 默认策略
block(阻塞) 拒绝入站,返回 icmp-host-prohibited
work(工作) 内网信任,仅放 ssh/ipp-client/dhcpv6-client
home(家庭) 放 ssh/ipp-client/mdns/samba-client
public(公共) 默认区域,仅放 ssh/dhcpv6-client
dmz(隔离区) 仅放 ssh,缓冲内外网
trusted(信任) 允许所有入站
drop(丢弃) 直接丢弃,无任何响应
internal(内部) 同 home,高信任
external(外部) 仅放 ssh,默认开启 SNAT 伪装
3. 规则类型
  1. 标准规则:基础放行 / 拒绝服务 / 端口
  2. 直接规则(direct):嵌入原生 iptables 规则,适配应用程序
  3. 富规则(rich):高级语法,支持日志、端口转发、速率限制、精细访问控制

(四)图形界面配置

复制代码
firewall-config
  • 路径:应用程序 → 杂项 → 防火墙
  • 功能:可视化勾选服务 / 端口、切换区域、配置永久规则

(五)命令行:firewall-cmd(核心)

1. 两种配置模式
  • 运行时(runtime):立即生效,重启失效
  • 永久(permanent) :写入配置,需--reload生效
2. 基础查询命令
复制代码
# 版本
firewall-cmd --version
# 运行状态
firewall-cmd --state
# 所有区域
firewall-cmd --get-zones
# 默认区域
firewall-cmd --get-default-zone
# 活跃区域
firewall-cmd --get-active-zones
# 查看区域所有规则
firewall-cmd --zone=public --list-all
# 查看所有区域规则
firewall-cmd --list-all-zones
3. 区域设置
复制代码
# 设置默认区域
firewall-cmd --set-default-zone=home
# 网卡绑定区域
firewall-cmd --zone=public --add-interface=ens33
# 查询网卡所属区域
firewall-cmd --get-zone-of-interface=ens33
4. 服务管理
复制代码
# 查看所有服务
firewall-cmd --get-services
# 永久添加http服务
firewall-cmd --permanent --zone=public --add-service=http
# 永久移除ssh服务
firewall-cmd --permanent --remove-service=ssh
# 重载生效
firewall-cmd --reload
5. 端口管理
复制代码
# 永久开放80/tcp
firewall-cmd --permanent --zone=public --add-port=80/tcp
# 永久开放端口段
firewall-cmd --permanent --zone=public --add-port=8080-8888/tcp
# 移除端口
firewall-cmd --permanent --zone=public --remove-port=80/tcp
6. 紧急模式
复制代码
# 拒绝所有包
firewall-cmd --panic-on
# 取消紧急
firewall-cmd --panic-off
# 查询状态
firewall-cmd --query-panic
7. 直接规则(iptables 兼容)
复制代码
# 仅允许172.16.43.252访问22端口
firewall-cmd --direct --add-rule ipv4 filter INPUT 1 -p tcp --dport 22 -s 172.16.43.252 -j ACCEPT
# 查看所有直接规则
firewall-cmd --direct --get-all-rules
8. 富规则(高级控制)
复制代码
# 丢弃10.6.1.2所有流量
firewall-cmd --permanent --add-rich-rule='rule family=ipv4 source address="10.6.1.2" drop'
# 拒绝192.168.0.11
firewall-cmd --permanent --zone=public --add-rich-rule='rule family=ipv4 source address=192.168.0.11/32 reject'
# 端口转发:80→8888(172.16.43.0/24网段)
firewall-cmd --permanent --zone=public --add-rich-rule="rule family=ipv4 source address=172.16.43.0/24 forward-port port=80 protocol=tcp to-port=8888"



六、综合实战:Web 服务 + 端口转发

环境

  • Server:172.16.43.254
  • Web 端口修改为:8888
  • 要求:用户访问 80 端口自动转发到 8888

步骤

启动防火墙并开机自启

复制代码
systemctl start firewalld
systemctl enable firewalld

启动 httpd

复制代码
systemctl start httpd

修改 httpd 监听端口

复制代码
vim /etc/httpd/conf/httpd.conf
Listen 8888
systemctl restart httpd

开放端口段

复制代码
firewall-cmd --permanent --zone=public --add-port=8080-8888/tcp
firewall-cmd --reload

配置富规则端口转发

复制代码
firewall-cmd --permanent --zone=public --add-rich-rule="rule family=ipv4 source address=172.16.43.0/24 forward-port port=80 protocol=tcp to-port=8888"
firewall-cmd --reload

测试

复制代码
curl 172.16.43.254



七、进阶:NAT 地址转换(firewalld 实现)

(一)NAT 基础

  1. 全称:Network Address Translation
  2. 作用:
    • 解决 IPv4 地址不足
    • 隐藏内网 IP,提升安全
  3. 类型:
    • SNAT(源地址转换):出口转发,内网访问外网
    • DNAT(目的地址转换):端口映射,外网访问内网服务

(二)firewalld NAT 实现

1. 双网卡网关服务器
  • ens33(external):172.16.43.252(外网)
  • ens38(internal):10.0.0.2(内网)
  • 内网服务器:10.0.0.3(Web/FTP/Mail)
2. SNAT(共享上网)
复制代码
# 网卡绑定区域
firewall-cmd --permanent --zone=external --change-interface=ens33
firewall-cmd --permanent --zone=internal --change-interface=ens38
# 开启伪装(SNAT)
firewall-cmd --permanent --zone=external --add-masquerade
# 开启内核转发
echo "net.ipv4.ip_forward=1" >> /etc/sysctl.conf
sysctl -p
# 重载
firewall-cmd --reload

内网客户端网关设为:10.0.0.2

3. DNAT(发布内网 Web)
复制代码
# 开放http
firewall-cmd --permanent --zone=external --add-service=http
# 端口转发:80→10.0.0.3:80
firewall-cmd --permanent --zone=external --add-forward-port=port=80:proto=tcp:toport=80:toaddr=10.0.0.3
firewall-cmd --reload



八、项目小结

  1. 防火墙是服务器安全边界核心
  2. firewalld 支持动态规则、区域管理、运行 / 永久配置
  3. 可实现:端口放行、服务控制、富规则、NAT 转换
  4. 生产价值:单机防护 + 网关防火墙 + 内网安全隔离



九、扩展知识(补充提升)

1. firewalld 与 iptables 兼容问题

  • 同一系统不可同时运行firewalld 与 iptables
  • 关闭 iptables:systemctl stop iptables && systemctl disable iptables

2. nftables 基础(未来趋势)

复制代码
# 安装
yum install -y nftables
# 启动
systemctl start nftables
# 基础规则示例
nft add rule inet filter input tcp dport 22 accept

3. 生产最佳实践

  • 公网服务器默认使用public/dmz区域
  • 最小权限:仅开放业务必需端口
  • 重要服务用富规则 + 源 IP 限制
  • 定期备份规则:firewall-cmd --list-all-zones > firewall-backup.conf
  • 开启日志:firewall-cmd --set-log-denied=all

4. 防火墙无法解决的风险

  • 应用层漏洞(SQL 注入、XSS)
  • 内部攻击、社会工程学
  • 需配合:WAF、入侵检测(IDS/IPS)、杀毒、日志审计
相关推荐
桦02 小时前
【Linux复习】:多线程
linux·运维
云飞云共享云桌面2 小时前
SolidWorks三维设计不用单独买电脑,1台服务器10个设计用
运维·服务器·数据库·3d·电脑
Rabbit_QL2 小时前
从服务器拷文件到本地:scp 与 rsync 实战
服务器
宋小米的csdn2 小时前
网络知识学习路线(实用向)
网络·学习
Lsir10110_2 小时前
吃透 TCP 核心原理:从握手挥手到滑动窗口与拥塞控制
网络·网络协议·tcp/ip
acaad2 小时前
访问信创系统的服务器报错Received fatal alert: handshake_failure
运维·服务器
大树882 小时前
【无标题】
大数据·运维·服务器·人工智能
南境十里·墨染春水2 小时前
linux学习进展 基础命令 vi基础命令
linux·运维·服务器·笔记·学习
Xudde.2 小时前
班级作业笔记报告0x08
笔记·学习·安全·web安全