Linux 防火墙解锁规则与 `firewall-cmd` 教程

举报
wljslmz 发表于 2024/08/20 17:08:01 2024/08/20
【摘要】 在 Linux 系统中,防火墙是保护系统安全的重要工具。它通过设定规则来控制网络流量,阻止未经授权的访问,并防御潜在的攻击。firewalld 是一种流行的动态防火墙管理工具,它基于 iptables,提供了更高效、更灵活的防火墙管理方式。本文将详细介绍如何使用 firewall-cmd 命令来解锁规则和配置防火墙。 一、firewalld 概述firewalld 是一个前端工具,用于管理防...

在 Linux 系统中,防火墙是保护系统安全的重要工具。它通过设定规则来控制网络流量,阻止未经授权的访问,并防御潜在的攻击。firewalld 是一种流行的动态防火墙管理工具,它基于 iptables,提供了更高效、更灵活的防火墙管理方式。本文将详细介绍如何使用 firewall-cmd 命令来解锁规则和配置防火墙。

一、firewalld 概述

firewalld 是一个前端工具,用于管理防火墙配置,它提供了一种简化的方式来管理 iptables 规则。firewalld 的设计基于区域(zone)和服务(service)的概念,使防火墙配置更加灵活和易于管理。

  • 区域(Zone):表示不同网络的安全级别,允许用户为不同的网络接口分配不同的区域。
  • 服务(Service):预定义的网络服务(如 HTTP、SSH)规则,简化了对常见服务的配置。

二、安装 firewalld

在大多数 Linux 发行版中,firewalld 通常是预安装的。如果没有安装,可以使用包管理工具进行安装:

  • Debian/Ubuntu 系统

    sudo apt update
    sudo apt install firewalld
    
  • Red Hat/CentOS 系统

    sudo yum install firewalld
    

安装完成后,可以启动并启用 firewalld 服务:

sudo systemctl start firewalld
sudo systemctl enable firewalld

三、firewall-cmd 基本用法

firewall-cmdfirewalld 的命令行界面工具,用于管理防火墙规则。基本命令格式如下:

firewall-cmd [选项] [命令] [参数]

四、查看防火墙状态

  1. 检查防火墙状态

    查看 firewalld 是否正在运行:

    sudo firewall-cmd --state
    

    如果返回 running,说明 firewalld 正在运行。

  2. 查看当前区域和规则

    显示默认区域和已配置的规则:

    sudo firewall-cmd --get-active-zones
    sudo firewall-cmd --list-all
    

    --get-active-zones 命令显示当前激活的区域,--list-all 命令显示当前区域的所有规则。

五、配置防火墙规则

  1. 添加和删除服务

    firewalld 提供了预定义的服务配置文件,允许通过服务名称来简化规则设置。例如,允许 HTTP 服务:

    • 允许 HTTP 服务

      sudo firewall-cmd --zone=public --add-service=http
      
    • 删除 HTTP 服务

      sudo firewall-cmd --zone=public --remove-service=http
      

    这些命令会立即生效,但不会持久化到系统重启。要使更改持久化,使用 --permanent 选项:

    • 持久化允许 HTTP 服务

      sudo firewall-cmd --zone=public --add-service=http --permanent
      
    • 持久化删除 HTTP 服务

      sudo firewall-cmd --zone=public --remove-service=http --permanent
      
  2. 添加和删除端口

    除了服务,firewalld 还允许直接通过端口号来配置规则:

    • 允许 TCP 端口 8080

      sudo firewall-cmd --zone=public --add-port=8080/tcp
      
    • 删除 TCP 端口 8080

      sudo firewall-cmd --zone=public --remove-port=8080/tcp
      

    同样地,要使更改持久化,使用 --permanent 选项:

    • 持久化允许 TCP 端口 8080

      sudo firewall-cmd --zone=public --add-port=8080/tcp --permanent
      
    • 持久化删除 TCP 端口 8080

      sudo firewall-cmd --zone=public --remove-port=8080/tcp --permanent
      
  3. 配置区域

    firewalld 支持将网络接口分配到不同的区域,每个区域可以有不同的规则。查看所有区域的详细信息:

    sudo firewall-cmd --list-all-zones
    
    • 将接口分配到区域

      sudo firewall-cmd --zone=home --change-interface=eth0
      
    • 设置区域的默认策略

      sudo firewall-cmd --set-default-zone=home
      
  4. 配置服务和端口的访问控制

    firewalld 允许设置服务和端口的访问控制策略,包括源 IP 地址和协议。比如,只允许某个 IP 地址访问端口:

    • 允许来自特定 IP 的访问

      sudo firewall-cmd --zone=public --add-rich-rule='rule family="ipv4" source address="192.168.1.100" port port=8080 protocol=tcp accept'
      
    • 删除特定 IP 的访问

      sudo firewall-cmd --zone=public --remove-rich-rule='rule family="ipv4" source address="192.168.1.100" port port=8080 protocol=tcp accept'
      

    --add-rich-rule--remove-rich-rule 选项用于添加和删除复杂的访问控制规则。

六、查看和验证规则

  1. 查看当前配置

    查看当前区域的所有规则:

    sudo firewall-cmd --list-all
    

    查看所有区域的详细信息:

    sudo firewall-cmd --list-all-zones
    
  2. 验证规则

    验证防火墙规则是否按预期生效:

    sudo firewall-cmd --zone=public --list-all
    

    这将显示 public 区域的所有规则,包括服务、端口和其它设置。

七、管理 firewalld 服务

  1. 重新加载配置

    在修改了防火墙配置后,使用以下命令重新加载配置使更改生效:

    sudo firewall-cmd --reload
    
  2. 禁用和启用防火墙

    • 禁用防火墙

      sudo systemctl stop firewalld
      
    • 启用防火墙

      sudo systemctl start firewalld
      
    • 禁用防火墙开机启动

      sudo systemctl disable firewalld
      
    • 启用防火墙开机启动

      sudo systemctl enable firewalld
      

八、总结

firewalld 是一个功能强大的防火墙管理工具,通过 firewall-cmd 命令,可以灵活地配置防火墙规则,管理网络流量,确保系统安全。掌握 firewall-cmd 的基本用法和高级功能,可以帮助用户更有效地保护系统免受未经授权的访问,并应对各种网络安全挑战。通过合理配置防火墙规则,可以确保系统在提供服务的同时,保持高度的安全性和稳定性。

【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。