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

本文涉及的产品
云防火墙,500元 1000GB
简介: 【8月更文挑战第20天】

在 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 的基本用法和高级功能,可以帮助用户更有效地保护系统免受未经授权的访问,并应对各种网络安全挑战。通过合理配置防火墙规则,可以确保系统在提供服务的同时,保持高度的安全性和稳定性。

目录
相关文章
|
2月前
|
Linux 网络安全 Python
linux centos上安装python3.11.x详细完整教程
这篇文章提供了在CentOS系统上安装Python 3.11.x版本的详细步骤,包括下载、解压、安装依赖、编译配置、解决常见错误以及版本验证。
834 1
linux centos上安装python3.11.x详细完整教程
|
7天前
|
Linux Python
Linux 中某个目录中的文件数如何查看?这篇教程分分钟教会你!
在 Linux 系统中,了解目录下的文件数量是常见的需求。本文介绍了多种方法,包括使用 `ls` 和 `wc` 命令组合、`find` 命令、`tree` 命令以及编程方式(如 Python)。无论你是新手还是有经验的用户,都能找到适合自己的方法。掌握这些技巧将提高你在 Linux 系统中的操作效率。
18 4
|
1月前
|
网络协议 Ubuntu 网络安全
|
1月前
|
Linux Docker 容器
Centos安装docker(linux安装docker)——超详细小白可操作手把手教程,包好用!!!
本篇博客重在讲解Centos安装docker,经博主多次在不同服务器上测试,极其的稳定,尤其是阿里的服务器,一路复制命令畅通无阻。
541 4
Centos安装docker(linux安装docker)——超详细小白可操作手把手教程,包好用!!!
|
1月前
|
存储 数据可视化 Java
震惊!如何在linux下部署项目,部署/运行jar包 超详细保姆级教程!
如何在Linux系统下部署和运行Java项目jar包,包括传输文件到Linux、使用nohup命令运行jar包、查看端口状态、杀死进程和查看项目运行状态,以及如何解决“没有主清单属性”的错误。
414 1
震惊!如何在linux下部署项目,部署/运行jar包 超详细保姆级教程!
|
23天前
|
关系型数据库 MySQL Linux
基于阿里云服务器Linux系统安装Docker完整图文教程(附部署开源项目)
基于阿里云服务器Linux系统安装Docker完整图文教程(附部署开源项目)
191 2
|
3天前
|
存储 运维 Linux
Linux防火墙firewall的使用
CentOS 7 中的 firewalld 是基于 Netfilter 的防火墙服务,支持动态配置,无需重启服务即可生效。它通过区域管理网络流量,每个区域可以设置不同的防火墙规则。默认区域为 public,可以通过命令行工具 firewall-cmd 进行管理和配置。firewalld 提供了丰富的预定义服务和区域,方便用户根据需求进行灵活配置。
8 0
|
1月前
|
Linux C语言 C++
vsCode远程执行c和c++代码并操控linux服务器完整教程
这篇文章提供了一个完整的教程,介绍如何在Visual Studio Code中配置和使用插件来远程执行C和C++代码,并操控Linux服务器,包括安装VSCode、安装插件、配置插件、配置编译工具、升级glibc和编写代码进行调试的步骤。
195 0
vsCode远程执行c和c++代码并操控linux服务器完整教程
|
2月前
|
存储 Linux 5G
Linux 基于 LVM 逻辑卷的磁盘管理【简明教程】
这篇文章介绍了LVM(逻辑卷管理)如何提供灵活的磁盘管理方式,允许动态调整逻辑卷的大小而不会丢失数据。
Linux 基于 LVM 逻辑卷的磁盘管理【简明教程】
|
1月前
|
Linux 开发工具 Docker
各个类linux服务器安装docker教程
各个类linux服务器安装docker教程
55 0