引言

CentOS 7 系统默认使用 firewalld 作为防火墙管理工具,相较于传统的 iptables,firewalld 提供了更加灵活和动态的防火墙管理方式。本文将详细介绍如何在 CentOS 7 系统中查看和管理防火墙规则,帮助您更好地保护系统安全。

Firewalld 基础概念

什么是 Firewalld?

Firewalld 是一个动态管理防火墙的守护进程,提供基于区域的网络流量管理。它允许在不中断现有连接的情况下动态更改规则,并根据不同的区域(zone)定义不同的规则。

Firewalld 的特性

  • 动态管理:支持在不中断现有连接的情况下动态更改规则。
  • 区域概念:基于信任级别定义不同的区域,每个区域有不同的规则。
  • 服务管理:可以通过服务名称而不是端口号来配置规则。
  • 接口绑定:可以将网络接口绑定到特定的区域。
  • 丰富的接口:提供命令行工具 firewall-cmd 和图形界面工具(如 firewall-config)进行管理。

Firewalld 与 iptables 的区别

  • 设计理念和管理方式
    • iptables:使用静态规则集,所有规则在启动时加载到内核并在运行时保持不变。任何更改都需要重新应用整个规则集。
    • firewalld:支持动态修改单条规则,不需要像 iptables 那样,在修改了规则后必须得全部刷新才可以生效。

查看与管理防火墙规则

查看当前防火墙状态

firewall-cmd --state

输出结果为 running 表示防火墙正在运行。

查看当前激活的规则

firewall-cmd --list-all

输出结果将显示所有激活的规则,包括服务和接口。

查看特定区域的规则

firewall-cmd --get-active-zones

输出结果将显示所有区域的激活状态,您可以使用以下命令查看特定区域的规则:

firewall-cmd --zone=区域名称 --list-all

添加规则

以下是一些常用的添加规则命令:

  • 允许特定端口:
    
    firewall-cmd --zone=区域名称 --add-port=端口号/tcp
    
  • 允许特定服务:
    
    firewall-cmd --zone=区域名称 --add-service=服务名称
    
  • 允许特定接口:
    
    firewall-cmd --zone=区域名称 --add-interface=接口名称
    

删除规则

以下是一些常用的删除规则命令:

  • 删除特定端口:
    
    firewall-cmd --zone=区域名称 --remove-port=端口号/tcp
    
  • 删除特定服务:
    
    firewall-cmd --zone=区域名称 --remove-service=服务名称
    
  • 删除特定接口:
    
    firewall-cmd --zone=区域名称 --remove-interface=接口名称
    

保存规则

Firewalld 规则默认不会在重启后自动保存。要保存规则,可以使用以下命令:

firewall-cmd --reload

或者

firewall-cmd --permanent --reload

总结

通过本文的介绍,相信您已经掌握了在 CentOS 7 系统中查看和管理防火墙规则的方法。合理配置防火墙规则,可以有效提高系统的安全性。