
核心要点(TL;DR)
- SSH 暴力破解可通过分析 /var/log/secure 或 auth.log 快速定位攻击 IP。
- AegisX 支持自动封禁高频失败 IP,减少手动干预。
- 配置防火墙规则时,优先使用 ipset 提升封禁效率。
- 定期检查登录日志并设置告警,能提前发现异常扫描。
凌晨三点,服务器 CPU 飙升,登录日志里塞满了来自全球各地的 SSH 失败记录——这是不少运维和站长都经历过的噩梦。SSH 暴力破解不仅消耗资源,还可能成为入侵的跳板。本文提供一套基于 AegisX 的快速封禁攻击 IP 的实战步骤,从日志分析到自动化防护,让你在 10 分钟内构建有效防线。
一、SSH 暴力破解的危害与常见迹象
攻击者利用自动化工具,尝试大量用户名和密码组合,一旦得手即可植入挖矿木马、勒索软件或窃取数据。常见迹象包括:
- 系统负载异常升高,`top` 显示大量 sshd 进程。
- 日志中频繁出现 `Failed password` 或 `Invalid user` 记录。
- 网络连接数激增,`netstat -an | grep :22 | wc -l` 数值远高于正常。
- 收到云服务商的安全告警邮件。
若发现上述情况,应立即排查并封禁攻击源。
二、快速定位攻击 IP:日志分析实战
不同发行版日志路径不同:CentOS/RHEL 为 `/var/log/secure`,Ubuntu/Debian 为 `/var/log/auth.log`。执行以下命令提取失败次数最多的 IP:
grep 'Failed password' /var/log/secure | awk '{print $(NF-3)}' | sort | uniq -c | sort -nr | head -20
输出示例:
1523 192.0.2.1
987 198.51.100.2
456 203.0.113.3
这些 IP 就是主要攻击源。还可以用 `lastb` 查看失败登录列表,或 `grep 'Invalid user' /var/log/secure | awk '{print $(NF-2)}' | sort | uniq -c | sort -nr` 找出尝试非法用户名的 IP。
三、手动封禁:iptables 与 ipset 高效操作
对于少量 IP,可直接用 iptables 封禁:
iptables -I INPUT -s 192.0.2.1 -j DROP
但攻击 IP 往往成百上千,逐条添加效率低下。推荐使用 ipset 创建黑名单集合:
ipset create ssh_blacklist hash:ip
ipset add ssh_blacklist 192.0.2.1
iptables -I INPUT -m set --match-set ssh_blacklist src -j DROP
之后只需 `ipset add` 即可快速封禁,且规则数量不影响性能。注意保存 ipset 规则:`ipset save > /etc/ipset.conf`,并设置开机恢复。
四、使用 AegisX 自动化封禁:配置与实战
AegisX 是一款轻量级服务器安全防护工具,支持实时监控 SSH 日志并自动封禁恶意 IP。安装后,编辑配置文件 `/etc/aegisx/aegisx.conf`:
[ssh]
enabled = true
log_path = /var/log/secure
threshold = 5
time_window = 300
ban_time = 3600
whitelist = 127.0.0.1, 192.168.1.0/24
参数说明:
- threshold:300 秒内失败 5 次即触发封禁。
- ban_time:封禁时长(秒),3600 表示 1 小时。
- whitelist:白名单 IP 或网段,避免误封。
启动服务:`systemctl start aegisx && systemctl enable aegisx`。查看封禁列表:`aegisx list`。手动解封:`aegisx unban 192.0.2.1`。
AegisX 会自动调用 ipset 或 iptables 执行封禁,并记录日志到 `/var/log/aegisx.log`。建议先开启观察模式(`dry_run = true`),确认规则无误后再正式启用。
五、SSH 安全加固检查清单
封禁只是应急手段,长期防护需结合以下措施:
| 措施 | 操作 | 效果 |
|---|---|---|
| 修改默认端口 | 编辑 `/etc/ssh/sshd_config`,设置 `Port 2222` | 减少自动化扫描 |
| 禁用 root 登录 | 设置 `PermitRootLogin no` | 防止直接攻击最高权限 |
| 启用密钥认证 | 设置 `PasswordAuthentication no` | 杜绝密码爆破 |
| 限制用户来源 | 使用 `AllowUsers user@192.168.1.*` | 仅允许可信 IP 登录 |
| 安装防护工具 | 部署 AegisX 或 Fail2Ban | 自动封禁恶意 IP |
修改配置后记得重启 SSH 服务:`systemctl restart sshd`。同时定期更新系统补丁,关闭不必要的服务。
六、行动建议:立即检查并部署防护
不要等到服务器被入侵才行动。现在登录你的服务器,执行 `grep 'Failed password' /var/log/secure | wc -l` 查看失败次数。如果数字惊人,立即按照本文步骤部署 AegisX 自动封禁,并逐项完成加固清单。安全无小事,一次有效的封禁可能避免一场灾难。
常见问题(FAQ)
如何查看服务器是否正在被 SSH 暴力破解?
登录服务器后,执行 `grep 'Failed password' /var/log/secure | awk '{print $(NF-3)}' | sort | uniq -c | sort -nr | head`(CentOS)或 `grep 'Failed password' /var/log/auth.log | awk '{print $(NF-3)}' | sort | uniq -c | sort -nr | head`(Ubuntu)。输出中尝试次数最多的 IP 即为攻击源,可进一步用 `lastb` 查看失败登录记录。
AegisX 如何自动封禁 SSH 暴力破解 IP?
AegisX 通过实时监控 SSH 日志,识别高频失败登录。当某 IP 在设定时间窗口内失败次数超过阈值,自动调用防火墙接口将其加入黑名单。支持自定义阈值、封禁时长和白名单,无需手动编写脚本。
除了封 IP,还有哪些 SSH 安全加固措施?
建议修改默认 SSH 端口、禁用 root 密码登录、启用密钥认证、限制用户登录来源 IP,并安装 Fail2Ban 或 AegisX 等工具。同时定期更新系统补丁,关闭不必要的服务,降低攻击面。
封禁 IP 后如何避免误封正常用户?
设置白名单,将公司出口 IP、运维跳板机 IP 加入信任列表。调整封禁阈值,避免过于敏感。AegisX 支持观察模式,先记录不封禁,确认规则无误后再启用自动封禁。
AegisX 的封禁规则会持久化吗?重启服务器后是否失效?
AegisX 默认将封禁记录保存到数据库或本地文件,重启后自动恢复。若使用内存防火墙(如 ipset),需确保配置持久化,例如通过 `ipset save` 和 `ipset restore` 或系统服务实现开机加载。