把暴露在公网的VPS风险降到最低,核心思路就三句话:少开门、改默认、盯日志。只要这三件事做到位,绝大多数自动化扫描和暴力破解拿你没办法,下面按优先级拆开讲。
VPS被扫描怎么办,先分清“看”和“打”
你的VPS只要搭上线,IP就暴露在互联网上。扫描是常态,不是异常,安全厂商的威胁情报显示,一个新上线的IP,几分钟内就会收到来自全球的端口探测请求,这跟你配没配防护没关系,相当一部分扫描来自僵尸网络和漏洞利用工具,它们每天在公网上自动游荡,看到开放端口就顺手测一下。
扫描为什么停不下来
扫描的成本极低,攻击者手里有现成的工具,扫一个C段(256个IP)只需要几分钟,跑一遍常见端口和默认口令,几乎不费人工,扫到一台弱口令机器属于“意外收获”,扫不到也不亏,所以别指望“不被扫”,要指望“扫了也白扫”。
扫描背后藏着三类威胁
- 端口探测:扫描器记录你开放了哪些端口,对应哪些服务,为后续攻击做情报收集。
- 暴力破解:针对SSH、RDP、数据库等登录入口反复尝试弱密码,这是最常见的自动化攻击。
- 漏洞探测:扫描器会尝试访问已知漏洞路径,比如未授权的Redis、旧版本的Web管理面板,看看有没有现成的洞可以打。
应对逻辑也很清晰:减少暴露面,让扫描器看到的开放端口越少越好;加固登录入口,就算端口被扫到了也进不来;保留日志和封禁机制,让反复试探的IP直接进黑名单。
如何防止VPS被暴力破解,从SSH入口先下手
SSH是你管理VPS的主要通道,也是扫描器最关注的攻击面。默认的22端口和密码登录,是暴力破解成功率最高的组合,想降低风险,优先改掉这两点。
修改SSH默认端口
编辑 /etc/ssh/sshd_config 文件,找到 #Port 22 这一行,去掉注释并把数字改成高位端口,Port 2222 或 Port 60022,改完后执行 systemctl restart sshd 重启SSH服务。
这一步有两个坑要注意:
- 改端口前,先确认你的云厂商安全组或防火墙对你开放了新端口,否则重启后你会连不上。
- 重启SSH服务不会断开已有连接,但新连接走新端口,建议用新端口先开一个终端测试,测试成功后再关掉旧连接。

用密钥登录替代密码登录
密钥登录是目前最稳妥的SSH认证方式,原理是客户端持私钥,服务器存公钥,配对成功才能登录,全程没有密码在网络中传输,生成密钥的命令:
ssh-keygen -t ed25519 -C "your_comment"
把公钥传到服务器:
ssh-copy-id -p 端口号 用户名@你的VPS地址
传完后在服务器端编辑 sshd_config,把 PasswordAuthentication 改成 no,重启SSH,以后只能通过密钥登录,密码暴力破解直接失效,注意:私钥文件要保存好,丢了只能通过云厂商的控制台VNC(网页终端)找回。
禁止root直接登录
root是默认存在的账号,攻击者不需要猜用户名,直接拿它来跑密码,让管理员用一个普通用户登录,再用 sudo 提权,能显著提高破解门槛,在 sshd_config 里设置 PermitRootLogin no,然后创建一个新用户并加入 sudo 组:
adduser yourname usermod -aG sudo yourname
三件事做完,你的SSH入口基本告别“裸奔”状态,行业共识认为,这套组合拳能挡住绝大多数自动化暴力破解,剩下的只有零日漏洞级别的威胁,那需要靠系统更新来兜底。
用云安全组和本机防火墙把“门”锁好
除了SSH,你的VPS上可能还跑着网站、数据库或其他服务。每一开放端口都是一扇门,门越多风险越大,该开的端口只留必要的,其余全部关闭。
云厂商安全组怎么用
对你买VPS的平台来说,安全组是一个虚拟防火墙,独立于VPS的操作系统之外,在流量进入服务器前先做一道过滤。
- 酷番云:轻量应用服务器在“防火墙”页面配置,云服务器CVM在“安全组”页面配置。
- 简米云:ECS实例在“安全组”规则里配置,支持添加IP段、协议、端口范围。
具体设置为:只放行 22 或你改后的SSH端口、80 和 443(如果有网站),其他端口一律拒绝。这一步比本机防火墙更重要,因为流量在云网络层就被拦住了,不进系统,占用资源少且不容易被绕过。
本机防火墙做第二道防线
云安全组挡在外部,本机防火墙挡在系统内部,两道防线配合更稳妥,Ubuntu/Debian用UFW,CentOS用firewalld。
以UFW为例:

ufw default deny incoming ufw allow 2222/tcp ufw allow 80,443/tcp ufw enable
第一条命令把入站流量默认设为拒绝,后面只放行明确允许的端口,别担心误伤,你主动发出去的出站连接不受影响。
| 加固动作 | 解决的问题 | 耗时 |
|---|---|---|
| 修改SSH端口 | 绕过批量扫描工具的默认端口探测 | 5分钟 |
| 密钥登录 | 消除密码暴力破解风险 | 10分钟 |
| 云安全组收缩端口 | 隐藏不必要服务,减少暴露面 | 10分钟 |
| 本机防火墙默认拒绝 | 兜底防止服务意外对外开放 | 5分钟 |
| fail2ban自动封禁 | 对可疑IP动态拉黑 | 10分钟 |
防御不能只靠“静态”,动态封禁才是省心操作
上述设好之后,你的VPS已经从“四处漏风”变成了“门窗紧闭”,但扫描依旧每时每刻存在,日志里会出现大量失败的连接记录。让系统自动识别并封禁这些可疑IP,比自己手动拉黑高效得多。
fail2ban的具体配置
fail2ban会监控日志文件,当某个IP在一定时间内尝试登录失败的次数超过阈值,就自动将其加入防火墙黑名单。
Ubuntu下安装和配置:
apt install fail2ban cp /etc/fail2ban/jail.conf /etc/fail2ban/jail.local
编辑 jail.local,找到 [sshd] 段落,设置:
[sshd] enabled = true port = 你的SSH端口 maxretry = 3 bantime = 3600
maxretry 3 表示连续失败3次就封禁,bantime 3600 是封禁1小时,重启fail2ban生效:
systemctl restart fail2ban
之后你可以查看封禁记录:
fail2ban-client status sshd
可选进阶:端口敲门(Port Knocking)
如果你对安全有更高要求,可以安装端口敲门工具,它让SSH端口处于“未开放”状态,只有按顺序发送特定端口请求(比如先连21,再连80,再连443),防火墙才临时放行你的IP访问SSH。缺点是麻烦,适合个人高频使用、不常被人访问的管理场景,团队协作时不推荐。
日常运维习惯决定你的VPS能撑多久
都是“治标”的操作,可以一次配置到位,但服务器的安全不是你做完这些就一劳永逸,系统和软件的漏洞是动态暴露的,运营者要保持基本的更新习惯。

系统和软件包定期更新
及时修补已公开的服务漏洞,命令不复杂:
apt update && apt upgrade -y
对CentOS系统则是 yum update。每个月至少执行一次,或者直接启用自动安全更新:
apt install unattended-upgrades
备份和日志的定期检查
把这份成本花在备份上,比事后花钱恢复数据划算得多,常用方案是用 rsync 把关键数据同步到另一台机器或对象存储,或者用服务商提供的快照功能每周打一次快照,某天被入侵了,删除实例重开一台,从备份恢复,损失控制在一个小时以内。
日志审计不用天天看,但每月还是值得扫一眼 /var/log/auth.log 或 secure 文件的登录记录,确认没有异常的认证成功记录。如果你发现某个IP登录成功了但你并不认识,那才是真正的危险信号。
常见问题
VPS被扫描就一定会被入侵吗?
不会,扫描是攻击前的信息收集动作,类似于“踩点”,扫描到开放端口不等于找到漏洞,更不等于完成攻击,如果你已经关闭多余端口、禁用密码登录、修补了已知漏洞,扫描器基本拿你没办法,只有弱密码、未修补的漏洞、或者运行了有公开EXP的危险服务,扫描才会转化为实际的入侵。
修改SSH端口会不会影响网站的访问速度或业务?
完全不影响,SSH用于远程管理,网站访问走80和443端口,两者互不相干,唯一需要留意的是,部分云服务商的安全组默认只放行22端口,你修改SSH端口后需要在控制台同步放行新端口,同时确保本机防火墙也放行,否则可能出现外部连不上的情况。
一套免费防火墙方案足够保护VPS吗?
防火墙只是基础防线,它的职责是控制网络可达性,不负责识别攻击内容,足够的安全防护由多层构成:防火墙做端口管控、密钥认证做登录防护、fail2ban做动态封禁、系统更新做漏洞修复,四者缺一不可,免费工具组合起来,效果不输商业安全软件,前提是你愿意花点时间做初始配置,据酷番云安全团队公开的威胁趋势分析,多数云上入侵事件都源于弱口令和未修补漏洞,而不是防火墙缺失。