Fail2ban

使用fail2ban干掉暴力破解的IP

一般使用该工具都是应对 ssh 的暴力破解,虽然关闭密码访问、使用密钥可以让暴力破解没啥意义,但是日志中出现洪水一般的暴力登录尝试还是令人心烦,故所有公网的机器都建议安装该工具,其基本原理是使用正则表达式分析日志,提取访问失败的IP,制定一系列规则,满足规则条件则通过 [[iptables]] 封禁该IP,一定时间后解封。

jail.confjail.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