一个让人不安的发现

小李刚买了人生第一台云服务器,兴冲冲地配置好环境,准备搭建自己的网站。服务商给的密码很复杂,16位字符,大小写字母、数字、特殊符号一应俱全。他觉得这样应该够安全了吧?

出于好奇,他看了一眼系统日志,瞬间愣住了——密密麻麻全是失败的登录记录:

Failed password for root from 192.168.x.x
Failed password for admin from 103.x.x.x
Failed password for root from 185.x.x.x

才开通不到一小时,已经有上百次来自全球各地的登录尝试!这是怎么回事?

真相是:你的服务器从上线第一秒起,就暴露在全世界的扫描之下。

互联网的黑暗森林

在互联网上,有数百万台自动化扫描机器人,像"扫街"一样24小时不停地遍历所有IP地址。它们的工作流程很简单:

  1. 扫描一个IP地址的常用端口(比如SSH的22端口)
  2. 发现端口开放?立即开始尝试登录
  3. 用字典里的常见用户名和密码组合暴力破解
  4. 破解失败?没关系,继续下一个IP

这就像是有无数的"电子小偷",每天挨家挨户地试门把手,看看哪家的门没锁好。

为什么复杂密码还不够?

你可能会想:服务商给的密码这么复杂,应该破解不了吧?

理论上是的。但问题在于:

  • 攻击者有的是时间和计算资源,可以持续尝试几个月甚至几年
  • 大量的尝试本身就是威胁,会消耗服务器资源,日志会被刷爆
  • 软件漏洞防不胜防,万一哪天SSH出现0day漏洞,密码再复杂也没用

就像你家门锁再好,小偷每天来撬1000次,你受得了吗?

IPv6地址能躲开扫描吗?

这里有个小知识:

  • IPv4地址:全球只有约43亿个,扫描一遍并不难
  • IPv6地址:有340万亿亿亿亿个(2的128次方),想要全部扫描一遍基本不可能

所以,只有IPv6地址的服务器被随机扫描的概率确实低很多。但这不代表可以高枕无忧——如果你的地址被泄露,或者被定向攻击,一样会中招。

主动防御,永远比被动躲避更安全。

两招让黑客"找不到门、进不了家"

今天教你两个小白也能轻松操作的安全措施,30分钟让你的服务器安全系数提升10倍。

第一招:换成钥匙进门(SSH密钥认证)

为什么要这么做?

想象一下:

  • 密码登录就像用"数字密码锁",理论上可以被试出来
  • 密钥登录就像用"指纹锁",只有你的指纹能开门

密钥是一串2048位或4096位的随机字符,想要暴力破解?用全世界的计算机算到宇宙毁灭也算不出来。

原理很简单

你生成一对钥匙:

  • 私钥:放在你自己电脑里(相当于你的指纹)
  • 公钥:装在服务器的门上(相当于指纹识别器)

登录时,服务器用公钥验证你的私钥。只有配对成功才能进门,其他任何人都进不来。

小白操作指南

第一步:在你的电脑上生成密钥对

Windows用户(使用PowerShell):

ssh-keygen -t ed25519

Mac/Linux用户(打开终端):

ssh-keygen -t ed25519

按提示操作,一路回车即可(无需设置 passphrase,除非你想要双重加密)。密钥会保存在 ~/.ssh/id_ed25519(私钥)和 ~/.ssh/id_ed25519.pub(公钥)。

第二步:把公钥上传到服务器

最简单的方法(在你的电脑上执行):

ssh-copy-id -i ~/.ssh/id_ed25519.pub 用户名@服务器IP

如果上面的命令不行,也可以手动操作:

  1. 在本地打开 id_ed25519.pub 文件,复制里面的全部内容。
  2. 登录 VPS,执行:
mkdir -p ~/.ssh
echo "粘贴你的公钥内容" >> ~/.ssh/authorized_keys
chmod 700 ~/.ssh
chmod 600 ~/.ssh/authorized_keys

第三步:测试密钥登录

新开一个终端窗口,尝试登录:

ssh 用户名@服务器IP

如果不用输入密码就登录成功了,恭喜你,密钥配置成功!

第四步:禁用密码登录

⚠️ 重要提示:确保密钥能正常登录后,再执行这一步!

编辑SSH配置文件:

sudo nano /etc/ssh/sshd_config

找到并修改这两行:

PasswordAuthentication no
PubkeyAuthentication yes

重启SSH服务:

sudo systemctl restart sshd

从此以后,黑客就算试到天荒地老,也猜不出你的"指纹"。

第二招:进阶建议,换个门牌号(修改SSH端口)

为什么要这么做?

全世界99%的扫描机器人都在敲"22号门",因为这是SSH的默认端口。

你只需要把门牌号改成"23456",绝大部分机器人就找不到你的门了。

这听起来像是"安全依靠隐蔽",确实是。但非常有效——就像小偷都知道大家把备用钥匙藏在门垫下,你换个地方藏,他就找不到了。

小白操作指南

第一步:选一个新端口号

建议范围:10000-65535,比如 22022、23456、52222 都可以。

第二步:防火墙先放行新端口

⚠️ 关键步骤:必须先放行,再修改配置,否则会把自己锁在门外!

如果用的是云服务器,在云服务商的控制台找到"安全组"或"防火墙"设置,添加一条规则:

  • 端口:你选的新端口
  • 协议:TCP
  • 来源:0.0.0.0/0(允许所有IP)

第三步:修改SSH配置

编辑配置文件:

sudo nano /etc/ssh/sshd_config

找到这一行(可能有#注释符):

#Port 22

改成:

Port 23456

(23456是举例,改成你选的端口号)

第四步:重启SSH服务

⚠️ 重要:不要关闭当前SSH连接,保持窗口开着!

执行:

sudo systemctl restart sshd

第五步:测试新端口

新开一个终端窗口,用新端口登录:

ssh -p 23456 用户名@服务器IP

测试成功后,才能关闭旧窗口。万一改错了还有救。

改完之后,世界清净了

配置完这两招,再看看日志,你会发现:

改之前:每小时上百次失败登录,各种奇怪的IP地址
改之后:基本没有攻击尝试了,偶尔有几个扫全端口的也进不来

虽然不代表绝对安全,但攻击面已经缩小了99%。

两招配合使用,效果1+1>2

  • 只改端口:降低被扫概率,但密码仍可能被破解
  • 只用密钥:很安全,但日志会被无效尝试刷爆
  • 组合使用:找不到门 + 进不了家 = 双重保险

就像给家里装了"隐形门"+"指纹锁",小偷连门在哪儿都找不到,就算找到了也开不了。

写在最后

今天讲的这两招,是保护服务器最基础、最有效的方法。实施起来不超过30分钟,但能让你安心很多。

当然,服务器安全是一个系统工程,还有很多进阶措施:

  • 使用fail2ban自动封禁攻击者
  • 配置防火墙只开放必要端口
  • 禁用root直接登录
  • 启用双因素认证

这些内容我们后续再聊。

记住一句话:在互联网上,你的服务器永远不是"孤岛",它时刻处在全世界的注视之下。

现在,就去给你的VPS加把锁吧!


你的服务器被扫过吗?操作中遇到问题?欢迎在评论区留言讨论!