带ufw的fail2ban介绍

・4 分钟阅读

带ufw的fail2ban介绍

默认情况下,fail2ban配置为仅禁止失败的SSH登录尝试,使用以下命令检查当前配置:


sudo fail2ban-client status

Status
|- Number of jail:      1
`- Jail list:   sshd

设置

让我们先配置fail2ban来使用ufw而不是iptables ,验证/etc/fail2ban/action.d/目录中是否有ufw.conf

jail.conf复制到jail.local,以防止在软件包更新提供新的默认文件时覆盖更改。


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

打开/etc/fail2ban/jail.local,并且查找banaction指令,将它值更改为ufw,如下所示。

 
banaction = ufw

 

启用过滤器

fail2ban带有许多可立即使用过滤器,它们存储在/etc/fail2ban/filter.d/目录中,启用nginx-botsearch过滤器,这是通过jail连接过滤器(正规表达式)和动作(主要禁止)完成的。

让我们创建一个定制的jail来列出一个或多个过滤器及它操作,它将作为custom.conf放置在/etc/fail2ban/jail.d/下面,包含以下内容:


[nginx-botsearch]
enabled = true
port = http,https
filter = nginx-botsearch
logpath = /var/log/nginx/access.log
maxretry = 2
findtime = 120

filter指定当enabled设置为true时使用哪个筛选器使它处于活动状态,bantime指定被禁止的IP被禁止的秒数,如果客户机在maxretry设置的时间内进行了更多的尝试,那么它们将被禁止,每个过滤器匹配在它jail内增加计数器,如果findtime秒内没有找到匹配项,计数器将被设置为零。

最后一步是重新加载fail2ban


sudo fail2ban-client reload

验证是否已启用该jail :


sudo fail2ban-client status

Status
|- Number of jail:      2
`- Jail list:   nginx-botsearch, sshd

创建过滤器

使用附加的定制过滤器扩展fail2ban很容易,让我们创建一个过滤器来阻止对与Nginx日志兼容的脚本的请求,它将被称为nginx-noscript存储在/etc/fail2ban/filter.d/下。


[Definition]
failregex = ^ -.*GET.*(.php|.asp|.exe|.pl|.cgi|.scgi)
ignoreregex =

正则表达式可以针对现有使用fail2ban-regex进行测试,这样可以验证表达式是否捕获正确的条目。


fail2ban-regex /var/log/nginx/access.log /etc/fail2ban/filter.d/wp-login.conf

Running tests
=============

Use failregex filter file : nginx-noscript, basedir: /etc/fail2ban
Use log file : /var/log/nginx/access.log
Use encoding : UTF-8


Results
=======

Failregex: 1109 total
|- #) [# of hits] regular expression
| 1) [1109] ^ -.*GET.*(.php|.asp|.exe|.pl|.cgi|.scgi)
`-

Ignoreregex: 0 total

Date template hits:
|- [# of hits] date format
| [42531] Day(?P
Zhongy0410 profile image