温馨提示×

centos防火墙怎么用

小樊
36
2025-11-01 10:30:22
栏目: 智能运维

CentOS防火墙(firewalld)使用指南
firewalld是CentOS 7及以上版本默认的防火墙管理工具,支持动态配置、区域(Zone)划分和富规则(Rich Rules),能有效控制网络流量。以下是其核心用法:

1. 基础状态管理

  • 查看防火墙状态:确认防火墙是否运行及版本信息。
    systemctl status firewalld    # 查看服务状态(active表示运行中)
    firewall-cmd --state          # 直接查看防火墙状态(running表示运行中)
    
  • 启动/停止防火墙:临时开启或关闭防火墙(重启后失效)。
    systemctl start firewalld     # 启动防火墙
    systemctl stop firewalld      # 停止防火墙
    
  • 设置开机自启:控制防火墙是否随系统启动自动运行。
    systemctl enable firewalld    # 开机自启
    systemctl disable firewalld   # 禁止开机自启
    
  • 重启防火墙:应用配置变更或恢复默认状态。
    systemctl restart firewalld   # 重启服务
    

2. 端口管理(常用操作)

  • 开放端口:允许指定端口(如HTTP的80/tcp、HTTPS的443/tcp)的外部访问,--permanent表示永久生效(需重载配置)。
    firewall-cmd --zone=public --add-port=80/tcp --permanent    # 开放80端口
    firewall-cmd --reload                                       # 重载配置使变更生效
    
  • 关闭端口:移除已开放的端口规则。
    firewall-cmd --zone=public --remove-port=80/tcp --permanent # 关闭80端口
    firewall-cmd --reload                                       # 重载配置
    
  • 查看开放端口:列出当前所有开放的端口。
    firewall-cmd --zone=public --list-ports                     # 查看public区域的开放端口
    

3. 服务管理(基于预定义服务)

firewalld内置了常见服务(如SSH、FTP、MySQL)的规则,可直接通过服务名管理,无需记忆端口号。

  • 开放服务:允许指定服务通过防火墙。
    firewall-cmd --zone=public --add-service=ssh --permanent    # 开放SSH服务(默认端口22)
    firewall-cmd --reload                                       # 重载配置
    
  • 关闭服务:移除服务的防火墙规则。
    firewall-cmd --zone=public --remove-service=ssh --permanent # 关闭SSH服务
    firewall-cmd --reload                                       # 重载配置
    
  • 查看开放服务:列出当前所有开放的服务。
    firewall-cmd --zone=public --list-services                  # 查看public区域的开放服务
    

4. 自定义规则(富规则)

富规则(Rich Rules)支持更细粒度的控制,如限制特定IP地址、端口范围或协议。

  • 允许特定IP访问端口:仅允许指定IP(如192.168.1.100)访问某端口(如8080/tcp)。
    firewall-cmd --permanent --zone=public --add-rich-rule='rule family="ipv4" source address="192.168.1.100" port protocol="tcp" port="8080" accept'
    firewall-cmd --reload                                       # 重载配置
    
  • 拒绝特定IP访问:禁止指定IP(如192.168.1.200)访问所有端口。
    firewall-cmd --permanent --zone=public --add-rich-rule='rule family="ipv4" source address="192.168.1.200" reject'
    firewall-cmd --reload                                       # 重载配置
    
  • 允许端口范围:开放一段端口(如3000-4000/tcp)供访问。
    firewall-cmd --permanent --zone=public --add-port=3000-4000/tcp
    firewall-cmd --reload                                       # 重载配置
    

5. 区域(Zone)管理

区域是firewalld的核心概念,代表不同的信任级别(如public、home、internal),每个区域包含预定义的规则集。

  • 查看所有区域:列出系统支持的区域。
    firewall-cmd --get-zones                                    # 查看所有可用区域
    
  • 查看当前默认区域:确认系统默认使用的区域(新连接默认应用的区域)。
    firewall-cmd --get-default-zone                             # 查看默认区域
    
  • 设置默认区域:更改默认区域(如改为home区域,适用于家庭网络)。
    firewall-cmd --set-default-zone=home                        # 设置默认区域为home
    
  • 查看活动区域:显示当前正在使用的区域及其绑定的接口。
    firewall-cmd --get-active-zones                             # 查看活动区域及接口
    

6. 其他实用操作

  • 刷新配置:强制应用所有未生效的规则(不会中断现有连接)。
    firewall-cmd --reload                                       # 重新加载配置
    
  • 完全重载配置:重启防火墙服务(会中断现有连接,慎用)。
    firewall-cmd --complete-reload                              # 完全重载配置
    
  • 删除所有规则:清空当前所有防火墙规则(恢复初始状态)。
    firewall-cmd --flush-rules                                  # 清空所有规则
    

注意事项

  • 生产环境谨慎操作:修改规则前需确认不影响现有服务(如避免误关闭SSH端口导致无法远程登录)。
  • 持久化规则:添加规则时务必加上--permanent参数,否则重启后会失效。
  • 备份配置:修改配置前建议备份/etc/firewalld/目录下的文件(如public.xml)。

通过以上命令,可满足CentOS系统日常防火墙管理需求,保障服务器网络安全。

0