使用fail2ban干掉暴力破解的IP
January 22, 2025
一般使用该工具都是应对 ssh 的暴力破解,虽然关闭密码访问、使用密钥可以让暴力破解没啥意义,但是日志中出现洪水一般的暴力登录尝试还是令人心烦,故所有公网的机器都建议安装该工具,其基本原理是使用正则表达式分析日志,提取访问失败的IP,制定一系列规则,满足规则条件则通过 [[iptables]] 封禁该IP,一定时间后解封。
jail.conf
和 jail.local
是 Fail2Ban 的两个配置文件,分别用于默认配置和用户自定义配置。一般建议不要直接修改 jail.conf
,在 jail.local
中,只需定义你想修改的设置,未定义的部分会自动继承 jail.conf
的值。如果需要为某些服务创建专用规则,可以将它们分拆到单独的 .local
文件中,例如 /etc/fail2ban/jail.d/sshd.local
。
下面是一个保护 ssh 免被暴力破解的例子( /etc/fail2ban/jail.local
):
[sshd]
enabled = true
port = ssh
filter = sshd
logpath = /var/log/auth.log
maxretry = 5
bantime = 600
ignoreip = 127.0.0.1/8
如何查看 fail2ban 的日志呢? sudo tail -f /var/log/fail2ban.log
如何查看 fail2ban 状态?
sudo fail2ban-client status
sudo fail2ban-client status sshd
如何检查日志匹配情况:
sudo fail2ban-regex /var/log/auth.log /etc/fail2ban/filter.d/sshd.conf
确保规则启用
sudo fail2ban-client reload
运行以下命令测试正则表达式是否匹配日志:
sudo fail2ban-regex /var/log/auth.log /etc/fail2ban/filter.d/sshd.conf