fail2ban防ssh爆破

centos7(亲测可行)

配置

本文最后更新于2022.3.11,后续应该不会再更新了~

fail2ban官网:http://fail2ban.org/wiki/index.php/Main_Page
yum安装fail2ban:

yum -y install epel-release
yum -y install fail2ban

将jail.conf复制改名为jail.local并vim编辑,官方不推荐直接在jail.conf上面修改,下面是官方推荐的用法:

cp /etc/fail2ban/jail.conf  /etc/fail2ban/jail.local
vim /etc/fail2ban/jail.local

在文末添加如下代码:

[ssh-iptables]
enabled = true
filter = sshd
action = iptables[name=SSH, port=22, protocol=tcp]
logpath = /var/log/secure  //如果没有secure文件,重启服务会失败,去创建secure文件即可,文件名也可以自定义
maxretry = 3
bantime = 365d
findtime=365d
#sendmail-whois[name=SSH, dest=your@email.com, sender=fail2ban@email.com]//添加邮件通知

maxretry为尝试次数,如果一年内(findtime)尝试次数达三次,一年内禁止连接(bantime默认单位为秒,此处d表示天数)
以上针对Centos7亲测有效

还有一种食用方式,在/etc/fail2ban/jail.d目录中新建sshd.local,内容输入如下:

[ssh-iptables]
enabled = true
filter = sshd
action = iptables[name=SSH, port=22, protocol=tcp]
logpath = /var/log/secure  //如果没有secure文件,重启服务会失败,去创建secure文件即可,文件名也可以自定义
maxretry = 3
bantime = 365d
findtime=365d
#sendmail-whois[name=SSH, dest=your@email.com, sender=fail2ban@email.com]//添加邮件通知

然后重启fail2ban即可

总结配置优先级:jail.d中的配置文件>jail.local>jail.conf

解封

那如何解封呢,以ssh服务为例:
先查看有哪些状态:

fail2ban-client status

显示其中详情,如sshd,ssh,或者ssh-iptables:

fail2ban-client status sshd

解除封锁的IP,如:

fail2ban-client set sshd unbanip XX.XX.XX.XX

linux命令重命名

如果嫌命令长了记不住,可以进行命令重命名,可以参考:https://www.cnblogs.com/sillage/p/14025652.html
我们在my_alias.sh中添加如下命令(也可以根据需要自行添加如vstfp的解封,下面只是针对于ssh解封的快捷命令):

alias uns='fail2ban-client set ssh-iptables unbanip '
alias und='fail2ban-client set sshd unbanip '

之后我们在解封ip时就可以直接用uns ip,und ip

debian9

关于debian9如何使用fail2ban呢,这里有一个vultr官网提供的教程How to Setup Fail2ban on Debian 9
我去尝试了一下,没有成功,我也不知道为什么,还气的我直接rm -rf了,然后登录vultr控制台把服务器重装了。

部分内容参考自克己复礼,更多内容请点击这

添加邮件通知

教程请参考:https://www.cnblogs.com/sillage/p/14589087.html

fail2ban脚本

该脚本一键安装、配置fail2ban,由笔者编写,centos7亲测可用,防ssh爆破,关注公众号韭菜安全(文章顶部右上角可扫码关注)回复fail2ban脚本获取。

实操参考

这是使用了两台服务器进行演示,可以看到当尝试超过三次以后,会提示以下信息,会直接拒绝连接,根本不给你输入密码的机会,证明fail2ban服务生效(由于ip是个人隐私,下面就用字母代替):

[root@VM-0-7-centos htp]# ssh a.a.a.a
ssh: connect to host a.a.a.a port 22: Connection refused

下面是被ssh爆破的服务器,我们可以查看到被封锁的ip:

[root@iZhp3661jqu8od84z9g4f8Z fail2ban]# fail2ban-client status 
Status
|- Number of jail:	1
`- Jail list:	ssh-iptables
[root@iZhp3661jqu8od84z9g4f8Z fail2ban]# fail2ban-client status ssh-iptables
Status for the jail: ssh-iptables
|- Filter
|  |- Currently failed:	0
|  |- Total failed:	0
|  `- File list:	/var/log/secure
`- Actions
   |- Currently banned:	1
   |- Total banned:	1
   `- Banned IP list:	b.b.b.b

以下是对被封锁的ip进行解封操作:

[root@iZhp3661jqu8od84z9g4f8Z fail2ban]# fail2ban-client set ssh-iptables unbanip b.b.b.b
1
[root@iZhp3661jqu8od84z9g4f8Z fail2ban]# fail2ban-client status ssh-iptables
Status for the jail: ssh-iptables
|- Filter
|  |- Currently failed:	0
|  |- Total failed:	0
|  `- File list:	/var/log/secure
`- Actions
   |- Currently banned:	0
   |- Total banned:	1
   `- Banned IP list:	
[root@iZhp3661jqu8od84z9g4f8Z fail2ban]#

被解封的服务器可以进行正常的ssh连接:

[root@VM-0-7-centos htp]# ssh a.a.a.a
root@a.a.a.a's password:
posted @ 2020-11-12 21:56  nihinumbra  阅读(1033)  评论(0编辑  收藏  举报