运维必备技能:配置 Fail2Ban 防 SSH 暴力破解
今天分享一下如何通过Fail2Ban防止SSH暴力破解。
随着服务器暴露在公网,SSH 暴力破解攻击越来越常见。攻击者通过不断尝试用户名和密码试图登录你的服务器,这不仅威胁安全,还可能拖慢系统性能。
Fail2Ban 是一款开源入侵防御工具,它可以实时监控日志文件,一旦检测到暴力破解行为(如多次登录失败),就会自动使用防火墙(如 firewalld)将攻击者 IP 临时或永久封禁。
2. 安装 Fail2Ban环境信息:
系统版本:Rocky Linux 8 / 9SSH 登录端口:默认 22(如你自定义端口,请注意替换)默认 SSH 日志路径:/var/log/secureRocky Linux 默认没有内置 Fail2Ban,需要启用 EPEL 仓库:
复制
# 启用 EPEL 仓库
dnf install epel-release -y
# 安装 Fail2Ban
dnf install fail2ban -y1.2.3.4.5.
安装完成后,Fail2Ban 的核心文件路径为:
复制
配置目录:/etc/fail2ban
服务名:fail2ban1.2.
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