linux设置ssh登录失败N次后封锁该IP工具fail2ban



Fail2ban是一款用来阻挡使用暴力破解法登录服务器的工具,最常被应用在SSH服务器上。它会去检查服务器的日志(Log),并将登录失败的IP地址记录下来,如果该IP在一段时间内错了超过规定的次数,就会自动添加规则至防火墙中,阻挡该IP一段时间的连入。


安装 Fail2ban

基于Debian的Linux发行版可以使用以下指令来安装Fail2ban:

sudo apt install fail2ban

红帽系的Linux发行版可以使用以下指令来安装Fail2ban:

sudo dnf install fail2ban

运行以下指令在开机时自动启动Fail2ban服务:

sudo systemctl enable fail2ban

运行以下指令立刻启动Fail2ban服务:

sudo fail2ban-client start

设置 Fail2ban

如果您是使用基于Debian的Linux发行版,安装完fail2ban套件后就已经激活sshd的保护功能了。但还是可以参考这小节的说明来作设置。

Fail2ban的设置档位于/etc/fail2ban目录,设置档支持的扩展名为.conf.local。扩展名.conf是缺省的设置档,扩展名.local是我们要修改设置值时要自行添加的设置档。撰写在.local设置档的设置会覆写掉.conf设置档内原先的设置。

要设置sshd的保护,可以添加一个文件,路径为/etc/fail2ban/jail.d/sshd.local,文件内容如下:


[sshd]

enabled = true



bantime = 10m

bantime.increment = true

bantime.maxtime = 1d



findtime = 10m



maxretry = 5

1.png

以上设置档中,[sshd]是指这个区块的字段是用来设置sshd这个「jail」(一种称呼某种用来限制访问的机制的常用名称)。enabled = true表示要激活这个jail。bantime是每次要封锁的基本持续时间,m表示分钟、h表示小时、d表示天,如果不写单位的话,单位会是秒。bantime.increment = true是让先前被封锁过的IP再下一次被封锁的时候拉长它的封锁时间。bantime.maxtime是设置最大的封锁时间。在findtime的时间内,如果有同样的IP的错误尝试次数超过maxretry所规定的次数,这个IP就会被封锁。

设置好后可以运行以下指令让Fail2ban重新加载设置档:

sudo fail2ban-client reload

以下指令可以查看Fail2ban的状态:

sudo fail2ban-client status

2.png

如上图,可以看到sshd这个jail被激活了。

解封IP

以下指令可以查看被关进sshd这个jail的IP有哪些:

sudo fail2ban-client status sshd


3.png


如上图,可以看到192.168.56.1这个IP被封锁了。如果要手动即时解封它,可以运行以下指令:


sudo fail2ban-client set sshd unbanip 192.168.56.1

或是用以下指令解封也可以,不过这个指令是把某个IP从所有jail中释放出来:

sudo fail2ban-client unban 192.168.56.1


4.png


以下指令可以查看所有被Fail2ban封锁的IP:

sudo fail2ban-client banned

以下指令可以解封所有被Fail2ban封锁的IP:

sudo fail2ban-client unban --all

寄信通知

当有IP被封锁的时候,Fail2ban可以主动发出电子邮件通知系统管理员,看要不要做什么后续的处理。

如果要启动寄信通知功能,可以编辑/etc/fail2ban/jail.d/sshd.local,进行如下的修改:


[sshd]

enabled = true



bantime = 10m

bantime.increment = true

bantime.maxtime = 1d



findtime = 10m



maxretry = 7



destemail = yourname@example.com

action = %(action_mwl)s

destemail可以设置要寄到的电子邮件信箱。action = %(action_mwl)s用来设置封锁之后寄信。

注意,您的Linux操作系统必须要有寄信的能力,才能让Fail2ban寄信。可以参考这篇文章来设置:

设置完成后,使用以下指令重启Fail2ban:

sudo fail2ban-client restart

如果只是使用fail2ban-client reload重新加载设置档,貌似对寄信的设置是无效的。重启Fail2ban后,如果Fail2ban能成功寄出信件,您应该会收到一封Fail2ban寄出的sshd这个jail被启动的通知信,有收到的话表示Fail2ban的寄信通知功能可以正常使用。





版权声明

本文仅代表作者观点,不代表本站立场。
本文系作者授权发表,未经许可,可随意转载(O ^ ~ ^ O),别忘了标明转载来源即可。

评论

分享:

支付宝

微信