在 CentOS 系统中,防火墙的状态查看方法取决于所使用的防火墙服务。CentOS 7 及以上版本默认使用 firewalld,而旧版本可能使用 iptables。以下是具体操作步骤:

一、查看防火墙


1. 查看 firewalld 状态(CentOS 7/8/9)

1
2
3
4
5
# 检查 firewalld 是否运行
sudo systemctl status firewalld

# 或使用以下命令查看防火墙规则状态
sudo firewall-cmd --state
  • 输出说明
    • running 表示防火墙已启用。
    • deadnot running 表示防火墙已关闭。
1
2
3
4
5
6
7
8
9
10
[root@instance-20250606-0334 3x-ui]# sudo systemctl status firewalld
● firewalld.service - firewalld - dynamic firewall daemon
Loaded: loaded (/usr/lib/systemd/system/firewalld.service; disabled; vendor preset: enabled)
Active: active (running) since 四 2025-06-05 19:40:51 GMT; 3 days ago
Docs: man:firewalld(1)
Main PID: 1028 (firewalld)
CGroup: /system.slice/firewalld.service
└─1028 /usr/bin/python2 -Es /usr/sbin/firewalld --nofork --nopid

Warning: Journal has been rotated since unit was started. Log output is incomplete or unavailable.

其他常用命令

1
2
3
4
5
# 查看防火墙详细规则
sudo firewall-cmd --list-all

# 查看默认区域(默认规则集)
sudo firewall-cmd --get-default-zone
1
2
3
4
5
6
7
8
9
10
11
12
13
14
[root@instance-20250606-0334 3x-ui]# sudo firewall-cmd --list-all
public (active)
target: default
icmp-block-inversion: no
interfaces: ens3
sources:
services: dhcpv6-client ssh
ports:
protocols:
masquerade: no
forward-ports:
source-ports:
icmp-blocks:
rich rules:

2. 查看 iptables 状态(CentOS 6 或旧版本)

1
2
3
4
5
# 检查 iptables 服务状态(CentOS 6)
sudo service iptables status

# 或直接查看规则
sudo iptables -L -n -v
  • 如果输出中显示规则列表,则防火墙可能已启用;若为空或提示未加载,则可能已关闭。

3. 检查防火墙服务是否开机自启

1
2
3
4
5
# 查看 firewalld 是否开机自启
sudo systemctl is-enabled firewalld

# 查看 iptables 是否开机自启(CentOS 6)
sudo chkconfig --list iptables

4. 临时关闭/启用防火墙

1
2
3
4
5
6
7
8
9
10
11
12
# 临时关闭 firewalld
sudo systemctl stop firewalld

# 临时启用 firewalld
sudo systemctl start firewalld

# 永久禁用(需重启生效)
sudo systemctl disable firewalld

# 设置开机自启
sudo systemctl enable firewalld


注意事项

  • 如果系统未安装 firewalld,可先安装:
    1
    sudo yum install firewalld
  • 对于生产环境,建议保持防火墙启用状态,并通过规则放行必要端口(如 SSH、HTTP 等)。

二、查看防火墙

在 CentOS 7 中,开启端口需要通过 firewalld 防火墙服务管理。以下是详细步骤和说明:


1. 确认防火墙状态

确保 firewalld 已启用并运行:

1
sudo systemctl status firewalld

  • 如果未运行,启动服务:
    1
    2
    sudo systemctl start firewalld
    sudo systemctl enable firewalld # 设置开机自启

2. 添加端口规则

使用 firewall-cmd 命令永久开放端口(以开放 8080/TCP 为例):

1
2
3
4
5
6
7
8
# 临时开放(重启后失效)
sudo firewall-cmd --zone=public --add-port=8080/tcp

# 永久开放(推荐)
sudo firewall-cmd --zone=public --add-port=8080/tcp --permanent

# 重新加载防火墙配置(使永久规则生效)
sudo firewall-cmd --reload

参数说明

  • --zone=public:指定区域(默认是 public,可根据需求调整)。
  • --add-port=端口号/协议:协议可以是 tcpudp
  • --permanent:标记规则为永久生效(需配合 --reload)。

3. 验证端口是否开放

1
2
3
4
5
# 查看已开放的端口
sudo firewall-cmd --zone=public --list-ports

# 或检查详细规则
sudo firewall-cmd --list-all
  • 输出应包含 8080/tcp(或您指定的端口)。

4. 开放端口范围

如果需要开放连续端口(如 30000-32767):

1
2
sudo firewall-cmd --zone=public --add-port=30000-32767/tcp --permanent
sudo firewall-cmd --reload


5. 开放特定服务的端口

如果端口对应某个服务(如 HTTP/HTTPS),可以直接开放服务:

1
2
3
4
5
6
7
# 开放 HTTP(默认端口 80)
sudo firewall-cmd --zone=public --add-service=http --permanent

# 开放 HTTPS(默认端口 443)
sudo firewall-cmd --zone=public --add-service=https --permanent

sudo firewall-cmd --reload

  • 支持的服务列表:通过 firewall-cmd --get-services 查看。

6. 移除端口规则

如果需要关闭端口:

1
2
3
4
5
6
# 临时移除
sudo firewall-cmd --zone=public --remove-port=8080/tcp

# 永久移除
sudo firewall-cmd --zone=public --remove-port=8080/tcp --permanent
sudo firewall-cmd --reload


注意事项

  1. 端口冲突:确保端口未被其他服务占用(如 Apache/Nginx 默认占用 80/443)。
  2. 安全建议
    • 仅开放必要的端口。
    • 避免直接开放高危端口(如 22/SSH 建议修改默认端口或使用密钥认证)。
  3. SELinux:如果启用了 SELinux,可能需要额外配置(如 semanage port 命令)。

示例场景

假设需要开放 MySQL 的默认端口 3306

1
2
sudo firewall-cmd --zone=public --add-port=3306/tcp --permanent
sudo firewall-cmd --reload


三、常用示例


场景 1:开放 Web 服务(80/443)

  • 云安全策略
    • 允许所有 IP 访问 80/443(或限制特定 IP)。
  • 操作系统防火墙
    • 开放 80/443 端口:
      1
      2
      3
      sudo firewall-cmd --zone=public --add-service=http --permanent
      sudo firewall-cmd --zone=public --add-service=https --permanent
      sudo firewall-cmd --reload

场景 2:仅限内部访问的数据库(3306)

  • 云安全策略
    • 仅允许内部子网 IP 访问 3306 端口。
  • 操作系统防火墙
    • 开放 3306 端口(但云策略已限制,可省略此步骤)。

总结

  • 可以关闭操作系统防火墙,但需确保云安全策略足够严格,并评估风险。
  • 推荐保留防火墙,作为云安全策略的补充,提供多层次防护。
  • 关键原则
    • 云安全策略是第一道防线,必须严格配置。
    • 操作系统防火墙是第二道防线,用于细化规则或防止配置错误。

根据实际需求和安全要求,选择最适合的方案。