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

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 跟踪防火墙行为。

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

相关文章:

  • 制作一款打飞机游戏24:键盘输入
  • OpenAI最新的4o图像生成模型 gpt-image-1 深度解析:API KEY 获取、开发代码示例
  • 待办事项日历组件实现
  • JAVA设计模式——(七)代理模式
  • 深度探索多模态数据:从声音到图像的奇妙世界
  • C++:继承机制详解
  • 「Java EE开发指南」如何使用MyEclipse的可视化JSF编辑器设计JSP?(一)
  • 【C++基础知识】C++ 模板元编程(Template Metaprogramming, TMP)技术详解
  • 欧拉安装宝塔等,报错Errors during downloading metadata for repository ‘OS‘
  • kaggle配置
  • 基于物联网的智能家居安全防护系统设计
  • WebUI可视化:第5章:WebUI高级功能开发
  • react 常用钩子 hooks 总结
  • WordPress AI 原创文章自动生成插件 24小时全自动生成SEO原创文章 | 多语言支持 | 智能配图与排版
  • Docker安装(Ubuntu22版)
  • 【Java学习日记26】:方法的重载
  • yum包管理器
  • 面试中被问到mybatis与jdbc有什么区别怎么办
  • aws(学习笔记第三十九课) iot-msk-pipeline
  • 设备接入与APP(应用程序)接入华为云iotDA平台的路径元素有哪些不同?
  • 剪纸纹样“流动”在水乡,谁不忆江南
  • 珠海市香洲区原区长刘齐英落马,此前已被终止省人大代表资格
  • 为国出征指纹却无法识别?他刷新了我军在这一项目的最好成绩
  • 巴印在克什米尔发生交火
  • 白俄罗斯驻华大使:应发挥政党作用,以对话平台促上合组织发展与合作
  • 审议民营经济促进法草案等,十四届全国人大常委会第十五次会议将举行