阿里云免身份验证账号 阿里云服务器防火墙配置教程:安全组、Linux防火墙与端口开放完整设置方法
用户搜索“阿里云服务器防火墙配置教程”时,通常不是想了解原理,而是已经遇到实际问题:服务器创建好了,但SSH连不上;网站部署完成,浏览器访问超时;Windows远程桌面提示无法连接;MySQL或Redis在本地测试正常,公网却始终连不上。大多数情况下,问题出在两层规则没有同时处理:阿里云安全组没有放行,或者操作系统内部防火墙仍然拦截。
阿里云免身份验证账号 这篇文章直接围绕操作展开。你可以按“控制台安全组 → 服务器系统防火墙 → 服务监听与连通性测试”的顺序配置,避免反复试错。
一、用户在配置阿里云服务器防火墙时最常遇到的场景
实际操作中,常见场景主要有以下几类:
- 新购ECS实例后,22端口未正确放行,导致SSH连接失败。
- 部署Nginx或Apache后,80/443端口没有同时在安全组和系统中开放,网站无法访问。
- Windows实例已设置密码,但3389端口未放行,RDP远程桌面连接超时。
- 阿里云免身份验证账号 数据库部署在云服务器上,3306或6379直接暴露公网,虽然能连接,但存在被扫描和暴力破解风险。
- 修改安全组规则后仍然不生效,实际原因是服务器内部firewalld、iptables或Windows Defender Firewall没有同步配置。
所以这类问题的核心不是“怎么开端口”这么简单,而是要明确哪一层在拦截、该开放给谁、开放多久、是否必须开放公网。
阿里云免身份验证账号 二、操作前准备:避免改完规则后把自己锁在服务器外
1. 账号与权限要求
开始前请确认当前账号具备以下权限:
- 阿里云ECS实例查看与修改权限。
- 安全组规则管理权限。
- 服务器系统管理员权限:Linux 需要 root 或 sudo;Windows 需要 Administrator。
2. 需要提前确认的资源信息
| 检查项 | 说明 |
| 实例地域 | 确认服务器位于华东、华北、香港等哪个地域,后续安全组需要对应实例所在地域管理。 |
| 公网IP | 如果没有绑定公网IP,公网无法直接访问,即使开放端口也无效。 |
| 操作系统 | Linux常见为CentOS、AlmaLinux、Ubuntu;Windows常见为Server 2019/2022。 |
| 业务端口 | 提前列出要开放的端口,例如22、80、443、3389、3306。 |
| 连接来源IP | 能限制来源IP时,优先填固定办公IP或家庭宽带公网IP,不要直接放0.0.0.0/0。 |
阿里云免身份验证账号 3. 配置前的建议
如果你正在远程连接服务器,修改SSH或RDP规则前,不要先删除原有放行规则。正确做法是先新增一条更精确的规则,测试成功后再收紧旧规则。这样能避免因为配置错误导致远程失联,只能进入阿里云控制台通过VNC排障。
三、第一步:先在阿里云控制台配置安全组
阿里云免身份验证账号 阿里云ECS的第一层网络访问控制通常是安全组。很多用户只改服务器里的防火墙,却忘了控制台侧仍然封禁,所以端口依然不通。
1. 进入安全组管理页面
登录阿里云控制台后,按以下路径操作:
- 进入“云服务器 ECS”
- 选择目标实例所在地域
- 点击实例名称进入详情页
- 找到“安全组”
- 点击绑定的安全组ID进入“安全组规则”页面
2. 添加入方向规则
如果你需要让外部访问服务器上的服务,主要配置“入方向”规则。常见填写方式如下:
| 用途 | 协议类型 | 端口范围 | 授权对象 | 建议 |
| SSH | TCP | 22/22 | 你的公网IP/32 | 不建议长期对全网开放 |
| 网站HTTP | TCP | 80/80 | 0.0.0.0/0 | 网站公开访问时使用 |
| 网站HTTPS | TCP | 443/443 | 0.0.0.0/0 | 证书部署后必须放行 |
| RDP | TCP | 3389/3389 | 固定办公IP/32 | Windows建议限制来源 |
| MySQL | TCP | 3306/3306 | 应用服务器私网网段 | 尽量不要开放公网 |
| Redis | TCP | 6379/6379 | 私网IP或安全组 | 避免公网暴露 |
3. 规则填写时最容易出错的地方
- 把“授权对象”写成 0.0.0.0,正确写法应为 0.0.0.0/0。
- 端口范围写错,例如把 80/80 误写成 80/443。
- 修改了错误地域下的安全组,实例实际不在当前地域。
- 实例绑定了多个安全组,但你只改了未生效的那个。
4. 安全组配置完成后的验证
配置后不要立刻判断成功,建议在本地执行测试:
- Linux/macOS 测试端口:
nc -vz 公网IP 22 - Windows PowerShell 测试端口:
Test-NetConnection 公网IP -Port 80
如果这里显示端口仍未开放,继续检查服务器内部防火墙。
四、第二步:Linux服务器内部防火墙配置
阿里云安全组放行后,如果Linux系统仍然启用了firewalld、ufw或iptables,端口依旧可能被拦截。
1. 先判断系统当前使用哪种防火墙
常用检查命令如下:
| 系统 | 检查命令 |
| CentOS/AlmaLinux/RHEL | systemctl status firewalld |
| Ubuntu | ufw status |
| 通用iptables检查 | iptables -L -n |
2. firewalld 放行端口示例
如果系统启用的是 firewalld,可直接执行:
sudo firewall-cmd --permanent --add-port=80/tcp
sudo firewall-cmd --permanent --add-port=443/tcp
sudo firewall-cmd --permanent --add-port=22/tcp
sudo firewall-cmd --reload
查看是否生效:
sudo firewall-cmd --list-ports
3. Ubuntu ufw 放行端口示例
如果是Ubuntu:
sudo ufw allow 22/tcp
sudo ufw allow 80/tcp
sudo ufw allow 443/tcp
sudo ufw reload
查看规则:
sudo ufw status numbered
4. 临时不要直接关闭防火墙
很多教程会建议直接执行 systemctl stop firewalld 或彻底禁用,这种做法虽然省事,但不适合线上环境。更稳妥的方式是只开放必要端口,尤其是数据库、远程管理端口,不要因为排障方便而长期裸露公网。
5. 确认服务本身是否监听正确端口
即使防火墙放行,如果服务只监听127.0.0.1,也无法通过公网访问。检查命令:
ss -lntp
重点看以下内容:
- Nginx/Apache 是否监听 0.0.0.0:80 或 0.0.0.0:443
- sshd 是否监听 0.0.0.0:22
- MySQL 是否错误地只监听 127.0.0.1:3306
五、第三步:Windows服务器防火墙设置方法
如果你使用的是阿里云Windows实例,仅仅在安全组中放行3389还不够,还需要检查系统入站规则。
1. 通过控制台或VNC进入服务器
当远程桌面已经无法连接时,可以先通过阿里云控制台的远程连接功能进入实例,避免因为3389不通无法操作。
2. 配置入站规则
在服务器内依次点击:
- 开始菜单
- Windows Defender 防火墙
- 高级设置
- 入站规则
- 阿里云免身份验证账号 新建规则
常见规则创建方式:
| 项目 | 填写建议 |
| 规则类型 | 端口 |
| 协议 | TCP |
| 特定本地端口 | 3389 或 80,443 |
| 操作 | 允许连接 |
| 配置文件 | 域、专用、公用按实际网络环境勾选 |
| 名称 | Aliyun-RDP-3389 或 Aliyun-Web-80-443 |
3. 用PowerShell快速放行端口
如果你更习惯命令行,可执行:
New-NetFirewallRule -DisplayName "Allow TCP 3389" -Direction Inbound -Protocol TCP -LocalPort 3389 -Action Allow
New-NetFirewallRule -DisplayName "Allow TCP 80" -Direction Inbound -Protocol TCP -LocalPort 80 -Action Allow
New-NetFirewallRule -DisplayName "Allow TCP 443" -Direction Inbound -Protocol TCP -LocalPort 443 -Action Allow
六、网站、数据库与远程管理的推荐开放策略
防火墙配置不只是“能访问就行”,还要考虑暴露面最小化。下面给出更实用的策略。
| 业务类型 | 建议开放端口 | 公网开放建议 | 补充说明 |
| Linux远程运维 | 22 | 限制到固定IP | 可改SSH端口,但更重要的是限制来源和禁用密码登录 |
| Windows运维 | 3389 | 限制到固定IP | 建议启用复杂密码和登录失败审计 |
| Web站点 | 80、443 | 允许全网 | 最终应将HTTP跳转到HTTPS |
| MySQL | 3306 | 尽量不开放公网 | 优先私网访问或通过堡垒机/跳板机连接 |
| Redis | 6379 | 不要开放公网 | 若必须开放,应绑定密码、限制IP、关闭危险命令 |
| 应用接口 | 8080、8443等 | 按需开放 | 建议由Nginx反向代理统一入口 |
七、不同用户场景下的配置建议
1. 个人开发者
如果只是部署博客、测试站或个人API,建议最少开放 22、80、443 三个端口。22端口不要对全网开放,只允许你自己的公网IP访问。系统层面启用firewalld或ufw即可,不需要为了省事全部关闭。
2. 企业用户
企业环境通常有运维终端、测试环境和生产环境,建议把安全组按环境拆开,不要多个业务共用一个“全开放”安全组。数据库服务器不要直接绑定公网IP,业务访问走同VPC私网连接。
3. 跨境业务
如果你的服务器面向海外用户,重点不是多开端口,而是先确认地域选择和网络延迟。Web端口只保留80/443,其余管理端口通过固定办公IP访问。可在不同地域执行 ping、mtr 或浏览器测速,判断是否需要香港、新加坡等节点。
4. 网站应用
典型站点建议架构是:公网只开放80/443,Nginx处理HTTPS证书,应用服务如8080只监听本机或私网,数据库3306不开放公网。这样即使网站被扫描,也不会直接暴露应用内部端口。
5. 数据库业务
如果业务必须远程连接MySQL,优先做法是:
- 仅对办公出口IP开放3306
- MySQL创建最小权限用户,不使用root远程登录
- 开启定期备份和快照
- 连接失败时同时检查安全组、firewalld、mysqld监听地址、bind-address 配置
八、端口已开放但还是不通,按这个顺序排查
很多故障不是出在单一配置,而是多个环节叠加。建议按下面顺序查:
1. 先看实例是否具备公网访问条件
- 是否分配了公网IP
- 是否绑定弹性公网IP
- 带宽是否大于0
2. 再看阿里云安全组
- 入方向是否有对应TCP规则
- 授权对象是否填写正确
- 是否改错了安全组或地域
阿里云免身份验证账号 3. 检查系统内部防火墙
- Linux 的 firewalld/ufw/iptables 是否放行
- Windows 入站规则是否允许
4. 检查应用是否真的启动
- Nginx:
systemctl status nginx - SSH:
systemctl status sshd - MySQL:
systemctl status mysqld或systemctl status mysql
5. 检查监听地址
如果服务监听在 127.0.0.1,本机可以访问,外部一定不通。这是MySQL、Node.js、Java应用最常见的问题之一。
6. 检查运营商或本地网络拦截
部分公司网络会限制3389、22等端口外连。你可以用手机热点测试,快速排除是否为本地出口网络问题。
九、四类优化建议:不是多开规则,而是减少暴露面
阿里云免身份验证账号 1. 安全优化
- SSH和RDP仅允许固定IP访问。
- 数据库端口不直接开放公网。
- 定期清理临时排障时新增的“全部放行”规则。
- Linux优先使用密钥登录,关闭root密码直登。
2. 性能优化
- 阿里云免身份验证账号 Web场景优先开放80/443,由反向代理统一转发,减少应用端口直接暴露。
- 跨地域访问明显延迟时,先换更近地域,再考虑CDN。
- 通过
ss -s、top、iostat观察是否是资源瓶颈,而不是误判为防火墙问题。
3. 成本优化
- 不要因为数据库远程访问麻烦就单独购买公网数据库机器,很多场景用私网即可。
- 开发测试环境可通过快照备份后临时放行端口,使用结束及时回收公网暴露资源。
4. 稳定性优化
- 修改远程管理端口规则前,保留当前会话,不要直接断开。
- 重要实例配置快照备份,尤其是在批量调整iptables或系统重装前。
- 安全组规则做分组命名,例如“web-prod-allow-80-443”“ops-office-ssh”,后续排障更快。
十、实际配置案例:新服务器部署网站的最小安全规则
假设你刚购买一台阿里云Linux服务器,准备部署Nginx网站,推荐的最小放行方案如下:
| 层级 | 配置内容 |
| 阿里云安全组 | 放行22(仅自己IP)、80(全网)、443(全网) |
| firewalld | 放行22/tcp、80/tcp、443/tcp |
| Nginx监听 | 确认监听 0.0.0.0:80 与 0.0.0.0:443 |
| 数据库 | 不开放3306公网,只允许本机或私网访问 |
| 证书 | SSL证书部署后,HTTP跳转HTTPS |
这个方案适合大多数企业官网、博客、后台管理前后端分离入口机。它的重点不是规则多,而是只开放必须暴露的端口。

