安全组(云网络层)
作用: 安全组在 ECS 的使用中扮演了云上虚拟防火墙的角色,用于控制实例的出入方向流量。它在操作系统之外,是访问实例的第一道关卡。
逻辑: 无论实例内部防火墙如何配置,如果安全组未放行某个端口(如 SSH 的 22 端口),所有来自外部的访问请求都会在该层被直接拒绝。
约 1717 字大约 6 分钟
2025-11-15
在云服务器上,不正确的防火墙配置是导致服务无法访问或实例远程连接失败的常见原因。本文旨在提供一套安全、标准化的操作流程,指导如何管理 Linux 实例的操作系统防火墙,例如检查状态、安全地启用防火墙、开放特定服务端口,以及在排查问题时临时禁用防火墙。
所有进出 ECS 实例的网络流量均先经安全组过滤,再由操作系统防火墙处理。在同时满足安全组和系统防火墙的放行策略后,才能到达目标应用。
安全组(云网络层)
作用: 安全组在 ECS 的使用中扮演了云上虚拟防火墙的角色,用于控制实例的出入方向流量。它在操作系统之外,是访问实例的第一道关卡。
逻辑: 无论实例内部防火墙如何配置,如果安全组未放行某个端口(如 SSH 的 22 端口),所有来自外部的访问请求都会在该层被直接拒绝。
操作系统防火墙(实例层)
作用: 运行在 Linux 操作系统内部的防火墙软件,默认关闭,如 firewalld 或 ufw。它负责对通过了安全组的流量进行进一步的精细化控制。
逻辑: 流量必须先通过安全组,才能到达操作系统防火墙。两者是"与"关系,必须同时允许,流量才能最终到达部署的应用程序。
在进行任何修改前,首先确认防火墙的当前运行状态。
执行以下命令查看 firewalld 服务的状态。
sudo firewall-cmd --statenot running:表示防火墙已关闭。running:表示防火墙处于启用状态。command not found,说明 firewalld 未安装。可执行 sudo yum install firewalld -y 或 sudo dnf install firewalld -y 进行安装。执行以下命令查看 ufw 服务的状态。
sudo ufw statusStatus: active:表示防火墙处于启用状态。Status: inactive:表示防火墙已关闭。command not found,说明 ufw 未安装。推荐执行 sudo apt update && sudo apt install ufw -y 进行安装,以获得更安全、便捷的管理体验。先放行,后启用
切勿在未配置允许规则前直接启用防火墙,会导致连接被切断,造成实例"失联"。请遵循"先放行,后启用"的原则。
将 SSH 服务永久性地添加到允许列表中,确保远程管理通道不会中断。
sudo firewall-cmd --permanent --add-service=ssh重新加载防火墙规则,使上一步的配置生效。
sudo firewall-cmd --reload启动防火墙服务。
sudo systemctl start firewalld(可选)将防火墙设置为开机自启动,确保重启后防护依然有效。
sudo systemctl enable firewalld添加规则以允许所有 SSH 连接。
sudo ufw allow ssh启用防火墙。ufw 在启用时会自动加载已有的 allow 规则,并默认设置为开机自启动。
sudo ufw enable执行此命令时,系统会提示操作可能中断现有连接,输入 y 确认即可。由于已提前放行 SSH,连接不会中断。
开放指定端口或者服务
按服务名开放(推荐):
# 永久开放 HTTP 和 HTTPS 服务
sudo firewall-cmd --permanent --add-service=http
sudo firewall-cmd --permanent --add-service=https按端口号开放:
# 永久开放 8080/TCP 端口
sudo firewall-cmd --permanent --add-port=8080/tcp使新规则生效
添加或删除规则后,必须重新加载防火墙。
sudo firewall-cmd --reload验证规则是否生效
该命令可查看当前活动区域下的所有规则,包括服务、端口、协议等。
sudo firewall-cmd --list-all使用 ufw 添加防火墙规则后即时生效,并自动持久化。
开放指定端口或者服务
按服务名开放(推荐):
# 开放 HTTP 和 HTTPS 服务
sudo ufw allow http
sudo ufw allow https按端口号开放:
# 开放 3306/TCP 端口
sudo ufw allow 3306/tcp验证规则是否已生效
执行以下命令查看已启用的规则,包括允许和拒绝的服务、端口及其状态(active/inactive)。
sudo ufw status在诊断网络连接问题时,可以临时关闭防火墙以判断是否为实例内部的阻断策略所致。
警告
不建议在生产环境关闭防火墙,在测试完成或问题定位后应重新启用防火墙。
sudo systemctl stop firewalldsudo ufw disable日志与监控: 定期审计防火墙日志,以发现异常访问。
firewalld:日志通常由 journald 管理,使用 sudo journalctl -u firewalld 查看。ufw:日志通常位于 /var/log/ufw.log。原因通常在于忽略了云环境下的第一层防护。请按以下顺序排查:
ss -tunlp | grep <端口号> 或 netstat -tunlp | grep <端口号>,确认应用程序是否已成功启动并在预期的 IP 地址(如 0.0.0.0)和端口上监听。firewall-cmd 或 ufw 命令时提示 command not found 怎么办?这表示对应的防火墙管理工具未安装。
sudo yum install firewalld -y 或 sudo dnf install firewalld -y。sudo apt update && sudo apt install ufw -y。