LinuxSSH被暴力破解_SSH入侵防护实战方案

9次阅读

真正有效的 ssh 防护是分层控制:先收敛入口(改端口、限 ip、禁 root)、再加固认证(禁密码、用密钥)、最后自动响应(fail2ban 封禁)并持续监控审计。

LinuxSSH 被暴力破解_SSH 入侵防护实战方案

Linux 服务器暴露在公网时,SSH 端口常成为暴力破解的首要目标。真正有效的防护不是堆砌工具,而是分层控制:先收敛入口、再加固认证、最后自动响应。以下方案基于生产环境验证,兼顾安全性与可维护性。

收敛访问入口

减少攻击面是最直接有效的第一步,重点是让自动化扫描器“看不见”你的服务。

  • 修改默认 SSH 端口至高位端口(如 22222 或 35678),避开 1024–10000 区间常见扫描范围;修改后需同步更新防火墙规则(如 firewalld 或 iptables)并开放新端口
  • 限制可登录的 IP 段,通过云平台安全组或本地防火墙仅放行管理员常用出口 IP;若 IP 不固定,至少设置白名单网段(如公司办公区 C 类地址)
  • 禁用 root 远程登录,避免攻击者直击最高权限账户;启用 PermitRootLogin no 并配合 AllowUsers 明确指定合法登录账户(如AllowUsers deploy admin

强化身份认证

密码是暴力破解的突破口,必须消除其存在价值。

  • 关闭密码认证:PasswordAuthentication noChallengeResponseAuthentication no,只保留PubkeyAuthentication yes
  • 为每个管理员生成独立密钥对(ed25519 优先),私钥本地加密保存,公钥严格部署到对应用户 ~/.ssh/authorized_keys
  • 禁用空密码账户,检查 /etc/shadow 中无 :: 字段(表示空密码),并确保所有远程账户密码字段非空

部署自动响应机制

即使做了前两步,仍可能遭遇定向攻击,需具备实时封禁能力。

  • 安装 fail2ban,配置/etc/fail2ban/jail.local:设置maxretry = 3findtime = 600(10 分钟内失败 3 次即封)、bantime = 86400(封 24 小时)
  • 日志路径按系统区分:CentOS/RHEL 用/var/log/secure,Ubuntu/Debian 用/var/log/auth.log
  • 添加可信 IP 白名单(ignoreip),避免误封;启用邮件通知(如sendmail-whois)便于及时感知攻击事件

持续监控与审计

防护不是一次配置就结束,需要建立常态化检查习惯。

  • 每日执行 lastb -n 20 查看最近 20 条失败登录,识别新增可疑 IP;用 last -n 10 核对成功登录是否均为已知来源
  • 每周检查特权账户:awk -F: ‘$3 == 0 {print $1}’ /etc/passwd,确认仅有 root 且无新增 UID= 0 账户
  • 定期审查 ~/.ssh/authorized_keys 内容,删除长期未用或来源不明的公钥;检查定时任务和启动项有无异常指令
text=ZqhQzanResources