fail2ban是一款实用软件,可以监视你的系统日志,然后匹配日志的错误信息(正则式匹配)执行相应的屏蔽动作。
jumpserver是一款开源堡垒机,其拥有一定的防护登录,也可以做登录限制,但是相对于防火墙直接封禁总比需要应用自己去封禁更好一些,而且fail2ban可以封禁恶意IP的所有端口访问,后期可以将fail2ban数据同步至服务器黑名单,一次恶意攻击可以让所有服务器都拒绝该IP的访问。
直接上干货!
首先需要将jumpserver对接至syslog,这部分大家可以参加官网教程JumpServer V3 对接 Syslog 日志系统 - FIT2CLOUD 知识库
比较简单,这里就不说了。
我现在已经将jumpserver的日志对接在syslog服务器的/tmp/jm-messages
现在大家对fail2ban进行安装配置之类的,安装也是很简单的
sudo yum install fail2ban
sudo apt-get install fail2ban
配置jumpserver的过滤规则,这里我用的是比较简陋的匹配规则,大家可以自行diy规则
[Definition]
#failregex = ^.*login_log.*"status": {"label": "失败", "value": false}.*"ip": "<HOST>".*
#failregex = ^.*false.*"ip": "<HOST>".*
failregex = ^.*login_log.*"ip": "<HOST>".*false.*
ignoreregex =
修改配置文件jail.local
[jumpserver]
ignoreip = 127.0.0.1/8
enabled = true
filter = jumpserver
port = 8081
maxretry = 2
findtime = 300
bantime = 600
banaction = iptables-allports
action = iptables-allports[actname=jumpserver,name=jumpserver,protocol=all]
iptables-allports[actname=jumpserver-docker,name=jumpserver-docker,protocol=all,chain=DOCKER]
logpath = /tmp/jm-messages
需要注意的是action,如果你把action = %(action_mwl)s 这么写,会发现docker的端口没有阻断,所以写成上面配置,就可以阻断所有端口,可以通过iptables -nL来查看
然后就是对fail2ban的使用了
systemctl restart fail2ban && systemctl status fail2ban
测试匹配规则是否正确
fail2ban-regex /tmp/jm-message jumpserver
查看指定Jail规则下被封禁的ip情况
fail2ban-client status jumpserver
添加/解除指定IP的封禁
fail2ban-client set jumpserver banip/unbanip 192.168.3.80
添加/解除指定IP的忽略
fail2ban-client set jumpserver addignoreip/delignoreip 192.168.3.80
查看所有命令
fail2ban-client -h
查看日志
tail /var/log/fail2ban.log