使用Fail2Ban拦截SSH爆破
工作是越来越忙了,已经好久没有管这个博客了,也好久没看服务器了。
今天进服务器,lastb的输出得好几十页,有时候甚至每分钟都有。虽然已经改了端口,也仅允许密钥登录,但是看着这么多日志,索性用Fail2Ban把这些猜密码的统统拉黑吧。
安装
Debian已经可以直接使用apt安装了
1 | # 安装 |
修改配置
官方建议在本地建立.local
文件去修改配置,而不是直接修改.conf
文件。
1.先建两个用于修改配置的文件
1 | touch /etc/fail2ban/fail2ban.local |
2.修改上面的两个文件
对于fail2ban.local
,使用下面的配置以降低内存占用:maxmatches: memory saving options(我还没有研究,为什么这样会降低内存占用)
1 | [DEFAULT] |
对于jail.local
,使用下面的配置
1 | [DEFAULT] |
关于bantime.factor
参数:Using fail2ban over longer time spans?
默认的计算公式是ban.Time * banFactor * (1<<(ban.Count if ban.Count<20 else 20))
,即封禁时间×因数×(2^封禁次数)
若
bantime = 1d
,bantime.factor = 7
,则起始封禁时间为1d
,第二次封禁时间为1d×7×2^1=14d
,第三次为1d×7×2^2=28d
若bantime = 1h
,bantime.factor = 84
,则起始封禁时间为1h
,第二次封禁时间为1h×84×2^1=168h=7d
,第三次为1h×84×2^2=336h=14d
若bantime = 1h
,bantime.factor = 12
,则起始封禁时间为1h
,第二次封禁时间为1h×12×2^1=24h=1d
,第三次为1h×12×2^2=48h=2d
,第四次为1h×12×2^3=96h=4d
后续
banaction
我本来是用的默认的iptables-multiport
,但是不知道为什么并没有生效,明明iptables -L | grep REJECT
里也有规则了。先用着hostsdeny
吧,或者试试iptables-allports
。
但是我也弄完了,猜密码的也不猜了,就让fail2ban开着吧。
fail2ban需要读取/var/log/auth.log
,这需要安装rsyslog
。