我的家用服务器上线几分钟就被Bot扫描了——三个设置让它彻底安全

封面图


2026年7月,我搭建了一台小型 Linux 跳板机,用于统一管理内网中的多台家用服务器。想法很合理:一台暴露在公网的机器作为入口,其他设备藏在内网后面。

结果:服务器上线不到几分钟,SSH 端口就开始被全球 Bot 扫描。

这不是我的服务器被入侵了——是因为我做了正确的安全措施。但如果我没有做,后果可能不堪设想。


Bot 扫描有多快?

服务器上的真实日志:

1
2
3
4
5
6
7
# 服务器首次启动后,5分钟内收到的SSH失败登录尝试
Failed password for root from 185.220.101.xx port 44832 ssh2
Failed password for root from 45.155.205.xx port 59210 ssh2
Failed password for admin from 193.106.191.xx port 33847 ssh2
Failed password for ubuntu from 89.248.167.xx port 12934 ssh2
Invalid user test from 103.145.133.xx port 55291
Invalid user pi from 171.20.5.198 port 43821

这些 IP 来自不同的大洲,扫描工具包括 Hydra、Ncrack 以及更高级的分布式扫描框架。它们在目标端口的每一次尝试,都在消耗服务器资源,同时暴露了潜在的暴力破解风险。

Ubuntu SSH失败登录记录


三个关键设置

设置一:禁用 root 直接登录 + 强制密钥认证

1
2
3
4
# /etc/ssh/sshd_config
PermitRootLogin no
PasswordAuthentication no
PubkeyAuthentication yes

这是最基础也是最重要的一步。绝大多数 Bot 攻击的目标是 root 账户,禁用 root 登录直接堵死了最常见的攻击路径。同时关闭密码认证,只允许 SSH 密钥登录,让暴力破解彻底失效。

效果是:Failed password 类的日志归零。攻击者即使知道你的用户名,也无法通过密码尝试进入。

设置二:安装 Fail2ban

1
2
sudo apt install fail2ban
sudo nano /etc/fail2ban/jail.local
1
2
3
4
5
6
7
[sshd]
enabled = true
port = ssh
filter = sshd
maxretry = 3
bantime = 3600
findtime = 600

Fail2ban 会监控 SSH 日志,当同一 IP 在 10 分钟内失败登录超过 3 次时,自动将该 IP 加入防火墙黑名单 1 小时。

我的服务器上线后,Fail2ban 在头几个小时内就自动封禁了上百个扫描 IP。这些 IP 不再能访问服务器的任何端口。

Ubuntu端口监听状态

设置三:使用 Tailscale 替代端口转发

与其将 SSH 端口暴露在公网,不如使用 Tailscale(零配置 VPN)。

1
2
curl -fsSL https://tailscale.com/install.sh | sh
sudo tailscale up

安装完成后,服务器会获得一个 Tailscale 分配的 IP(如 100.x.x.x),只有加入了同一 Tailscale 网络的设备才能访问。SSH 端口不需要对公网开放。

攻击者根本无法扫描到你的 SSH 端口,因为端口对公网根本不存在。只有你信任的设备才能连接。

Tailscale连接界面


为什么很多人忽略了这些?

大多数家用服务器教程的重点是让服务可用,而不是让服务不可被攻击。

常见的入门指南会说:安装 OpenSSH,修改端口为 2222,然后用 PuTTY 连接。

它们不会告诉你:修改端口只是 security by obscurity,对真正的攻击者没有任何阻挡作用。也不会提到 Fail2ban 或 Tailscale 的存在。

结果就是:无数服务器暴露在公网,运行着默认的 SSH 配置,成为 Bot 扫描的持续目标。


更多进阶建议

更改默认 SSH 端口,虽然不能阻止扫描,但可以减少日志中的噪音。使用 SSH 证书,除了密钥之外进一步限制允许登录的用户和来源。定期用 last 命令查看最近登录,用 grep “Failed” /var/log/auth.log 分析攻击来源。启用双因素认证,即使密钥泄露,攻击者仍需第二因素。


总结

家用服务器暴露公网不是安全问题,不做好基础防护才是。默认 SSH 配置让服务器在几分钟内成为全球 Bot 扫描的目标。禁用 root 登录、强制密钥认证、部署 Fail2ban、使用 Tailscale 替代端口转发——这四个动作足够挡住绝大多数攻击。

任何暴露在公网的服务,都应以默认即被攻击为前提进行安全配置,而不是依赖没人会发现我的侥幸。


原文来源:MakeUseOf