服务器 SSH 防御实录:3 万次攻击后的幸存者报告
在这个“万物互联”的时代,只要你的服务器拥有公网 IP 并且开启了 SSH 端口,那么毫无疑问,你已经成为黑客脚本眼中的猎物。
最近我也检查了一台挂在网上很久的小服务器,日志里的数据让人触目惊心,但同时也验证了一个极其有效的安全防护方案。今天就借着这第一手的数据,跟大家聊聊如何低成本、高效率地保护好你的 VPS。
🛡️ 防御三板斧:我的部署方案
在展示数据之前,先交代一下这台服务器的安全配置。这也是我推荐给所有新手博主的“标配”方案:
- 修改默认端口:将 SSH 端口从 22 改为了
22222。虽然这属于“隐匿式安全”,但不能直接过滤掉大量针对默认端口的低级全网扫描。 - 强制密钥登录:完全禁用了密码登录功能。这在物理上杜绝了弱口令被暴力破解的可能性。
- 部署 Fail2ban:这是防爆破的核心工具,用于监控日志,自动拉黑那些多次尝试失败的 IP。
📊 触目惊心的实战数据
即便做了上述准备,恶意流量从未停止。以下是这台服务器的“战报”概况:
- 累计发现失败次数:32,147 次
- Fail2ban 累计封禁 IP:419 个
- 当前被封禁中的 IP:419 个(满额封禁状态)
哪怕是在我截图的时刻(下午 13:22),依然有 4 个 IP 在不知疲倦地进行着暴力攻击。更有意思的是,即便已经被 Fail2ban 封禁,有些攻击源(如部分国内 IP)仍在尝试连接,仿佛不撞南墙不回头。
🎯 黑客都在怎么攻击?
透过日志分析,我们可以清晰地看到攻击者的画像和策略。
1. 攻击源分布
虽然我的服务器在国内,但攻击源遍布全球,最近的活跃 IP 包括来自美国和中国各地的节点。值得注意的是,攻击通常是自动化的僵尸网络发起的,所以并不局限于某个特定国家。
2. 疯狂的用户名猜测
攻击者并非随机乱猜,他们有一套固定的“热门用户名字典”。通过统计,被尝试次数最多的用户名如下:
- ubuntu(749 次):显然,攻击者默认这很可能是一台 Ubuntu 服务器。
- admin(272 次):永恒的管理员账户。
- user(152 次) & test(94 次):常见的测试账户。
- pi(80 次):针对树莓派或类似架构的常见用户名。
- 数据库相关:postgres, ftpuser, oracle 等。
看到这里你应该明白,为什么永远不要使用这些默认的用户名作为你服务器的登录账号了。哪怕你用了密钥,让别人猜到用户名也会增加日志噪音。
3. “执着”的 TOP 攻击者
榜单上最夸张的一个 IP(45.198.224.141)单台机器就尝试了 1,353 次!这种强度的攻击如果没有 Fail2ban 拦截,光是日志就能把你的硬盘写满,更别提 CPU 资源的消耗了。
✅ 为什么这套方案最有效?
从目前的防御状态来看:
- 日志中全是
Invalid user/preauth:这说明任何试图连接的请求都在密码验证阶段之前就被切断,或者因为用户名不存在而被拒绝。禁用密码登录的配置生效了。 - 零非授权登录:截至目前,没有发生任何成功的入侵事件。
- 高位端口过滤了批量扫描:虽然修改端口不能挡住定向扫描(如端口扫描器全端口扫),但确实过滤掉了全网范围内只扫 22 端口的大量垃圾流量。
💡 进阶建议与总结
如果你也觉得自己服务器最近有点卡,或者日志刷屏太快,不妨检查一下 /var/log/auth.log(或 secure)。
除了上述提到的“三板斧”,还有一个补充方案非常适合个人博客或家用服务器——白名单策略。
如果你是固定 IP 上网(比如公司专线或家庭宽带的固定 IP),直接在防火墙层面只允许自己的 IP 访问 SSH 端口,这才是真正的“无敌模式”。但对于经常移动办公或不定 IP 的用户,Fail2ban + 密钥 + 非默认端口 依然是性价比最高的平衡方案。
不要心存侥幸,安全防护刻不容缓。哪怕你的服务器里没什么重要数据,被肉鸡后拿去挖矿或发垃圾邮件也是大麻烦。赶紧去检查一下你的配置吧!
评论已关闭