Fail2Ban怎么配置防止SSH暴力破解?封禁时间和重试次数怎么设置?

文章导读
配置 Fail2Ban 防止 SSH 暴力破解的核心在于编辑 `/etc/fail2ban/jail.local` 文件。首先启用 sshd 监控,设置 `maxretry` 为 3-5 次,表示允许的最大失败尝试次数;设置 `findtime` 为 600 秒(10 分钟),定义检测时间窗口;设置 `bantime` 为 3600 秒(1 小时)或更长,定义封禁时长。同时建议配合 SSH 服务端
📋 目录
  1. Fail2Ban 怎么配置防止 SSH 暴力破解?封禁时间和重试次数怎么设置?
  2. 如何设置 SSH 登录失败重试次数限制防止暴力破解指南 - 安全-PHP 中文网
  3. fail2ban 配置怎么设置?fail2ban 安装配置教程 - 酷番云知识库
  4. SSH 暴力破解防护:配置 fail2ban,自动封禁多次登录失败的 IP
  5. 分钟搞定:用 Fail2Ban 自动封禁 SSH 暴力破解 IP(附详细配置步骤)
  6. FAQ
A A

Fail2Ban 怎么配置防止 SSH 暴力破解?封禁时间和重试次数怎么设置?

配置 Fail2Ban 防止 SSH 暴力破解的核心在于编辑 `/etc/fail2ban/jail.local` 文件。首先启用 sshd 监控,设置 `maxretry` 为 3-5 次,表示允许的最大失败尝试次数;设置 `findtime` 为 600 秒(10 分钟),定义检测时间窗口;设置 `bantime` 为 3600 秒(1 小时)或更长,定义封禁时长。同时建议配合 SSH 服务端配置 `MaxAuthTries 3` 和 `LoginGraceTime 60`,并关闭密码登录、禁用 root 远程登录,启用密钥认证,形成多层防护体系。安装后需重启 fail2ban 服务生效。

如何设置 SSH 登录失败重试次数限制防止暴力破解指南 - 安全-PHP 中文网

最直接有效的 ssh 暴力破解防护是组合使用 ssh 服务端内置限制与 fail2ban 动态封禁:设 maxauthtries 3 和 logingracetime 60 实现连接级限次,配合 fail2ban 在 10 分钟内失败 3 次即封 ip 1 小时,并须关闭密码登录、禁用 root 远程登录、限制用户及启用密钥认证。最直接有效的做法是组合使用 SSH 服务端内置限制 + Fail2ban 动态封禁,而不是只靠单一手段。密码认证未关闭时,仅设重试次数只能延缓攻击;真正防住暴力破解,得让攻击者连试的机会都变少、试了还被拉黑。设置 SSH 连接级最大验证次数 (基础防护) 这是最轻量、无需额外软件的配置,作用于单次 TCP 连接内:在/etc/ssh/sshd_config 中添加或修改两行:MaxAuthTries 3:单次连接最多允许 3 次认证尝试 (包括密码、密钥、键盘交互等所有方式总和) LoginGraceTime 60:从连接建立起,只有 60 秒登录窗口,超时自动断开 改完执行 sudo systemctl restart sshd 生效。注意:该限制不跨连接,攻击者可快速新建连接重试,所以必须配合下述 IP 级封禁才真正有效。用 Fail2ban 封禁高频失败的 IP(核心防线) Fail2ban 是目前 Linux 上最成熟、适配性最强的 SSH 暴力破解防御工具,它实时扫描/var/log/auth.log,发现异常就调用防火墙封 IP: 安装:sudo apt update && sudo apt install fail2ban(Ubuntu/Debian) 或 sudo yum install fail2ban(CentOS/RHEL) 创建本地配置:sudo cp /etc/fail2ban/jail.conf /etc/fail2ban/jail.local 编辑/etc/fail2ban/jail.local,确保包含以下内容:[sshd] enabled = true maxretry = 3 findtime = 600 bantime = 3600 logpath = /var/log/auth.log 含义:10 分钟内 (findtime) 失败 3 次 (maxretry),该 IP 被封 1 小时 (bantime)。保存后运行 sudo systemctl enable --now fail2ban 启动并设为开机自启。补充账户级锁定 (可选,适合管理用户较少场景) 若希望对特定用户 (如 admin) 做更严格的本地账户锁定,可用 PAM 的 pam_faillock 模块:编辑/etc/pam.d/sshd,在开头插入:auth [default=die] pam_faillock.so authfail auth [default=bad] pam_faillock.so authsucc 再编辑/etc/pam.d/system-auth,加入:auth [default=die] pam_faillock.so preauth silent deny=3 unlock_time=600 auth [default=bad] pam_faillock.so authfail 这样用户连续输错 3 次密码后,即使换 IP 也暂时无法登录该账户,需等待 10 分钟或管理员手动解锁 (sudo faillock --reset --user username)。(撰于 2026 年 4 月 9 日)

fail2ban 配置怎么设置?fail2ban 安装配置教程 - 酷番云知识库

Filters(过滤器):这是 Fail2ban 的“眼睛”,它通过正则表达式定义匹配规则,从服务日志 (如/var/log/auth.log 或/var/log/nginx/access.log) 中筛选出异常行为,识别"Failed password for root"这样的关键字。Actions(动作):这是 Fail2ban 的“双手”,当过滤器匹配到的失败次数达到阈值时,动作模块将被激活,最常用的动作是调用 iptables 或 firewalld 添加拒绝规则,也可以配置为发送邮件告警或调用云 API 接口。Jails(监狱):这是连接过滤器与动作的“大脑”,在 jail 配置中,管理员定义监控哪个服务 (调用哪个过滤器)、监控哪个日志文件、触发动作的阈值以及封禁的时长。这种架构的优势在于解耦,管理员可以根据实际业务需求,灵活组合不同的过滤器与动作,实现高度定制化的安全策略。在/etc/fail2ban/jail.local(如不存在请新建) 中,首先定义全局默认值:[DEFAULT] ignoreip = 127.0.0.1/8 ::1 192.168.1.0/24 bantime = 3600 findtime = 600 maxretry = 5 backend = auto ignoreip:这是防止“自锁”的关键参数,务必将服务器自身的 IP、内网网段以及管理员的固定办公网 IP 加入白名单。bantime:封禁时长,建议初始设置为 1 小时 (3600 秒),对于高频攻击可设置为 24 小时 (86400 秒) 甚至更长。findtime:检测时间窗口,即在多少秒内检测到异常。maxretry:最大重试次数,在 findtime 时间内失败 maxretry 次即触发封禁,SSH 服务建议设置为 3-5 次,Web 服务可适当放宽。(搜索结果收录于 2026 年 4 月 9 日)

SSH 暴力破解防护:配置 fail2ban,自动封禁多次登录失败的 IP

步骤 2: 配置 fail2ban 监控 SSH 登录失败 fail2ban 的配置文件位于/etc/fail2ban/目录。默认配置文件是 jail.conf,但为了避免更新覆盖,建议创建自定义文件 jail.local: sudo nano /etc/fail2ban/jail.local 一键获取完整项目代码 bash 在编辑器中,添加以下内容来启用 SSH 监控:[sshd] enabled = true port = ssh filter = sshd logpath = %(sshd_log)s maxretry = 5 # 允许的最大失败次数,超过则封禁 findtime = 600 # 检查失败的时间窗口 (秒),例如 10 分钟内 bantime = 3600 # 封禁时长 (秒),例如 1 小时 ignoreip = 127.0.0.1 ::1 # 忽略本机 IP,避免自锁 一键获取完整项目代码 ini 参数解释:maxretry: 设置失败尝试的阈值 (例如 55 次),超过后触发封禁。findtime: 定义时间窗口 (例如 600600 秒内),如果失败次数达到 maxretry,则封禁。bantime: 封禁时长 (例如 36003600 秒),IP 在此期间无法访问 SSH。ignoreip: 添加可信 IP(如您的管理 IP),避免误封。保存文件 (按 Ctrl+O,然后 Ctrl+X 退出)。步骤 3: 重启 fail2ban 并应用配置 修改配置后,需要重启 fail2ban 服务:sudo systemctl restart fail2ban 一键获取完整项目代码 bash 检查配置是否生效:sudo fail2ban-client status sshd# 查看 SSH 监控状态 一键获取完整项目代码 bash 输出应显示 Status for the jail: sshd 并列出活动封禁。步骤 4: 测试配置是否有效 为了验证 fail2ban 工作正常,您可以模拟失败登录:从另一台机器尝试 SSH 登录到本服务器,故意输入错误密码 55 次 (不超过 maxretry)。(截至 2025 年 10 月 30 日)

分钟搞定:用 Fail2Ban 自动封禁 SSH 暴力破解 IP(附详细配置步骤)

典型攻击模式通常呈现以下特征:

特征指标正常情况暴力破解攻击
每分钟失败登录次数<5 次50-5000 次
尝试用户名数量1-3 个50-500 个
来源 IP 地理分布集中全球分散
请求时间分布工作时间集中全天候持续
提示:突然出现的"invalid user"日志条目是明显的攻击信号,合法用户不会故意用不存在的用户名登录 2. 防御体系构建:四层防护网 2.1 基础加固:修改默认暴露面 就像不会把保险箱放在客厅显眼处,首先应该调整 SSH 的默认配置:# 修改 SSH 端口示例 sudo sed -i's/#Port 22/Port 58234/'/etc/ssh/sshd_config # 禁用 root 登录和密码认证 echo-e"PermitRootLogin no\nPasswordAuthentication no"| sudotee-a /etc/ssh/sshd_config # 限制并发会话 echo"MaxSessions 3"| sudotee-a /etc/ssh/sshd_config AI 写代码 bash 关键参数对照表:
参数推荐值安全作用
Port1024-65535避开自动化扫描的常见端口
LoginGraceTime30s缩短攻击窗口
MaxAuthTries3限制单次连接尝试次数
ClientAliveInterval300自动断开闲置连接
(2026 年 4 月 13 日的资料)

Fail2Ban怎么配置防止SSH暴力破解?封禁时间和重试次数怎么设置?

FAQ

Fail2Ban 的 maxretry 和 findtime 参数具体含义是什么?

maxretry 表示最大重试次数,即在 findtime 时间内失败 maxretry 次即触发封禁,SSH 服务建议设置为 3-5 次。findtime 是检测时间窗口,即在多少秒内检测到异常,例如 600 秒代表 10 分钟。

配置 Fail2Ban 后如何避免误封自己的 IP?

需要在配置文件的 [DEFAULT] 部分设置 ignoreip 参数,务必将服务器自身的 IP、内网网段以及管理员的固定办公网 IP 加入白名单,例如 ignoreip = 127.0.0.1/8 ::1 192.168.1.0/24。

Fail2Ban怎么配置防止SSH暴力破解?封禁时间和重试次数怎么设置?

封禁时间 bantime 设置多少合适?

建议初始设置为 1 小时 (3600 秒),对于高频攻击可设置为 24 小时 (86400 秒) 甚至更长。在 jail.local 配置中,bantime = 3600 表示 IP 被禁止 1 小时。

除了 Fail2Ban,SSH 服务端还需要做哪些基础防护?

建议在/etc/ssh/sshd_config 中设置 MaxAuthTries 3 限制单次连接尝试次数,设置 LoginGraceTime 60 缩短登录窗口,并关闭密码登录、禁用 root 远程登录、启用密钥认证。