
新 VPS 老问题:端口被扫描,日志刷满陌生 IP
前几天一个朋友新买 VPS 还没正式跑业务,登录服务器就看到日志里全是陌生的连接尝试。我帮他把安全组打开看了一眼,几乎是“全部端口放行”的状态。很多新手拿到服务器,第一件事是考虑把网站或项目跑起来,端口规则往往被拖到出事之后再处理。
这篇文章先把结论放在前面:一台普通网站 VPS,真正需要对外开放的端口通常只有 22、80、443。数据库、缓存、后台管理这类端口,默认不应该让全网访问。下面会解释为什么,以及配错了之后怎么恢复。
端口是什么,为什么服务器有 65535 个

把服务器想象成一栋楼,IP 地址是楼的门牌号,端口就是楼里的房间号。快递员知道门牌号还不够,还得知道收件人在几零几,否则没法把包裹送到对应的人手里。服务器上也一样,同一台机器可能同时运行网页服务、数据库、缓存、SSH 等多个程序,网络数据进来之后,系统要根据端口号判断应该交给哪个进程。
端口号的上限是 65535,这不是某家 VPS 厂商自己定的,而是网络协议的基础设定。端口号使用 16 位二进制数表示,16 位二进制能表示 0 到 65535,一共 65536 个数字;因为从 0 开始计数,所以最大端口号就是 65535。这个底层结构决定了端口范围,改不了,也没必要改。
新手常有一个误解:端口越多,服务器越强。实际上,65535 个端口只是可用的地址空间,不代表应该把它们全部填满。一台常规的网站 VPS,真正需要对外开放的端口通常只有三五个,其余端口保持关闭才是最安全的状态。这个认知比记住具体命令更重要。
VPS 安全组端口怎么配:哪些该开,哪些不该开

0 到 1023 范围内的端口一般被称为“知名端口”,用途比较固定,行业内基本约定俗成。平时管理 VPS 时,下面几个端口最常出现:
| 端口 | 服务 | VPS 安全组建议 |
|---|---|---|
| 22 | SSH 远程管理 | 公网可开,但建议限制来源 IP |
| 21 | FTP 文件传输 | 不推荐开放,明文传输,改用 SFTP |
| 25 | SMTP 邮件发送 | 多数机房默认封禁,开之前先确认机房策略 |
| 80 | HTTP 网站访问 | 网站必需,对公网开放 |
| 443 | HTTPS 网站访问 | 网站必需,对公网开放 |
| 3306 | MySQL 数据库 | 不应对全网开放,仅限白名单或内网 |
| 5432 | PostgreSQL 数据库 | 不应对全网开放,仅限白名单或内网 |
| 6379 | Redis 缓存 | 默认不应暴露公网 |
| 465/587 | 加密邮件发送 | 按邮件服务需求开放 |
这里可以直接给一个结论:
- 该开:22(需要远程管理时)、80、443(网站服务)。
- 看情况开:邮件相关端口、游戏服务器端口、API 业务端口,以及用了非默认端口的服务。
- 不该对全网开:3306、5432、6379,以及运维后台、控制面板端口。大多数项目并不需要外部直接访问这些端口,开了反而容易被人扫描和利用。
安全组是什么,和系统防火墙有什么不同

安全组是云服务商在虚拟网络层提供的访问控制,规则跑在虚拟机外部,相当于大楼门口的门禁。系统防火墙则是运行在服务器内部的一层防护,例如 UFW、firewalld、iptables。两者都在过滤流量,但位置和作用不太一样。
配置安全组时,你会看到入站规则和出站规则。入站规则决定外部哪些流量能到达你的端口,出站规则决定服务器向外访问的流量是否受限。大多数场景下,入站规则是重点。
有些人以为开了安全组就不用管系统防火墙,或者反过来只在系统里配置。比较稳的办法是两层都做:安全组负责粗粒度拦截,系统防火墙负责兜底。就算服务器内部某个服务意外监听并对外,系统防火墙也能挡住大部分连接。
全端口开放有多危险:被扫只是开始
把安全组设成“全部放行”,短期内确实省事。但公网上的自动化扫描是无差别的,它不会因为你是个小站就绕开。扫描程序一天到晚在全网探测开放端口,扫到 22 端口就尝试常见弱口令,扫到 3306 或 6379 就尝试未授权访问或已知漏洞。
端口本身没有好坏,问题在于端口后面挂着服务。对公网开放一个端口,意味着让全世界都能尝试连接这个服务。开放的端口越多,暴露的攻击面越大。等你看到日志里一片陌生 IP 再来收紧,其实已经晚了一些。
更常见的错误是数据库端口对全网开放。很多时候开发图省事,在安全组里加一条 3306 或 6379 对 0.0.0.0/0 放行,想着之后再来限制。等被扫描工具发现,事情就不可控了。如果你需要远程连接数据库,用 SSH 隧道或限定办公 IP 都更安全,别把数据库直接放到公网上。
配置安全组的具体步骤
把 VPS 安全组配置成“少而准”的状态,可以按下面的流程走。
第一步:先查清楚服务器当前监听了哪些端口
登录服务器后查看端口监听和对应进程:
ss -tlnp
也可以用:
netstat -tulpn
通过输出,你能看到 22、80、443 等端口分别由哪个进程监听。先把这些信息记录下来,判断哪些是业务必须的,哪些只是临时调试用。
第二步:删除全放行规则,默认拒绝入站
在云控制台里找到安全组或防火墙选项,查看入站规则是否包含 0.0.0.0/0 放行全部端口。如果是,先删掉这条规则,再按照业务需要添加端口:
- 22:SSH 登录
- 80:HTTP
- 443:HTTPS
如果还有需要,再单独添加对应端口,不要图方便复制“全部放行”。
第三步:给高风险端口设置来源 IP 白名单
SSH、数据库、管理面板这类端口,尽量限制来源 IP。固定办公网络可以只允许公司出口 IP;经常换网络环境的,可以配合 fail2ban 控制系统层误试。数据库端口则建议完全不对公网开放,优先使用内网地址或 SSH 隧道。
如果你刚拿到 VPS,不知道还有哪些坑,可以先翻一下站里的《VPS 新手防坑指南》,里面列了不少新手常见的错误,比一个个踩过去省时间。
第四步:启用系统防火墙做兜底
以 Ubuntu 或 Debian 常见的 UFW 为例:
sudo ufw enable
sudo ufw allow 22/tcp
sudo ufw allow 80/tcp
sudo ufw allow 443/tcp
sudo ufw status numbered
CentOS 或 Rocky Linux 更常用 firewalld,命令不同,但思路一致。启用之后查看规则,确认必要端口已经放行,尤其是 22。如果误把 SSH 封住,连接会直接断掉。
第五步:修改 SSH 默认端口需谨慎
把 22 改成随机高位端口,能减少一部分自动化扫描的命中率,但不是必选项。修改前,先确认安全组和系统防火墙已经放行新端口;修改后,别忘了重载 SSH 服务。新旧端口交替期间,最好保持一个已有连接,避免把自己锁在门外。
第六步:避免明文协议
FTP、Telnet 这类明文协议,在现代服务器管理里应当被淘汰。文件传输使用 SFTP,远程管理使用 SSH。明文协议会让账号密码在网络中裸奔,没有任何必要。
不同用途 VPS 的端口开放对比
不同用途的 VPS,端口开放范围差别很大。下面是一份可以对照的清单:
| 使用场景 | 建议开放的入站端口 | 备注 |
|---|---|---|
| 静态博客或单页 | 22、80、443 | 数据库、缓存不用对公网开 |
| WordPress 动态站 | 22、80、443 | MySQL 只监听本地或固定 IP |
| 前后端分离应用 | 22、80/443,前端端口 | 后端接口可走反向代理 |
| 自建邮件服务 | 25、465、587、110/143 | 先确认机房是否封 25 端口 |
| 游戏服务器 | 对应游戏端口 | 按官方文档开放,其余全部关闭 |
| 内网穿透/代理 | 按服务映射端口 | 不建议直接暴露管理端口 |
表格只是起点。每个项目差异不小,关键不是照抄某几个端口号,而是形成“默认关闭、按需开放、能限来源就限来源”的习惯。
配置完之后怎么验证端口是否生效
保存安全组规则不代表一切正常。你可以做几组简单检查:
- 从本地浏览器访问网站,确认 80/443 能正常打开。
- 用一台不在此白名单的设备,尝试连接 SSH 或数据库端口,预期结果是连接超时或被拒绝。
- 使用在线端口扫描工具扫描公网 IP,确认暴露端口只有预期中的那几项。
- 等一两天,再查看系统认证日志,确认没有来自陌生 IP 的成功登录记录。
tail -n 200 /var/log/auth.log
如果日志里仍然有扫描记录,不用太紧张。公网扫描是常态,不是配置失败。你需要区分的是“被尝试连接”和“被成功连接”,后者才意味着问题。
端口配错后的常见错误与恢复方案
端口配置很少一次到位。运气好只是网站打不开,运气差可能 SSH 也连不上。常见问题基本可以分成三类。
误封 22 端口,SSH 连不上怎么办
最常见的情况是在系统防火墙里执行了 sudo ufw deny 22/tcp,或者安全组入站规则里没有放行 22,然后当前 SSH 会话一断,就再也连不回去了。
恢复步骤:
- 登录云服务商控制台,找到“VNC”或“管理终端”入口,通过网页终端登录服务器。
- 用 VNC 登录后,检查 UFW 状态:
sudo ufw status verbose。如果 22 被拒绝,执行sudo ufw allow 22/tcp,然后sudo systemctl restart ssh或sudo systemctl restart sshd。 - 再去安全组页面确认入站规则里确实有 22 端口,来源 IP 是否包含你当前网络出口 IP。如果只允许了办公室 IP,而你现在在外面,连不上是很正常的。
- 确认无误后,再开一个新 SSH 会话测试,不要直接关掉 VNC 窗口。
改了安全组规则后所有端口都不通怎么办
这种情况通常是规则改得太多,或者误删了整个安全组。优先做这几步:
- 先确认服务器公网 IP 是否变化。有些控制台在重装或重置网络后会分配新 IP,旧的配置自然全部失效。
- 检查安全组是否还关联在当前实例上。有些面板删除规则时会连同关联关系一起处理。
- 通过 VNC 登录,暂时关闭系统防火墙做隔离测试:
sudo ufw disable。如果端口通了,说明问题在防火墙规则;如果还是不通,问题大概率在安全组或网络层面。 - 测试完成后再把防火墙打开,并恢复只放行必要规则的配置,不要长期保持在 disable 状态。
排查顺序建议:安全组入站规则 → 系统防火墙 → 服务是否正在监听 → 本地网络或 ISP。按顺序检查通常能快速缩小范围。
网站端口开了但打不开怎么办
如果 80/443 已在安全组放行,但网站仍然打不开,先看服务监听地址:
ss -lntp | grep -E ':80|:443'
如果服务监听在 127.0.0.1,外部自然无法访问,需要修改配置为监听 0.0.0.0 或对应公网网卡。接着检查系统防火墙是否放行了 80/443,再检查域名解析、CDN 回源设置或云负载均衡是否放行。很多时候端口规则没问题,问题出在更上层。
安全组配置不是一次性的:行动与结论
端口规则和业务边界是绑定的。今天你可能只跑一个静态站,下个月加了数据库、缓存或 API 服务,端口就会多出来。反过来,如果某台 VPS 已经不再提供某些服务,对应的端口也应该顺手关掉。
建议每月或每季度花十分钟,重新看一下正在监听的端口和安全组规则,把不再使用的规则删掉。这个习惯比买更贵的防护方案实在得多。如果你刚入手 VPS,也可以参考站内另一篇《VPS 到手后必做的 7 项安全配置:从 SSH 加固到 Fail2Ban 实战》,把端口规则和系统加固一起做完。
回到开头的问题:一台 VPS 有 65535 个端口,但真正需要对外开放的只有几个。先把安全组里的“全部放行”删掉,只保留业务必需端口;再用系统防火墙兜底;最后做一次端口扫描验证。这套流程做完,你基本不会再因为端口问题被陌生 IP 反复骚扰。
文章里没有涉及具体商家的价格和套餐,各家控制台对安全组的入口、规则名称也可能不同,购买或调整前建议以官网为准。涉及限时优惠、库存或特价的,同样需要自行打开官方页面核实有效期,不要因为看到促销就以过期信息做决定。
原创文章,作者:WanKe,如若转载,请注明出处:https://wankewu.com/vps-review/2078.html
