CentOS系统防火墙服务介绍
CentOS 系统使用的是 firewalld 防火墙服务(从 CentOS 7 开始),它基于 zone(区域) 和 service(服务) 的机制来配置网络访问控制,替代了传统的 iptables
。
iptables
是 Linux 系统中用于管理网络流量和防火墙规则的核心工具,基于 内核级的网络包过滤机制(Netfilter)。它通过定义一系列规则,控制进出服务器的数据包,实现流量过滤、网络地址转换(NAT)、端口转发等功能,是 Linux 网络安全的重要组成部分。
一、firewalld 基础命令
✅ 1. 查看防火墙状态
sudo firewall-cmd --state
返回 running
表示已开启。
✅ 2. 查看当前开放的服务(推荐)
sudo firewall-cmd --list-services
返回结果示例:
ssh dhcpv6-client http https
表示当前区域放行了 ssh
、http
等服务。
✅ 3. 查看开放的端口(数字端口)
sudo firewall-cmd --list-ports
返回示例:
8080/tcp 3306/tcp
这些是你显式添加的数字端口。
✅ 4. 查看默认区域(Zone)
sudo firewall-cmd --get-default-zone
默认一般是 public
。
✅ 5. 查看指定区域的全部规则
sudo firewall-cmd --zone=public --list-all
二、常用配置命令
✅ 1. 开放指定端口(如 8080)
sudo firewall-cmd --zone=public --add-port=8080/tcp --permanent
然后重载使其生效:
sudo firewall-cmd --reload
✅ 2. 删除开放的端口
sudo firewall-cmd --zone=public --remove-port=8080/tcp --permanent
sudo firewall-cmd --reload
✅ 3. 放行一个服务(如 ssh、http、mysql)
sudo firewall-cmd --zone=public --add-service=ssh --permanent
sudo firewall-cmd --reload
Firewalld 中服务是预定义的,比如 ssh
= 22,http
= 80,mysql
= 3306。
✅ 4. 永久关闭防火墙(不推荐)
sudo systemctl stop firewalld
sudo systemctl disable firewalld
✅ 5. 临时关闭防火墙
sudo systemctl stop firewalld
三、systemctl命令打开关闭的防火墙
✅ 第一步:启动 firewalld 服务(立即生效)
sudo systemctl start firewalld
这条命令会立即启动防火墙服务。
✅ 第二步:设置开机自动启动(永久开启)
sudo systemctl enable firewalld
这条命令确保 firewalld 在系统重启后会自动启动。
✅ 第三步:检查 firewalld 状态
sudo systemctl status firewalld
如果运行成功,你会看到类似:
● firewalld.service - firewalld - dynamic firewall daemon Loaded: loaded (/usr/lib/systemd/system/firewalld.service; enabled; vendor preset: enabled) Active: active (running) since ...
补充:如果你之前彻底关闭了防火墙
你可以用以下命令检查并取消关闭状态:
sudo systemctl unmask firewalld
然后再执行上面的 start
和 enable
。