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

firewalld 详解

firewalld 详解

firewalld 是 Linux 系统中一个动态防火墙管理工具,取代了传统的 iptables,提供更灵活、动态的规则配置,支持运行时修改且无需重载服务。以下是其核心概念、常用操作及示例指南:


一、核心概念
  1. 区域(Zone)
    定义网络环境的信任级别,不同区域绑定不同规则。常用预置区域:

    • public:默认区域,适用于不信任的公共网络。
    • home:家庭网络,允许部分服务(如SSH、打印机)。
    • internal:内部网络,信任度高于 home
    • trusted:允许所有流量。
  2. 服务(Service)
    预定义规则集合(如 httpssh),包含端口和协议,简化配置:

    sudo firewall-cmd --list-services  # 查看允许的服务
    
  3. 端口与协议
    支持手动开放端口(TCP/UDP):

    sudo firewall-cmd --add-port=8080/tcp  # 开放TCP 8080端口
    
  4. 富规则(Rich Rules)
    复杂规则配置,支持IP、端口范围、限速等:

    sudo firewall-cmd --add-rich-rule='rule family="ipv4" source address="192.168.1.0/24" port port="3306" protocol="tcp" accept'
    
  5. 直接规则(Direct Rules)
    直接调用底层 iptables/ip6tables 命令(高级使用):

    sudo firewall-cmd --direct --add-rule ipv4 filter INPUT 1 -p tcp --dport 9090 -j ACCEPT
    

二、常用命令
功能命令示例
查看状态sudo firewall-cmd --state
默认区域sudo firewall-cmd --get-default-zone
修改默认区域sudo firewall-cmd --set-default-zone=internal
列出所有区域sudo firewall-cmd --list-all-zones
添加服务sudo firewall-cmd --zone=public --add-service=http
开放端口sudo firewall-cmd --zone=public --add-port=443/tcp
重载配置sudo firewall-cmd --reload
永久生效添加 --permanent 参数,随后重载:
sudo firewall-cmd --permanent --add-port=8080/tcp

三、配置示例
  1. 允许 HTTP/HTTPS 流量

    sudo firewall-cmd --zone=public --add-service=http --permanent
    sudo firewall-cmd --zone=public --add-service=https --permanent
    sudo firewall-cmd --reload
    
  2. 限制 SSH 访问(仅允许 192.168.1.0/24 网段)

    sudo firewall-cmd --zone=public --add-rich-rule='rule family="ipv4" source address="192.168.1.0/24" service name="ssh" accept' --permanent
    sudo firewall-cmd --reload
    
  3. 转发端口(将80端口转发到内部8080)

    sudo firewall-cmd --zone=public --add-forward-port=port=80:proto=tcp:toport=8080 --permanent
    sudo firewall-cmd --reload
    

四、注意事项
  1. 防止锁定
    测试规则前确保允许当前SSH连接,或设置宽限期:

    sudo firewall-cmd --panic-on   # 紧急模式(阻断所有流量)
    sudo firewall-cmd --panic-off  # 恢复
    
  2. 备份配置
    备份 /etc/firewalld/ 目录下的配置文件(如 zones/services/)。

  3. 日志与监控
    查看防火墙日志(通常位于 /var/log/messagesjournalctl -u firewalld)。


五、总结

firewalld 通过动态管理、区域划分和预定义服务简化了防火墙配置,适合需要灵活调整规则的场景(如服务器、多网络环境)。掌握核心概念与常用命令后,可高效保障系统安全,避免网络攻击。

👉 提示: 使用 man firewall-cmdfirewall-cmd --help 获取更多参数细节。

以下是对 firewalld 常用命令的详细解析,涵盖基础配置、服务管理、端口操作及高级规则的定义。通过这些命令可以高效管理 Linux 系统的防火墙策略。


firewalld 常用命令

一、基础状态与配置

1. 查看防火墙状态
firewall-cmd --state
  • 功能:检查 firewalld 是否正在运行。
  • 输出:running(运行中)或 not running(未运行)。

2. 查看默认区域
firewall-cmd --get-default-zone
  • 功能:显示当前默认的防火墙区域(如 publichomeinternal)。
  • 典型场景:确认新网络接口自动绑定的区域。

3. 修改默认区域
firewall-cmd --set-default-zone=internal
  • 功能:将默认区域更改为 internal(或其他预定义区域)。
  • 注意:修改会立即生效,但不影响已绑定的接口

4. 列出所有区域详情
firewall-cmd --list-all-zones
  • 功能:显示所有区域(zones)的详细配置(服务、端口、来源IP等)。
  • 简化版:使用 --zone=public --list-all 查看特定区域。

二、服务与端口管理

1. 允许服务通过防火墙
firewall-cmd --zone=public --add-service=http
  • 功能:在 public 区域允许 http 服务(预定义端口80/tcp)。
  • 永久生效:添加 --permanent 参数,并执行 firewall-cmd --reload
2. 移除已允许的服务
firewall-cmd --zone=public --remove-service=ssh
  • 功能:在 public 区域移除对 ssh 服务的放行。
  • 紧急场景:若误封了SSH,通过物理控制台或KVM恢复。

3. 开放自定义端口
firewall-cmd --zone=public --add-port=8080/tcp
  • 功能:手动开放TCP端口 8080
  • 多端口:支持范围 3000-4000/udp
4. 查看已开放的端口
firewall-cmd --zone=public --list-ports

三、IP与网络规则

1. 允许特定IP访问
firewall-cmd --zone=public --add-source=192.168.1.10
  • 功能:允许来自 192.168.1.10 的所有流量通过 public 区域。
  • 网段支持:使用 192.168.1.0/24 表示整个子网。
2. 拒绝某IP的流量
firewall-cmd --zone=public --add-source=10.0.0.5 --set-target=DROP
  • 功能:将来自 10.0.0.5 的流量全部丢弃。

四、高级规则(Rich Rules)

适用于复杂场景,支持端口、IP、协议等多条件组合。

1. 限速规则(如每秒允许2个连接)
firewall-cmd --zone=public --add-rich-rule='rule family="ipv4"source address="192.168.1.0/24"port port="22" protocol="tcp"limit value="2/s" accept'
2. 拒绝某个IP访问特定端口
firewall-cmd --zone=public --add-rich-rule='rule family="ipv4"source address="203.0.113.50"port port="80" protocol="tcp"reject'

五、端口转发与NAT

1. 将外部80端口转发到内部8080
firewall-cmd --zone=public --add-forward-port=port=80:proto=tcp:toport=8080
  • 要求:启用IP伪装(masquerade)以实现NAT:
firewall-cmd --zone=public --add-masquerade

六、临时与永久规则

1. 临时规则(测试用)
  • 若不添加 --permanent,规则将在重启后失效。
  • 示例:临时允许MySQL端口:
firewall-cmd --zone=public --add-port=3306/tcp
2. 永久规则(需重载生效)
firewall-cmd --permanent --zone=public --add-port=3306/tcp
firewall-cmd --reload
  • 注意:直接修改配置文件(/etc/firewalld/)后也需重载。

七、应急操作

1. 紧急阻断所有流量
firewall-cmd --panic-on
  • 恢复命令:
firewall-cmd --panic-off

八、命令总结表

类别命令示例
服务管理firewall-cmd --add-service=ftp --permanent
端口管理firewall-cmd --remove-port=9090/udp
IP规则firewall-cmd --add-source=172.16.0.0/16 --zone=trusted
富规则firewall-cmd --add-rich-rule='rule family="ipv6" drop' --permanent
重载配置firewall-cmd --reload

九、注意事项

  1. 操作顺序:建议先测试临时规则,确认无误后再保存为永久规则。
  2. 防锁定:修改远程服务(如SSH)规则时,确保留有恢复途径。
  3. 日志监控:通过 journalctl -u firewalld 跟踪防火墙行为。

掌握这些命令后,可灵活应对服务器部署、网络隔离、端口转发等典型场景。

http://www.xdnf.cn/news/1924.html

相关文章:

  • 微信小程序蓝牙连接打印机打印单据完整Demo【蓝牙小票打印】
  • 【prompt是什么?有哪些技巧?】
  • Linux操作系统复习
  • 3D模型文件格式之《STL格式介绍》
  • SSH服务介绍
  • string的基本使用
  • uniapp自定义封装tabbar
  • 探索亚马逊云科技:开启您的云计算之旅
  • Safety Estimands与Efficacy Estimands的差异剖析
  • 模式设计简介
  • 北斗导航 | 北斗卫星导航单点定位精度提升方法总结,原理,公式,关键代码
  • 架构师面试(三十六):广播消息
  • websheet 之 sheet操作
  • c++11新特性随笔
  • 使用开源免费雷池WAF防火墙,接入保护你的网站
  • Shell 脚本入门:从零开始写自动化脚本
  • 代码随想录算法训练营day11(二叉树)
  • 轻量级静态网站托管:服务器配置与网站性能深入探讨
  • Sui 携手 xMoney 和 xPortal 推出虚拟万事达卡,拓展现实支付场景接入
  • 分布式ID生成方案详解
  • 软件为什么需要性能测试?软件测试机构性能测试注意事项有哪些?
  • 实时数据驱动未来:谷云科技CDC实时数据集成平台新版本发布
  • JAVA常用分布式锁Redisson
  • 大模型驱动智能服务变革:从全流程赋能到行业纵深落地
  • WHAT - 前端开发书单推荐
  • 带宽?增益带宽积?压摆率?
  • 基于物联网的智能家居安全防护系统设计
  • Java 24 深度解析:云原生时代的性能更新与安全重构
  • 用 Python 打造打篮球字符动画!控制台彩色炫酷输出,抖音搞怪视频灵感还原
  • 基于 Python(selenium) 的今日头条定向爬虫:根据输入的关键词在今日头条上进行搜索,并爬取新闻详情页的内容