centos防火墙
在 CentOS 系统中,防火墙的状态查看方法取决于所使用的防火墙服务。CentOS 7 及以上版本默认使用 firewalld
,而旧版本可能使用 iptables
。以下是具体操作步骤:
一、查看防火墙
1. 查看 firewalld 状态(CentOS 7/8/9)
1 | # 检查 firewalld 是否运行 |
- 输出说明:
running
表示防火墙已启用。dead
或not running
表示防火墙已关闭。
1 | [root@instance-20250606-0334 3x-ui]# sudo systemctl status firewalld |
其他常用命令:
1 | # 查看防火墙详细规则 |
1 | [root@instance-20250606-0334 3x-ui]# sudo firewall-cmd --list-all |
2. 查看 iptables 状态(CentOS 6 或旧版本)
1 | # 检查 iptables 服务状态(CentOS 6) |
- 如果输出中显示规则列表,则防火墙可能已启用;若为空或提示未加载,则可能已关闭。
3. 检查防火墙服务是否开机自启
1 | # 查看 firewalld 是否开机自启 |
4. 临时关闭/启用防火墙
1 | # 临时关闭 firewalld |
注意事项
- 如果系统未安装
firewalld
,可先安装:1
sudo yum install firewalld
- 对于生产环境,建议保持防火墙启用状态,并通过规则放行必要端口(如 SSH、HTTP 等)。
二、查看防火墙
在 CentOS 7 中,开启端口需要通过 firewalld
防火墙服务管理。以下是详细步骤和说明:
1. 确认防火墙状态
确保 firewalld
已启用并运行:1
sudo systemctl status firewalld
- 如果未运行,启动服务:
1
2sudo 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=端口号/协议
:协议可以是tcp
或udp
。--permanent
:标记规则为永久生效(需配合--reload
)。
3. 验证端口是否开放
1 | # 查看已开放的端口 |
- 输出应包含
8080/tcp
(或您指定的端口)。
4. 开放端口范围
如果需要开放连续端口(如 30000-32767):1
2sudo 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
注意事项
- 端口冲突:确保端口未被其他服务占用(如 Apache/Nginx 默认占用 80/443)。
- 安全建议:
- 仅开放必要的端口。
- 避免直接开放高危端口(如 22/SSH 建议修改默认端口或使用密钥认证)。
- SELinux:如果启用了 SELinux,可能需要额外配置(如
semanage port
命令)。
示例场景
假设需要开放 MySQL 的默认端口 3306:1
2sudo 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
3sudo firewall-cmd --zone=public --add-service=http --permanent
sudo firewall-cmd --zone=public --add-service=https --permanent
sudo firewall-cmd --reload
- 开放 80/443 端口:
场景 2:仅限内部访问的数据库(3306)
- 云安全策略:
- 仅允许内部子网 IP 访问 3306 端口。
- 操作系统防火墙:
- 开放 3306 端口(但云策略已限制,可省略此步骤)。
总结
- 可以关闭操作系统防火墙,但需确保云安全策略足够严格,并评估风险。
- 推荐保留防火墙,作为云安全策略的补充,提供多层次防护。
- 关键原则:
- 云安全策略是第一道防线,必须严格配置。
- 操作系统防火墙是第二道防线,用于细化规则或防止配置错误。
根据实际需求和安全要求,选择最适合的方案。