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

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

目录
相关文章
|
存储 监控 安全
比较入站和出站防火墙规则
本文介绍了入站与出站流量的区别,以及如何通过配置入站和出站防火墙规则来保护网络安全。入站规则拦截恶意来源的流量,防止攻击;出站规则监控合法流量,阻止数据泄露。同时,推荐使用 EventLog Analyzer 工具实时监控防火墙规则变更、简化日志审计、分析流量和审核 VPN 日志,帮助构筑更安全的网络防线,快速响应潜在威胁。
1905 1
|
安全 Linux 开发工具
【Linux】vim使用与配置教程
Vim是一款功能强大的文本编辑器,广泛应用于Linux环境,是开发者和系统管理员的必备工具。本文介绍了Vim的基本操作与简单配置,涵盖命令模式、插入模式和底行模式的使用方法,以及光标定位、复制粘贴、搜索替换等常用技巧。同时,文章还提供了实用的分屏操作和代码注释方法,并分享了通过`.vimrc`文件进行个性化配置(如显示行号、语法高亮、自动缩进等)的技巧,帮助用户提升文本编辑效率。掌握这些内容,能让Vim更好地服务于日常工作与开发需求。
1147 3
|
12月前
|
NoSQL 关系型数据库 Linux
ERPNext 搭建教程:Linux 一键部署与维护
ERPNext 是一款开源免费的企业资源计划系统,适用于中小企业信息化管理。基于 Python 和 Frappe 框架开发,支持财务、销售、人力、库存等模块,具备高度可定制性。本文介绍如何通过 Websoft9 在 Linux 下快速部署 ERPNext,并提供环境配置、系统维护等实用建议,适合开发者和企业用户快速上手。
2216 7
ERPNext 搭建教程:Linux 一键部署与维护
|
11月前
|
弹性计算 安全 Linux
阿里云服务器ECS安装宝塔Linux面板、安装网站(新手图文教程)
本教程详解如何在阿里云服务器上安装宝塔Linux面板,涵盖ECS服务器手动安装步骤,包括系统准备、远程连接、安装命令执行、端口开放及LNMP环境部署,手把手引导用户快速搭建网站环境。
|
Unix Linux 编译器
windows下和linux下cmake的规则有区别吗
通过合理使用CMake的条件逻辑和平台特定的配置选项,开发者可以编写更加灵活和健壮的CMake脚本,确保项目在Windows和Linux上的一致性和可移植性。
735 76
|
安全 Java Linux
Linux安装Elasticsearch详细教程
Linux安装Elasticsearch详细教程
2355 64
|
Java Linux 网络安全
Linux云端服务器上部署Spring Boot应用的教程。
此流程涉及Linux命令行操作、系统服务管理及网络安全知识,需要管理员权限以进行配置和服务管理。务必在一个测试环境中验证所有步骤,确保一切配置正确无误后,再将应用部署到生产环境中。也可以使用如Ansible、Chef等配置管理工具来自动化部署过程,提升效率和可靠性。
1086 13
|
11月前
|
Ubuntu 网络协议 Unix
Linux教程(Ubuntu为蓝本)之Linux介绍篇
SuSE嫁到了Novell,SCO继续顶着骂名四处强行“化缘”, Asianux, MandrakeSoft也在五年中首次宣布季度赢利。3月,SGI宣布成功实现了Linux操作系统支持256个Itanium 2处理器。[1-2]
|
11月前
|
Ubuntu Linux 数据安全/隐私保护
Win10安装Linux子系统教程!如何在Win10系统中安装Ubuntu!
登录系统后,输入cd /返回上一级,然后再输入“ls”查看一下系统文件目录,看看对不对!
|
存储 IDE Linux
零基础保姆级教程!手把手教你免费玩转Linux CentOS安装+学习环境搭建(附避坑指南)
本文详细介绍了在VMware虚拟机中安装CentOS 6.8的全过程。首先,需确保已安装VMware并开启V-CPU虚拟化功能,可通过BIOS设置或使用LeoMoon CPU-V工具检测。接着,下载CentOS镜像文件,并在VMware中新建虚拟机,配置CPU、内存、硬盘等参数。最后,加载ISO镜像启动虚拟机,按照提示完成CentOS的安装,包括语言、键盘、存储方式、地区、密码设置及硬盘分区等步骤。安装完成后,以root用户登录即可进入系统桌面,开始学习Linux命令和操作。
1492 12
零基础保姆级教程!手把手教你免费玩转Linux CentOS安装+学习环境搭建(附避坑指南)