一个让人不安的发现
小李刚买了人生第一台云服务器,兴冲冲地配置好环境,准备搭建自己的网站。服务商给的密码很复杂,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地址。它们的工作流程很简单:
- 扫描一个IP地址的常用端口(比如SSH的22端口)
- 发现端口开放?立即开始尝试登录
- 用字典里的常见用户名和密码组合暴力破解
- 破解失败?没关系,继续下一个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
如果上面的命令不行,也可以手动操作:
- 在本地打开 id_ed25519.pub 文件,复制里面的全部内容。
- 登录 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加把锁吧!
你的服务器被扫过吗?操作中遇到问题?欢迎在评论区留言讨论!