
我的家庭服务器上线半小时就被机器人扫描,3个设置挡住了它们
Diebug我的家庭服务器上线半小时就被机器人扫描,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 | ssh-keygen -t ed25519 |
在sshd_config中修改Port:
1 | Port 2222 |
这将SSH服务从默认的22端口移到2222端口。大多数扫描器只扫描默认端口,改变端口可以显著减少扫描量。
重启SSH服务:
1 | sudo systemctl restart sshd |
配置iptables或ufw,只允许特定IP访问SSH端口:
1 | sudo ufw allow from your.ip.address to any port 2222 |
这确保只有你的IP地址可以连接到SSH服务。
设置日志监控,定期检查SSH活动:
1 | sudo tail -f /var/log/auth.log | grep ssh |
使用fail2ban等工具,自动阻止频繁尝试的IP:
1 | sudo apt install fail2ban |
保持系统更新,及时修补SSH漏洞:
1 | sudo apt update && sudo apt upgrade |
在安全运营中,我们见过太多类似的案例:攻击者不是通过复杂的零日漏洞进入系统,而是利用了最基础的配置错误。
SSH服务的暴露面管理是网络安全的基础。对于企业环境,我们建议所有SSH服务必须使用密钥认证,禁用密码认证;使用VPN或跳板机,而不是直接暴露SSH到公网;实施网络分段,限制SSH访问范围;部署入侵检测系统,实时监控异常登录尝试。
家庭服务器暴露在公网后,很快会成为自动化扫描的目标。通过三个简单的配置改变,可以显著降低被攻击的风险。
核心要点:
禁用密码认证,改用密钥认证。
更改默认SSH端口,减少扫描发现。
使用防火墙限制访问IP。
保持系统更新,监控日志活动。
安全不仅仅是安装软件,而是正确的配置和持续的管理。

服务器上线后半小时内的SSH登录尝试日志
原文来源:MakeUseOf