云服务器关闭哪些端口?核心原则很简单:只保留业务必需端口,其余一律关闭,日常巡检中,22、3389、3306、6379、9200 这几个端口是攻击者扫描的重灾区,不用的直接封掉,要用也建议改端口或加白名单。
很多新手买完云服务器,第一件事就是装环境、跑服务,结果数据库、缓存全裸露在公网上,简米云、酷番云的漏洞扫描报告里,排在最前面的往往是 Redis 未授权访问、MySQL 弱口令爆破、SSH 暴力破解,这些问题的根源只有一个不该开的端口全开着。
云服务器端口暴露有多大风险?先算一笔账
公网 IP 就像你的门牌号,每个端口就是一扇窗户,你以为窗户关着就没事,但黑客手里有专门的扫描器,Masscan、Zmap,扫全网只需要几分钟,一旦发现 3306、6379 开着,立刻就会发起暴力破解或漏洞利用。
业内专家指出,超过七成的云上入侵事件,起点都是某个“看起来不太重要”的端口被突破,Redis 的 6379 端口,早期版本存在未授权访问漏洞,攻击者可以直接写入 SSH 公钥,拿下整台服务器,再比如 Docker 的 2375 端口,如果暴露在公网,等于把服务器管理权限拱手送人。
这不是危言耸听,你去 vx-underground 或微步在线威胁情报看看,每天都有大量未授权访问的扫描记录,服务器的安全日志里,一天几千条 SSH 爆破尝试是常态。端口关得越干净,攻击面就越小,这是云安全里最基础也最有效的一步。
哪些端口必须保留?哪些端口建议关闭?
端口这个东西不是越少越好,关键是“业务需要”,比如你是做网站运营的,80 和 443 必须开;需要远程管理服务器,22(Linux)或 3389(Windows)也得留,但有些端口,大多数人压根用不上,开着就是给自己添堵。
先把你的服务器上正在监听的所有端口查一遍,Linux 执行 ss -tlnp,Windows 用 netstat -ano,看看哪些端口处于 LISTEN 状态,然后登录云服务商的控制台,找到安全组配置,把不需要的端口规则全部删掉。
下表是常见的端口取舍参考:
| 端口 | 常见服务 | 建议 |
|---|---|---|
| 22 | SSH | 尽量保留,但建议修改默认端口并限制来源 IP |
| 3389 | Windows 远程桌面 | 尽量保留,同理建议改端口 |
| 80 / 443 | Web 服务 | 必须保留 |
| 3306 | MySQL / MariaDB | 关闭公网访问,仅允许内网连接 |
| 6379 | Redis | 强烈建议关闭公网访问 |
| 9200 | Elasticsearch | 关闭公网访问 |
| 27017 | MongoDB | 关闭公网访问 |
| 8080 | 常见 Web 备选端口 | 如果只是测试环境,建议关闭 |
| 2375 | Docker 远程 API | 必须关闭 |
| 2181 | ZooKeeper | 关闭公网访问 |
判断标准很简单:如果你在服务器上通过内网 IP(172.16.x.x、10.x.x.x)就能连上数据库或缓存,那就完全没有必要把对应的端口暴露到公网。
高危端口逐个拆解:这些服务不要裸奔
很多人觉得“我设置了密码,应该没事”,但弱口令爆破的速度远超你的想象,一个 8 位纯数字密码,用 GPU 跑字典,几分钟就能跑完,下面这几个端口是云环境里最容易出事的,单独说清楚。
22 端口:SSH 暴力破解的重灾区
Linux 服务器基本都开着 22 端口,攻击者拿到你的 IP 后,第一件事就是跑 SSH 爆破,用户名从 root 到 admin 挨个试,密码用常见弱口令字典,不少服务器就是这么被“搬空”的。
应对办法不是关掉 22,而是让它不那么容易被攻破,推荐做法:
- 修改 SSH 默认端口,比如改成 2222 或 22026。
- 在安全组里限制 SSH 的来源 IP,只允许你自己公司的固定 IP 访问。
- 关闭 root 密码登录,改用密钥认证。
- 有条件就装 fail2ban,连续失败多次自动封 IP。
3306 端口:数据库暴露等于数据裸奔
MySQL 的 3306 端口,一旦暴露公网,攻击者就能尝试登录,如果你的密码是 root/123456 这种级别,基本秒破。数据库被拖走,数据被加密勒索,这种事每天都在发生。
正确做法是在安全组里删除 3306 的公网规则,只保留内网规则,如果你的应用和数据库在同一台服务器,直接监听 127.0.0.1 就够了。
6379 端口:Redis 未授权访问的经典漏洞
Redis 默认监听所有网卡,而且老版本默认不需要密码,攻击者连上 6379 后,可以用 CONFIG SET dir /var/spool/cron/ 写入定时任务,反弹 shell 拿权限。
即使你用的是新版本、设置了密码,也不建议把 6379 暴露到公网,Redis 是给应用用的,不是给公网用户用的。
9200 端口:Elasticsearch 的信息泄露
Elasticsearch 的 9200 端口暴露后,攻击者可以直接通过 HTTP API 读取你的索引数据,没有鉴权的话,整个数据库等于公开在互联网上,这些年发生过不少起 ES 数据泄露事故,源头都是 9200 裸奔。
云服务器端口关闭实操:两种常用方法
端口关闭有两层,一层是云控制台的安全组,一层是服务器系统自带的防火墙。两层都做最稳妥,下面分开讲具体操作。
云安全组关闭端口
以简米云服务器为例,登录 ECS 控制台,找到实例,点击“安全组”配置:
- 找到入方向规则,点击“手动添加”。
- 把不需要的端口规则删除。
3306/0.0.0.0/0这条,直接删除。 - 如果是“拒绝”策略,可以添加一条优先级更高的拒绝规则,比如拒绝来源为
0.0.0/0的 6379 端口访问。
酷番云、华为云的操作逻辑一样。安全组是云服务器的第一道门禁,优先级高于系统防火墙,很多安全事件里,用户系统防火墙开了,但安全组忘了改,照样被打穿。
服务器防火墙关闭端口命令
安全组做了一层拦截,系统防火墙再做一层,双重保险,Linux 服务器多数用的是 firewalld 或 iptables。
CentOS / Rocky / Alibaba Cloud Linux 用 firewalld:
# 查看当前放行的端口 firewall-cmd --list-all # 永久移除 3306 端口(立即生效) firewall-cmd --permanent --remove-port=3306/tcp firewall-cmd --reload
Ubuntu / Debian 用 iptables:
# 查看规则 sudo iptables -L -n # 拒绝 6379 端口的公网访问 sudo iptables -A INPUT -p tcp --dport 6379 -j DROP # 保存规则 sudo apt install iptables-persistent sudo netfilter-persistent save
Windows 服务器直接在“防火墙高级设置”里,新建入站规则,选择“阻止端口”,输入 3306、6379 等端口号即可。
改完一定要验证,在本地电脑执行 telnet 服务器IP 端口,或者用一个在线端口扫描工具,确认端口已经从公网“消失”,CLI 环境下也可以自己扫:
nmap -p 3306,6379 你的服务器IP
看到 filtered 或 closed 就说明生效了。
服务器端口安全设置怎么配置?这套流程直接抄作业
端口关闭不是一次性操作,每次上线新服务、新应用,都要过一遍端口安全流程,这里给出一套可以直接照着做的配置清单。
三步走:从扫描到封禁
第一步,摸清家底,用 netstat 或 ss 命令,把所有监听端口整理出来,对照业务一一确认:这个端口干什么用的?谁在访问?必须对公网开放吗?
第二步,区分网卡,数据库、缓存、消息队列这类中间件,尽量监听内网 IP 或回环地址,修改配置文件里的 bind 参数,Redis 的 bind 127.0.0.1,MySQL 的 bind-address=127.0.0.1,改完重启服务。
第三步,层层设防,安全组先过滤一轮,系统防火墙再兜底。端口开放遵循最小化原则,多开一个端口,就是多一份风险。
场景化配置举例
- 个人开发测试机,只需要 SSH 和 HTTP,其余全关,安全组只放行 22(改过的端口)、80、443,系统防火墙同样只开放这三个。
- 正式生产环境,Web 服务开放 80/443;数据库只允许内网访问;SSH 限制来源 IP,并启用密钥登录;其余端口默认全关。
- 有外网 API 回调需求的服务器,比如支付回调、第三方 webhook,通常需要对外开放一个端口,但这个端口建议用非标准端口,8443,并在应用层做 IP 白名单限制。
验证和持续监控
端口配置完不是一劳永逸,定期用扫描工具检查一下当前开放端口,和“预期白名单”比对,可以关注云监控里的“安全告警”,大部分云平台会提示“ECS 公网 IP 暴露高危端口”,一旦收到这种告警,第一时间去处理,别拖。
云服务器端口改动后,会影响网站访问吗?
这个问题的答案是:要看你怎么改,只改 SSH 端口,不影响网站;把 80 或 443 关了,网站立刻打不开,所以动手之前,先确认业务依赖哪些端口。
很多用户问“云服务器端口改动影响网站访问吗”,实际上绝大多数改动是安全的重点是别动 Web 服务端口,如果你担心误操作,可以先做快照或备份安全组规则,以便随时回滚。
常见问题
关闭端口和禁用服务是一回事吗?
不是一回事,关闭端口只是在防火墙上拦截外部访问,服务本身可能还在运行,更彻底的做法是停掉服务,systemctl stop redis 并设置开机不启动,建议先关端口保平安,再停服务节省资源。
修改 SSH 端口后连不上了怎么办?
多半是云控制台安全组没放行新端口,登录云服务商控制台,在安全组入方向添加你修改后的端口规则,2222,再等几分钟重试。
用云防火墙和自建防火墙,哪个更可靠?
云防火墙(安全组)在云网络层面拦截,不消耗服务器资源,可靠性最高,系统防火墙在主机内部过滤,适合做二次防护,两者不冲突,建议同时配置,处理挖矿病毒、木马回连等事件时,云平台提供的“安全组封禁”功能往往是最快止血方式。
服务器的安全感,不是靠装了多少安全软件,而是靠你关掉了多少不该开的端口,把公网暴露面缩到最小,比任何高价防护都实在,每次部署新服务前,多问自己一句:这个端口真的需要让全世界都看到吗?
首发原创文章,作者:王坚,如若转载,请注明出处:https://idctop.com/article/785173.html


