当前位置: 首页 > 工具软件 > Fail2ban > 使用案例 >

ubuntu使用fail2ban_【fail2ban】使用fail2ban进行攻击防范

华炜
2023-12-01

转自:https://kyle.ai/blog/6215.html

最近总有一些无聊的人,会来扫描一下我的服务器,看有没有啥漏洞可以利用的。。。

可以看到类似这样的404访问日志:

这种攻击的特点就是短时间内会大量的404请求,可以利用这一特点,用工具进行拦截,检测到多少时间内,404请求数超过了多少,就把这个ip给封掉。

于是就从网上搜索到了这个工具:fail2ban,官方主页:https://www.fail2ban.org/wiki/index.php/MANUAL_0_8

在Ubuntu中安装fail2ban很简单:

安装好后,配置文件在 /etc/fail2ban 里面。

首先我们需要配置一个filter规则,以便检测我们的日志文件中404的目标。

vim /etc/fail2ban/filters.d/web-404.conf

写好规则后,可以用命令行测试一下能不能命中:

有一点必须注意,你的日志文件中,行的开头一定要先命中时间戳,格式可以是系统能识别的时间格式,如果没有命中时间,那么你写的filter规则是永远不会被命中的。

比如我刚开始的日志格式是这样的:

日期格式 20170607 不能被识别,所以我写的filter规则死活命中不了。。。

官方文档有解释:https://www.fail2ban.org/wiki/index.php/MANUAL_0_8

如果要自定义时间格式,可以在filter的配置中设置 datepattern 参数,详情见官方文档:https://manpages.debian.org/testing/fail2ban/jail.conf.5.en.html

定义好filter后,就可以写ban的规则:

cat /etc/fail2ban/jail.local

上面配置的含义就是,使用 moviex_web-404 这一个filter配置,检测日志文件logpath,在findtime时间内,匹配到 maxretry 次数后,就ban掉对方的ip,在有效时间 bantime 内,拒绝对方连接 port 参数指定的端口。

logpath 的第二个参数可以是 head 或 tail,默认为head,从日志的开头进行匹配,这样有个不好的地方就是每次重启fail2ban后,都要从日志开头匹配一遍。

如果有多个logpath,则换行写,一行写一条。

可以在 jail.local 中定义忽略ip,比如说google 爬虫的ip地址,在jail.local文件中加上配置:

如果想要让ip白名单只针对某些jail规则生效,则可以使用fail2ban-client命令来设置。例如:

重启fail2ban生效后,可以查看日志 /var/log/fail2ban.log 来看检测情况,也可以通过命令行来查看状态:

fail2ban-client 还有很多其它命令,可以参考文档说明: fail2ban-client –help

 类似资料: