SSH 一直被暴力破解怎么办:云服务器安全加固与 fail2ban 实战配置 核心要点图解,fail2ban 可自动分析 SSH 日志并封禁暴力破解 IP,是低成本高效防护手段。;配置 SSH 密钥登录并禁用密码认证,能从根源上阻断暴力破解。;定期检查 /var/log/auth.log 或 secure 日志,及时发现异常登录尝试。;结合防火墙限制 SSH 端口访问来源,可大幅降低攻击面。
SSH 一直被暴力破解怎么办:云服务器安全加固与 fail2ban 实战配置 · 核心要点一图读懂(AegisX)

核心要点(TL;DR)

  • fail2ban 可自动分析 SSH 日志并封禁暴力破解 IP,是低成本高效防护手段。
  • 配置 SSH 密钥登录并禁用密码认证,能从根源上阻断暴力破解。
  • 定期检查 /var/log/auth.log 或 secure 日志,及时发现异常登录尝试。
  • 结合防火墙限制 SSH 端口访问来源,可大幅降低攻击面。

痛点引入:SSH 暴力破解的威胁与应对价值

作为运维或站长,你是否经常在日志中看到大量 SSH 登录失败记录?这往往是暴力破解攻击的信号。攻击者利用自动化工具尝试常见用户名和弱口令,一旦得手,服务器将面临数据泄露、勒索软件植入等风险。本文将从实战角度出发,手把手教你通过云服务器安全加固与 fail2ban 配置,有效阻断 SSH 暴力破解,提升服务器安全基线。

一、确认攻击:分析 SSH 登录日志

在采取行动前,先确认服务器是否正在遭受暴力破解。Linux 系统通常将 SSH 登录日志记录在 /var/log/auth.log(Debian/Ubuntu)或 /var/log/secure(CentOS/RHEL)。使用以下命令快速统计失败登录次数:

grep 'Failed password' /var/log/auth.log | wc -l

若输出数字较大(如数百次),说明攻击正在进行。进一步查看攻击来源 IP:

grep 'Failed password' /var/log/auth.log | awk '{print }' | sort | uniq -c | sort -nr | head -20

这将列出尝试次数最多的 IP,便于后续针对性封禁。

二、fail2ban 实战:自动封禁攻击 IP

fail2ban 是一款入侵防御工具,通过监控日志文件,自动封禁多次登录失败的 IP。以下以 Ubuntu 为例,其他发行版类似。

1. 安装 fail2ban

sudo apt update
sudo apt install fail2ban -y

2. 创建本地配置文件

避免直接修改 jail.conf,创建 jail.local:

sudo cp /etc/fail2ban/jail.conf /etc/fail2ban/jail.local
sudo nano /etc/fail2ban/jail.local

在 [sshd] 部分调整参数(若没有则手动添加):

[sshd]
enabled = true
port = ssh
filter = sshd
logpath = /var/log/auth.log
maxretry = 3
bantime = 3600
findtime = 600

解释:maxretry 为最大失败次数,bantime 为封禁时长(秒),findtime 为检测时间窗口。此处设置为 10 分钟内失败 3 次即封禁 1 小时。

3. 启动并启用服务

sudo systemctl restart fail2ban
sudo systemctl enable fail2ban

4. 验证状态

sudo fail2ban-client status sshd

输出将显示当前封禁的 IP 列表及统计信息。

三、SSH 服务深度加固:密钥认证与端口修改

fail2ban 虽能缓解暴力破解,但根治需强化 SSH 自身配置。

1. 禁用密码认证,启用密钥登录

生成密钥对(本地操作):

ssh-keygen -t ed25519

将公钥上传至服务器:

ssh-copy-id -i ~/.ssh/id_ed25519.pub user@server_ip

修改服务器 SSH 配置 /etc/ssh/sshd_config:

PubkeyAuthentication yes
PasswordAuthentication no
ChallengeResponseAuthentication no

重启 SSH 服务:

sudo systemctl restart sshd

2. 修改默认端口

编辑 /etc/ssh/sshd_config,将 Port 22 改为非标准端口(如 2222),并更新防火墙规则。此举可减少自动化扫描。

3. 限制访问来源 IP

使用防火墙仅允许可信 IP 访问 SSH 端口:

sudo ufw allow from 192.168.1.0/24 to any port 2222 proto tcp

或使用 iptables 精细控制。

四、检查清单与持续监控

完成配置后,使用以下清单核查:

  • fail2ban 服务运行正常,sshd jail 已启用。
  • SSH 密码认证已禁用,密钥登录测试通过。
  • SSH 端口已修改,防火墙规则已更新。
  • 日志监控告警设置(如 logwatch 或自定义脚本)。
  • 定期更新系统和 SSH 软件包。

建议每日检查 fail2ban 日志 /var/log/fail2ban.log,关注封禁动态。

五、进阶防护:AegisX 能力集成

对于企业环境,可结合 AegisX 的入侵检测与自动响应能力,实现更智能的 SSH 防护。AegisX 能实时分析登录行为,联动防火墙动态封禁,并提供可视化报表,减轻运维负担。

行动建议

立即登录服务器,按照上述步骤配置 fail2ban 并加固 SSH。安全非一日之功,建议每月复查日志与规则,保持警惕。动手实践,让暴力破解无处遁形!

常见问题(FAQ)

SSH 暴力破解攻击是如何进行的?

攻击者使用自动化工具(如 Hydra、Medusa)尝试大量用户名/密码组合,利用弱口令或默认凭证入侵服务器。常见目标为 root 账户和常见用户名,攻击频率高,需及时防护。

fail2ban 如何保护 SSH 服务?

fail2ban 监控 SSH 日志文件,检测多次登录失败后,自动调用防火墙规则临时封禁来源 IP。默认封禁 10 分钟,可自定义阈值和时长,有效阻止暴力破解。

除了 fail2ban,还有哪些 SSH 安全加固措施?

建议禁用密码认证,改用 SSH 密钥登录;修改默认 SSH 端口;限制访问来源 IP;启用双因素认证;定期更新系统和 SSH 版本。多层防护可显著提升安全性。

如何检查服务器是否正在被暴力破解?

查看 /var/log/auth.log(Debian/Ubuntu)或 /var/log/secure(CentOS/RHEL),搜索“Failed password”记录。使用命令 `grep 'Failed password' /var/log/auth.log | wc -l` 统计失败次数,若频繁出现则表明正在被攻击。

fail2ban 配置后不生效怎么办?

检查 fail2ban 服务状态 `systemctl status fail2ban`,确认日志路径正确,防火墙后端(iptables/firewalld)已安装并运行。使用 `fail2ban-client status sshd` 查看监控状态,调试模式 `fail2ban-client -d` 可输出详细日志。