带ufw的fail2ban介绍
Zhongy0410
・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