运维必备技能:配置 Fail2Ban 防 SSH 暴力破解

今天分享一下如何通过Fail2Ban防止SSH暴力破解。

随着服务器暴露在公网,SSH 暴力破解攻击越来越常见。攻击者通过不断尝试用户名和密码试图登录你的服务器,这不仅威胁安全,还可能拖慢系统性能。

1. 什么是 Fail2Ban?

Fail2Ban 是一款开源入侵防御工具,它可以实时监控日志文件,一旦检测到暴力破解行为(如多次登录失败),就会自动使用防火墙(如 firewalld)将攻击者 IP 临时或永久封禁。

2. 安装 Fail2Ban

环境信息:

系统版本:Rocky Linux 8 / 9SSH 登录端口:默认 22(如你自定义端口,请注意替换)默认 SSH 日志路径:/var/log/secure

Rocky Linux 默认没有内置 Fail2Ban,需要启用 EPEL 仓库:

复制
# 启用 EPEL 仓库 dnf install epel-release -y # 安装 Fail2Ban dnf install fail2ban -y1.2.3.4.5.

安装完成后,Fail2Ban 的核心文件路径为:

复制
配置目录:/etc/fail2ban 服务名:fail2ban1.2.
3. 配置 Fail2Ban 保护 SSH

Fail2Ban 的默认配置文件为 /etc/fail2ban/jail.conf,请不要直接修改,我们应该创建一个新的配置文件:

复制
vim /etc/fail2ban/jail.local1.

推荐配置如下:

复制
[DEFAULT] ignoreip = 127.0.0.1/8 ::1 # 忽略本地 IP bantime = 1h # 封禁时间(1 小时) findtime = 10m # 查找时间窗(10 分钟) maxretry = 5 # 最大失败次数(超出则封禁) backend = systemd # 使用 systemd 读取日志 banaction = firewallcmd-ipset # 使用 firewalld 封禁 IP [sshd] enabled = true # 启用 SSH 防护 port = ssh # 监控的端口(或自定义端口号) logpath = %(sshd_log)s # 自动识别 /var/log/secure filter = sshd # 使用默认 sshd 筛选规则1.2.3.4.5.6.7.8.9.10.11.12.13.

参数说明:

ignoreip:允许的 IP 地址(比如你家/公司白名单 IP)bantime:封禁时长,可设置为 -1 实现永久封禁findtime + maxretry:在 findtime 时间内失败超过 maxretry 次,就封禁banaction:配合 firewalld 封 IPbackend = systemd:Rocky 使用 systemd 管理日志,比传统文件读取更稳定4. 启动并启用 Fail2Ban

启动并设置开机自启:

复制
systemctl enable --now fail2ban1.

设置开机自动启动:

复制
systemctl enable fail2ban1.

启用防火墙 firewalld:

复制
systemctl enable --now firewalld1.

查看运行状态:

复制
systemctl status fail2ban1.

查看 Fail2Ban 状态:

复制
fail2ban-client status1.

查看 sshd Jail 的详细状态:

复制
fail2ban-client status sshd1.

刚安装还没有被封禁的IP,接下来手动进行封禁。

5. 手动封禁与解封 IP

封禁某 IP:

复制
fail2ban-client set sshd banip 10.0.0.1111.

现在可以查看到10.0.0.111被封禁了。

通过10.0.0.111是无法登录10.0.0.110的,因为已经被封禁。

解封某 IP:

复制
fail2ban-client set sshd unbanip 10.0.0.1111.

解封后顺利登录10.0.0.110

【温馨提示】我是设置firewalld进行封禁IP的,必须保证firewalld是运行中的,不然无法进行禁用。

6. 附加建议

除了使用 Fail2Ban,还有一些硬核建议:

修改 SSH 默认端口: 编辑 /etc/ssh/sshd_config,例如:

复制
Port 22221.

然后重启 SSH 服务。

禁止 root 登录:

复制
PermitRootLogin no1.

仅允许特定 IP 登录 SSH: 利用 firewalld:

复制
firewall-cmd --permanent --add-rich-rule=rule family="ipv4" source address="你的IP" port protocol="tcp" port="22" accept firewall-cmd --reload1.2.

根据安全要求,Fail2Ban 几乎是必装工具。如果你还没配置,赶快动手试试吧!

阅读剩余
THE END