当前位置: 首页 > news >正文

Orange的运维学习日记--31.Linux防火墙深度详解

Orange的运维学习日记–31.Linux防火墙深度详解

文章目录

  • Orange的运维学习日记--31.Linux防火墙深度详解
    • 防火墙深度介绍
      • 防火墙的目的
      • 核心功能
      • 过滤方式
      • 区域划分与部署
      • NAT 与地址伪装
      • 性能与扩展
      • 防火墙演进
    • 防火墙类型
      • 按保护范围
      • 按实现方式
      • 按网络协议层级
        • 网络层防火墙
        • 应用层防火墙(Web 应用防火墙或代理网关)
    • Linux 防火墙框架
      • Netfilter 子系统
      • Nftables 子系统
      • 静态防火墙与动态防火墙
    • firewalld 防火墙
      • firewalld 简介
        • firewalld 与 iptables 关系
      • 区域概念
        • 默认提供的区域
        • 匹配流程
      • 规则匹配优先级
    • firewalld 配置
      • 配置方法
      • 配置文件位置
    • firewall-cmd 命令行管理
      • 基本概念
      • 区域管理
      • 来源(source)管理
      • 接口(interface)管理
      • 服务管理
        • 自定义服务
      • 端口管理
      • 伪装(masquerade)管理
      • 端口转发管理
      • ICMP 配置
        • icmp-block-inversion
        • icmp-blocks
      • 协议管理
      • 富规则(rich rule)
      • 直接规则(direct rule)
      • 应急模式
      • 其他实用选项
      • 综合案例
    • firewall-config 图形工具
    • firewall-config 图形工具

防火墙深度介绍

防火墙的目的

在网络边界或主机边缘建立信任与不信任区域的分界
通过预设安全策略阻断未经授权的访问并监控可疑流量
平衡可用性与安全性,为内部网络或关键服务提供防护

核心功能

  • 流量检测与过滤
    检查每个进出数据包的源地址、目的地址、端口号、协议类型和状态
  • 状态跟踪
    对已建立连接进行跟踪,仅允许合法会话的数据包通过
  • 日志与审计
    记录规则命中、异常事件与流量统计,以便故障排查与安全分析
  • 报文修改
    支持网络地址转换(NAT)、端口转发、地址伪装(masquerade)

过滤方式

  • 包过滤(Stateless Packet Filter)
    基于静态访问控制列表(ACL)快速检查数据包头部,无连接状态记录
  • 状态检测(Stateful Inspection)
    维护连接跟踪表,仅允许与已有会话相关的响应报文通过
  • 代理与应用层网关
    在应用层完全解析协议,实现深度包检测与内容审查
  • 深度包检测(DPI)
    对应用层载荷内容进行正则或特征匹配,防范高级攻击

区域划分与部署

  • 边界防火墙
    部署于企业或数据中心与互联网之间,阻断外部威胁
  • 内部防火墙
    将敏感子网(如生产环境、财务系统)与普通办公网隔离
  • DMZ(隔离区)
    放置面向外网的应用服务器,单向受控访问,降低被入侵面
  • 分层防御
    边界→局域网→主机三层防护,任何一层被突破仍有后续屏障

NAT 与地址伪装

  • 源地址转换(SNAT)
    将内部主机伪装为防火墙地址,隐藏真实网络拓扑
  • 目的地址转换(DNAT)
    将外部请求重定向到内部服务器,实现端口转发与负载均衡
  • 透明代理
    无需客户端配置,通过网络拓扑自动引导流量到防火墙

性能与扩展

  • 硬件加速
    专用ASIC或FPGA提升包过滤与加解密性能
  • 集群与高可用
    多防火墙节点组成集群,主动-被动或主动-主动保证不中断切换
  • 分布式防护
    在各骨干交换机或虚拟云主机上部署微分段防火墙,实现零信任

防火墙演进

  • 第一代:单纯包过滤
  • 第二代:状态检测
  • 第三代:应用层网关
  • 第四代:集成入侵防御系统(IPS)与行为分析
  • 第五代:基于威胁情报与机器学习的自适应防御

防火墙类型

按保护范围

  • 主机防火墙 保护单台主机
  • 网络防火墙 保护防火墙一侧的整个局域网

按实现方式

  • 硬件防火墙 在专用硬件上实现,如华为、华三、天融信等
  • 软件防火墙 在通用硬件平台上运行,如 iptables、firewalld

按网络协议层级

网络层防火墙
  • 工作在 OSI 模型第四层,亦称包过滤防火墙
  • 依据访问控制列表 ACL 检查源地址、目的地址、端口和协议状态等
  • 优点:透明、处理速度快、易维护
  • 缺点:无法检测应用层内容
应用层防火墙(Web 应用防火墙或代理网关)
  • 工作在 OSI 模型第七层,或充当 HTTP/HTTPS 代理
  • 功能要点
    • 异常协议检测 只允许符合 HTTP 标准的请求
    • 增强输入验证 防止网页篡改、信息泄露、木马植入
    • 漏洞屏蔽 能在漏洞公开后快速屏蔽攻击
    • 基于规则与异常双重保护 通过更新规则库和行为检测拦截攻击
    • 状态管理 追踪用户会话并识别暴力攻击
    • 隐藏表单域、响应监视、信息泄露保护等增强功能
  • 优点:对应用层攻击提供直接防护
  • 缺点:处理性能相对较低

在这里插入图片描述


Linux 防火墙框架

Netfilter 子系统

  • Linux 内核中负责网络过滤的数据包处理引擎
  • 在数据包到达用户空间前进行检查,可修改、丢弃或路由
  • 用户态工具:
    • iptables 用于 IPv4 包过滤
    • ip6tables 用于 IPv6 包过滤
    • arptables 用于 ARP 协议过滤 防护 ARP 欺骗
    • ebtables 用于链路层过滤 多用于桥接模式控制 VLAN
ls -1 /sbin/*tables

输出结果

/sbin/arptables -> xtables-nft-multi
/sbin/ebtables -> xtables-nft-multi
/sbin/ip6tables -> xtables-nft-multi
/sbin/iptables -> xtables-nft-multi

Nftables 子系统

  • Netfilter 的新一代实现,使用单一用户空间工具 nft
  • 优点
    • 更快的数据包处理与规则集更新
    • 统一接口管理所有协议,避免前端冲突

静态防火墙与动态防火墙

  • 静态防火墙
    • 每次修改都重新加载所有规则,导致网络短暂中断
    • 典型代表:iptables 服务通过 service iptables reload 重载规则
  • 动态防火墙
    • 仅更新变更部分即可生效,无需重载整个规则集
    • 典型代表:firewalld

firewalld 防火墙

firewalld 简介

  • Red Hat 推出的动态防火墙管理工具
  • 后端默认使用 nftables
  • RHEL 7 之前默认使用 iptables;RHEL 7 及以后默认改为 firewalld
  • 建议同时安装时仅启用一个防火墙以免规则冲突
firewalld 与 iptables 关系
  • firewalld 提供 daemon、服务、命令行与图形配置工具
  • 底层依然调用内核 Netfilter 处理规则

区域概念

firewalld 将网络流量划分至不同区域(zone),每个区域拥有独立规则集

默认提供的区域
  • trusted 允许所有传入流量
  • public 允许 SSH、DHCPv6-Client 等预定义服务
  • external 允许 SSH 并对转发流量启用伪装
  • home 允许 SSH、mDNS、Samba-Client、DHCPv6-Client
  • internal 同 home
  • work 允许 SSH、DHCPv6-Client
  • dmz 允许 SSH
  • block 拒绝所有非相关入站流量
  • drop 丢弃所有非相关入站流量且不返回 ICMP 错误
匹配流程
  1. 根据传入接口关联的区域应用规则
  2. 若接口无关联,则按照源地址分配至特定区域
  3. 若源地址未指定,则分配至默认区域(public)
  4. lo 回环接口默认属于 trusted 区域

规则匹配优先级

  1. 端口转发与伪装
  2. 允许(accept)规则
  3. 拒绝(reject/drop)规则
  4. 记录(log)和审计(audit)规则
  5. 富规则优先级高于普通规则
  6. 若所有规则不匹配则默认拒绝(trusted 区域除外)

firewalld 配置

配置方法

  • 直接编辑 /etc/firewalld/usr/lib/firewalld 目录下的 XML 文件
  • firewall-cmd 命令行工具
  • firewall-config 图形工具

配置文件位置

  • /usr/lib/firewalld 软件包提供的默认配置
  • /etc/firewalld 管理员自定义配置建议存放处

firewall-cmd 命令行管理

基本概念

  • 配置状态
    • runtime 运行时配置,立即生效
    • permanent 永久配置,需 --reload 重新加载才生效
  • 操作建议
    • 同时使用 --permanent 与立即生效命令
    • 默认区域为 public,可用 --zone 指定其他区域

区域管理

# 查看全部区域
firewall-cmd --get-zones# 查看激活区域(已关联接口或源)
firewall-cmd --get-active-zones# 查看与设置默认区域
firewall-cmd --get-default-zone
firewall-cmd --set-default-zone=trusted# 新建与删除区域(需 --permanent)
firewall-cmd --permanent --new-zone=myzone
firewall-cmd --permanent --delete-zone=myzone# 重新加载永久配置
firewall-cmd --reload# 查看所有区域详情
firewall-cmd --list-all-zones# 查看当前默认区域详情
firewall-cmd --list-all

来源(source)管理

# 将源地址分配到 home 区域
firewall-cmd --add-source=192.168.1.0/24 --zone=home# 查询与移除源地址
firewall-cmd --list-sources --zone=home
firewall-cmd --get-zone-of-source=192.168.1.0/24
firewall-cmd --remove-source=192.168.1.0/24 --zone=home

接口(interface)管理

# 查询接口所属区域
firewall-cmd --get-zone-of-interface=ens32# 变更与移除接口
firewall-cmd --change-interface=ens32 --zone=home
firewall-cmd --remove-interface=ens32 --zone=home# 绑定接口到区域
firewall-cmd --add-interface=ens32 --zone=public

服务管理

# 列出预定义服务
firewall-cmd --get-services# 添加/查询/删除服务放行
firewall-cmd --add-service=http
firewall-cmd --query-service=http
firewall-cmd --remove-service=http
自定义服务
# 新建与删除服务
firewall-cmd --permanent --new-service=myserv
firewall-cmd --permanent --delete-service=myserv# 配置服务端口与协议
firewall-cmd --permanent --service=myserv --add-port=8080/tcp
firewall-cmd --permanent --service=myserv --add-protocol=icmp

端口管理

# 添加/查询/删除端口放行
firewall-cmd --add-port=5900/tcp
firewall-cmd --query-port=5900/tcp
firewall-cmd --remove-port=5900/tcp

伪装(masquerade)管理

# 启用与查询伪装
firewall-cmd --add-masquerade
firewall-cmd --query-masquerade# 禁用伪装
firewall-cmd --remove-masquerade

端口转发管理

# 添加端口转发(需先启用伪装)
firewall-cmd --add-masquerade
firewall-cmd --add-forward-port=port=8000:proto=tcp:toport=80# 查询与移除转发规则
firewall-cmd --query-forward-port=port=8000:proto=tcp:toport=80
firewall-cmd --remove-forward-port=port=8000:proto=tcp:toport=80

ICMP 配置

icmp-block-inversion
  • 默认 no 放行所有 ICMP 类型
  • 设置 yes 禁止所有 ICMP 再通过富规则放行特定源
firewall-cmd --add-icmp-block-inversion
firewall-cmd --query-icmp-block-inversion
icmp-blocks
# 列出可用 icmptypes
firewall-cmd --get-icmptypes# 屏蔽 echo-request 实现禁止 ping
firewall-cmd --add-icmp-block=echo-request
firewall-cmd --list-icmp-blocks
firewall-cmd --remove-icmp-block=echo-request

协议管理

# 添加/查询/删除协议放行
firewall-cmd --add-protocol=icmp
firewall-cmd --query-protocol=icmp
firewall-cmd --remove-protocol=icmp

富规则(rich rule)

  • 灵活自定义源、目的、服务、速率限制、日志和审计等

  • 语法模板

    firewall-cmd --add-rich-rule='rule family="ipv4" source address="10.1.8.0/24" service name="http" limit value="3/s" log prefix="http-error" level="error" audit limit value="1/s" accept'
    
  • 查询与删除

    firewall-cmd --list-rich-rules
    firewall-cmd --remove-rich-rule='rule protocol value="icmp" drop'
    

直接规则(direct rule)

  • 直接规则优先于 firewalld 规则,用于补充复杂场景

  • 需了解 iptables 表、链、目标等概念

  • 常用命令

    firewall-cmd --direct --permanent --add-chain ipv4 raw blacklist
    firewall-cmd --direct --permanent --add-rule ipv4 raw PREROUTING 0 -s 192.168.0.0/24 -j blacklist
    firewall-cmd --direct --permanent --add-rule ipv4 raw blacklist 1 -j DROP
    firewall-cmd --reload
    firewall-cmd --direct --get-all-rules
    

应急模式

  • --panic-on 启用 panic 模式 丢弃所有流量
  • --panic-off 关闭 panic 模式
  • --query-panic 查询当前状态

其他实用选项

  • --runtime-to-permanent 将运行时配置写入永久配置
  • --timeout 设置规则生存时长 便于调试

综合案例

  • 禁止单个主机 ping 本机

    firewall-cmd --permanent --add-rich-rule='rule family="ipv4" source address="10.1.8.10" icmp-type name="echo-request" reject'
    firewall-cmd --complete-reload
    
  • 仅允许单个主机 ping 本机

    firewall-cmd --permanent --add-icmp-block-inversion
    firewall-cmd --permanent --add-rich-rule='rule family="ipv4" source address="10.1.8.10" icmp-type name="echo-request" accept'
    firewall-cmd --complete-reload
    

firewall-config 图形工具

  • 直观式管理 firewalld 可视化界面

  • 需安装 firewall-config、xorg-x11-xauth、libglvnd-glx

  • 功能模块

    • 选项菜单 重载、防火墙应急、默认区域切换、保存运行时至永久
    • 查看菜单 显示当前详情与日志
  • 仅允许单个主机 ping 本机

    firewall-cmd --permanent --add-icmp-block-inversion
    firewall-cmd --permanent --add-rich-rule='rule family="ipv4" source address="10.1.8.10" icmp-type name="echo-request" accept'
    firewall-cmd --complete-reload
    

firewall-config 图形工具

  • 直观式管理 firewalld 可视化界面
  • 需安装 firewall-config、xorg-x11-xauth、libglvnd-glx
  • 功能模块
    • 选项菜单 重载、防火墙应急、默认区域切换、保存运行时至永久
    • 查看菜单 显示当前详情与日志
    • 区域配置 服务、端口、协议、源端口、伪装、端口转发、ICMP 类型、富规则、网卡与源地址管理
http://www.dtcms.com/a/317536.html

相关文章:

  • LVS-DR模式高性能负载均衡实战
  • PLC学习之路-定时器-(三)
  • Fabric.js从入门学习到实现labelImg矩形多边形标注工具【上】
  • 论文学习19:Multi-view Aggregation Network for Dichotomous Image Segmentation
  • STM32江科大学习笔记,全功能按键非阻塞式实现,按键点击,双击,长按
  • 思途AOP学习笔记 0806
  • 网安学习no.22
  • Zookeeper集群在Kubernetes上的高可用部署方案
  • 什么是VR全景图?VR全景图有什么优势?
  • vite项目中集成vditor文档编辑器
  • 金融风控实战:Spring Boot + LightGBM 贷款预测模型服务化(超详细版)
  • 多链钱包开发指南:MPC无助记词方案+60+公链支持
  • 问题定位排查手记1 | 从Windows端快速检查连接状态
  • STM32的PWR
  • 阿里云polardb-x 2.0迁移至华为云taurusdb
  • VSCode:基础使用 / 使用积累
  • react16 umi3 快速刷新配置
  • 从技术角度看React和Vue:性能、生态与开发体验对比
  • 猎板视角下的 PCB 翘曲:成因、检测、工艺优化及解决措施热点解析
  • C++ Primer Plus 14.4.10 模板别名
  • 下载 | Windows Server 2019最新原版ISO映像!(集成7月更新、标准版、数据中心版、17763.7558)
  • ref存储对象和reactive深度响应式递归地对对象的嵌套属性进行响应式处理
  • 纯血鸿蒙(HarmonyOS NEXT)应用开发完全指南
  • Baumer相机如何通过YoloV8深度学习模型实现农作物水稻病虫害的检测识别(C#代码UI界面版)
  • 机器学习----随机森林(Random Forest)详解
  • MonoFusion 与 Genie 3
  • imx6ull-驱动开发篇10——pinctrl 子系统
  • Apollo中三种相机外参的可视化分析
  • ipv6学习
  • CVE-2020-24557