别以为改了高位端口SSH就安全了,这事没那么简单
别以为改了高位端口SSH就安全了,这事没那么简单
SSH 服务配置示例
前两年玩 VPS 的时候,圈子里最流行的一条“潜规则”就是:买来机器第一件事,把 SSH 默认的 22 端口改成什么 22222、45678 之类的高位端口。
理由很简单粗暴:全网扫描 22 端口的脚本太多了,改成高位能“劝退”一波基于默认端口的自动化攻击,省点 CPU 和流量。
但最近这招好像不太灵了。好几个哥们反应,明明把端口改到了 5 位数,日志里还是会冒出一大堆莫名其妙的登录尝试记录。高位端口防扫描,是不是已经成为上个时代的过时经验了?
为什么高位端口现在也被盯上了?
以前那种“只扫 22 端口”的脚本确实还存在,但现在的黑客(或者说僵尸网络管理者)早就升级了打法。
-
算力富余,全端扫描不心疼:现在挖矿木马和僵尸网络铺天盖地,黑客手里的肉鸡算力多得是。以前扫一个 IP 段只看 22 端口可能需要几秒钟,现在全网并发扫 1-65535 全端口也就是一瞬间的事。成本极低,没必要为了省那点资源放过潜在的高位端口。
-
指纹识别技术升级:现代扫描器不光看端口开没开,还会探测端口上运行的服务指纹。SSH 的握手过程特征非常明显,无论你躲在哪个端口,只要一握手,对方就知道这是 SSH 服务。
密钥验证原理
- 撞库是通用的:无论你是 22 还是 22222,对于弱口令扫描器来说没有区别。它们不在乎端口,只在乎能不能爆破进去。
所以,单纯修改 SSH 端口,现在更多只能起到“减少日志噪音”的作用,彻底防住暴力破解?门儿都没有。
真正的硬核防护该怎么搞?
既然靠“躲”已经不行了,我们就得靠“防”。与其纠结端口号是多少,不如把登录门槛筑成铜墙铁壁。这里给几条实操性很强的建议,按优先级排序。
1. 强制密钥登录,关闭密码验证(核心)
这是最最重要的一条!如果你的 SSH 还在支持密码登录,那你就是在给全世界发邀请函。
- 原理:私钥在你本地,公钥在服务器。如果没有私钥,数学上几乎不可能破解成功。
- 操作:修改
/etc/ssh/sshd_config,把PasswordAuthentication改为no,确保PubkeyAuthentication是yes。
# 推荐配置片段
PasswordAuthentication no
PubkeyAuthentication yes
做完这一步,哪怕把端口开在 22 上,黑客对着你的服务器跑上几百年暴力破解算法也进不去。这才是真正的安全感。
2. 上 Fail2Ban,自动封禁暴力 IP
虽然密钥登录已经无敌,但看着日志里成千上万条的“Failed password”也很闹心,而且也会消耗一点系统资源。Fail2Ban 就是专门干这个的“保安”。
-
原理:扫描日志文件,一旦发现某个 IP 在短时间内尝试登录失败次数超过阈值(比如 3 次),就自动调用防火墙(iptables 或 firewalld)把这个 IP 封掉一段时间。
-
简易配置思路:
- 安装 Fail2Ban:
apt install fail2ban或yum install fail2ban。 - 创建一个
jail.local文件,设置maxretry(最大重试次数)和findtime(时间窗口),建议设得严一点,比如 10 分钟内失败 3 次就封禁 1 天。
- 安装 Fail2Ban:
3. 只有内网才需要开放 SSH 吗?用 VPN 或 WireGuard
如果你只有一两台机器,或者是私人折腾,其实完全没必要把 SSH 暴露在公网上。
- 方案:搭建一个 WireGuard 或者 Tailscale 虚拟局域网。你想管理服务器时,先连进 VPN,然后在内网 IP 直连 SSH。
这样做的好处是,公网上根本没人知道你有 SSH 服务,彻底切断了攻击面。哪怕你密码设成 123456(当然不建议这么做),外人也摸不到门。
4. 瘦身 SSH 配置
n在不影响使用的前提下,尽量限制 SSH 的功能。例如:
- 限制登录用户:只允许特定用户(比如你自己创建的
admin)登录,禁止root直接登录。PermitRootLogin no AllowUsers your_username - 使用新协议:如果客户端支持,尽量只开启 SSH-2。
总结
改高位端口 = 心理安慰 + 减少低级噪音,但不等于安全。
在 2026 年的今天,服务器安全不能靠“掩耳盗铃”。想要睡觉踏实,请务必执行这三步走战略:强制密钥登录 > 部署 Fail2Ban > 考虑 VPN 内网管理。
别等到机器被用来挖矿或者是跑 DDOS 脚本了,才想起来去查日志。动手加固吧,越早越好!

评论已关闭