阅读量:31
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系统日常防火墙管理需求,保障服务器网络安全。