暴力破解的日志特征与封禁策略
发布时间:2026-08-20 11:11       
更新时间:2026-08-21 06:30
登录服务器时偶尔卡一下,翻日志发现满屏 Failed password——这是暴力破解正在进行。攻击者拿密码字典反复尝试 SSH 或后台登录,得手的标志就是日志里多出一条 Accepted password。处理按三步走。
准备条件:具备 root 权限,系统为 CentOS 或 Ubuntu 主流版本,能联网安装软件包。确认过系统版本再动手,两个发行版的安装命令略有差异,CentOS 用 yum install fail2ban,Ubuntu 用 apt install fail2ban,装完先确认服务处于运行状态。
第一步,确认攻击规模。Ubuntu 看 /var/log/auth.log,CentOS 看 /var/log/secure,统计来源:
grep 'Failed password' /var/log/auth.log | awk '{print $(NF-3)}' | sort | uniq -c | sort -rn | head
列出尝试次数最多的来源 IP。统计命令里的字段位置随日志格式略有差异,执行前先翻两行原始日志,核对字段位置对不对得上。再用 lastb 命令查看失败登录记录,确认攻击集中的账户名——多半是 root 与 admin 这类默认名字。
第二步,部署 fail2ban 自动封禁。手动一个个封 IP 追不上攻击源的轮换,fail2ban 负责监控日志并自动调用防火墙封禁。安装后编辑 /etc/fail2ban/jail.local:
[sshd]
enabled = true
maxretry = 5
findtime = 600
bantime = 3600
含义是十分钟内失败五次即封禁一小时,阈值可按业务情况调整。启动并设开机自启:systemctl enable --now fail2ban。
第三步,验证与收敛。执行 fail2ban-client status sshd 查看封禁列表,确认规则生效;再用错误密码连续登录五次,验证封禁是否真的触发。数据库、面板等其他入口的破解尝试,同样可以按这个思路建对应的 jail,配置结构一致,改一下日志路径与过滤规则即可。根本性的收敛动作有三个:改用密钥登录并在 sshd_config 里设 PasswordAuthentication no,关闭密码认证;SSH 换到高位端口,避开全网扫描的第一波;管理端口在安全组里只对固定出口 IP 开放。
常见报错:fail2ban 启动后一个 IP 都不封,多半是 jail 配置里的日志路径与发行版不符,核对 logpath 指向;把自己封在门外的,从服务商控制台的远程连接进去,把自己的 IP 写入 ignoreip 白名单。切换密钥登录前,先在另一个终端验证新密钥能正常登录,再关密码认证,给自己留一条退路。封禁解决的是骚扰,关掉密码认证才算断根。