我的家庭服务器上线半小时就被机器人扫描,3个设置挡住了它们

我的家庭服务器上线半小时就被机器人扫描,3个设置挡住了它们

把一台服务器放到公网后,你大概会经历一个阶段:好奇地看着日志,观察有多少人对你的机器感兴趣。

我的经历是:服务器上线不到半小时,日志里已经充满了来自随机IP的登录尝试。不是寥寥几个好奇的点击,而是数百次。这台服务器甚至上一个小时前还不存在,就已经成了自动化扫描工具的目标。

这种情况并不罕见。互联网上每时每刻都有无数机器人扫描开放端口,寻找易受攻击的服务。SSH(端口22)是最常见的目标之一,因为它是远程管理的标准协议,几乎每台Linux服务器都运行着。

攻击者使用的工具通常是自动化的扫描器,如Zmap、Masscan或专门针对SSH的工具。这些工具以极高的速度扫描互联网上的开放端口,然后对发现的SSH服务尝试常见用户名和密码组合。

最常见的尝试包括root、admin、ubuntu、pi等用户名,配合password、123456、letmein等简单密码。如果服务器使用默认端口22且启用密码认证,攻击者很快就会获得访问权限。

即使你的密码很强,暴露的SSH服务仍然是一个风险点。攻击者可能尝试暴力破解、字典攻击,或者利用SSH服务本身存在的漏洞。

风险影响分析

一旦服务器被攻陷,攻击者可以做很多事:植入挖矿软件、建立僵尸网络节点、窃取数据、或者作为跳板攻击内网其他设备。对于家庭服务器来说,这些设备通常连接着家庭网络,风险会进一步扩散。

家庭服务器往往存储着个人数据,包括照片、文档、媒体文件等。一旦泄露,这些数据的私密性就受到了威胁。如果服务器还作为文件共享或备份用途,风险会更大。

虽然家庭服务器一般不涉及严格的合规要求,但如果服务器上运行着涉及敏感数据的服务(如智能家居控制、个人财务管理),数据泄露可能带来法律和风险问题。

解决方案

在服务器上运行以下命令,查看最近的SSH活动:

1
sudo journalctl -u ssh --since "1 hour ago" | grep -Ei "failed|invalid|disconnect|authentication"

你会看到大量的失败登录尝试,使用常见的用户名如root、admin等。这些就是机器人扫描的证据。

另一个有用的命令是查看当前监听的端口:

1
sudo ss -tulpn

这显示SSH正在端口22上监听,这也是机器人优先扫描的目标。

SSH扫描攻击有几个特点。

速度快:自动化扫描器可以在几分钟内扫描数百万台设备。

范围广:攻击者不针对特定目标,而是广泛扫描所有开放端口。

持续性强:即使你阻止了一个IP,攻击者会使用其他IP继续尝试。

策略简单:大多数攻击使用预定义的用户名和密码列表,不针对特定用户。

编辑SSH配置文件:

1
sudo nano /etc/ssh/sshd_config

找到PasswordAuthentication行,改为:

1
PasswordAuthentication no

这阻止了所有密码登录尝试。只有拥有正确私钥的用户才能登录。

生成密钥对(如果还没有):

1
2
ssh-keygen -t ed25519
ssh-copy-id user@server

在sshd_config中修改Port:

1
Port 2222

这将SSH服务从默认的22端口移到2222端口。大多数扫描器只扫描默认端口,改变端口可以显著减少扫描量。

重启SSH服务:

1
sudo systemctl restart sshd

配置iptables或ufw,只允许特定IP访问SSH端口:

1
2
sudo ufw allow from your.ip.address to any port 2222
sudo ufw enable

这确保只有你的IP地址可以连接到SSH服务。

设置日志监控,定期检查SSH活动:

1
sudo tail -f /var/log/auth.log | grep ssh

使用fail2ban等工具,自动阻止频繁尝试的IP:

1
2
sudo apt install fail2ban
sudo systemctl enable fail2ban

保持系统更新,及时修补SSH漏洞:

1
sudo apt update && sudo apt upgrade

在安全运营中,我们见过太多类似的案例:攻击者不是通过复杂的零日漏洞进入系统,而是利用了最基础的配置错误。

SSH服务的暴露面管理是网络安全的基础。对于企业环境,我们建议所有SSH服务必须使用密钥认证,禁用密码认证;使用VPN或跳板机,而不是直接暴露SSH到公网;实施网络分段,限制SSH访问范围;部署入侵检测系统,实时监控异常登录尝试。

家庭服务器暴露在公网后,很快会成为自动化扫描的目标。通过三个简单的配置改变,可以显著降低被攻击的风险。

核心要点:

禁用密码认证,改用密钥认证。

更改默认SSH端口,减少扫描发现。

使用防火墙限制访问IP。

保持系统更新,监控日志活动。

安全不仅仅是安装软件,而是正确的配置和持续的管理。

SSH扫描日志

服务器上线后半小时内的SSH登录尝试日志


原文来源:MakeUseOf