・昨天的攻击导致服务器I/O负载飙升,最终宕机

我调查分析了攻击开始的时间段(16:50〜17:00)的系统日志,确认没有任何内核错误或I/O异常。
反复出现的,是大量SSH登录尝试痕迹,涉及无效用户如 “pentaho”、”test”、”lokesh”、”brisklore”、以及root账户等多个外部来源在集中进行非法访问尝试.
例如,通过以下命令查看日志
sudo journalctl –since “2025-10-28 16:50:00” –until “2025-10-28 17:00:00” -o short-iso
可以看到类似的登录失败信息反复出现:
Invalid user pentaho from 156.233.228.98 port 42898
Invalid user test from 47.180.114.229 port 59494
Invalid user brisklore from 103.61.225.169 port 39876
Invalid user lokesh from 47.180.114.229 port 34718
这是典型的SSH暴力破解行为(密码穷举)。
由于攻击源IP每分钟都在变化,基本可以判断是由僵尸网络(botnet)发起的自动化攻击。
・为应对这一威胁,我紧急部署并配置了fail2ban
fail2ban能够自动检测并阻止暴力破解行为。
我初步设置为:在10分钟内连续失败3次的IP地址,封锁其24小时
具体配置如下:
~# sudo nano /etc/fail2ban/jail.local
记入保存一下设置:
[DEFAULT]
# 封锁期间(24时间)
bantime = 24h
# 监控时间(10分)
findtime = 10m
# 容许失败次数
maxretry = 3
# 封锁时的动作
banaction = ufw
[sshd]
enabled = true
port = ssh
filter = sshd
logpath = /var/log/auth.log
backend = systemd
~# sudo systemctl restart fail2ban
~# sudo fail2ban-client status
Status
|- Number of jail: 1
`- Jail list: sshd
~# sudo fail2ban-client status sshd
Status for the jail: sshd
|- Filter
| |- Currently failed: 0
| |- Total failed: 0
| `- Journal matches: _SYSTEMD_UNIT=sshd.service + _COMM=sshd
`- Actions
|- Currently banned: 0
|- Total banned: 0
`- Banned IP list:
・今天同一时间段再次遭遇类似攻击,但得益于fail2ban的防护,服务器运行暂时稳定

以下是fail2ban记录的被封锁IP列表,均为疑似僵尸网络来源:
~# sudo fail2ban-client status sshd
Status for the jail: sshd
|- Filter
| |- Currently failed: 1
| |- Total failed: 538
| `- Journal matches: _SYSTEMD_UNIT=sshd.service + _COMM=sshd
`- Actions
|- Currently banned: 24
|- Total banned: 24
`- Banned IP list: 90.231.215.250 85.175.105.122 162.241.127.152 203.154.162.168 103.48.84.20 38.224.230.123 14.225.167.148 87.251.77.103 160.191.89.60 181.188.172.6 172.200.228.35 222.107.156.227 192.3.105.24 201.184.50.251 123.31.20.81 66.154.119.88 89.144.201.190 103.97.135.245 165.154.235.179 38.248.12.102 103.241.43.23 197.5.145.73 92.73.196.50 57.134.214.16
各国IP地址攻击统计(按数量排序)如下:

与昨天相同,美国IP数量最多。
这可能意味着攻击主要通过VPS或云主机发起。
・后续的防御加强计划
- 昨晚我尝试引入GeoIP防火墙,想设置为只允许来自日本国内的SSH连接。
- 我尝试执行 sudo apt install xtables-addons-common geoip-database -y 命令以启用GeoIP防火墙功能,但在安装最后阶段,xtables-addons-dkms 模块的编译在这台性能较弱的服务器上自己引发了高I/O负载,因此暂时放弃
- 已确认有效果的fail2ban的配置,稍后我计划将规则调整得更严格一些
- 打算在本周三天假期期间,评估以下安全强化措施:
- 修改SSH默认端口
- 强制使用公钥认证,禁用密码登录


评论