自动IP拦截工具-Fail2Ban

admin 2024年10月29日18:03:29评论44 views字数 2089阅读6分57秒阅读模式

Fail2Ban是一个入侵防御软件框架。它用Python编程语言编写,旨在防止暴力攻击。

Fail2ban 能够监控系统日志,匹配日志中的错误信息(使用正则表达式),执行相应的屏蔽动作(支持多种,一般为调用 iptables ),是一款很实用、强大的软件。

如果你的主机在公网上有端口暴露出去,那么总会有一些不怀好意的家伙,会尝试通过各种方式攻击你的机器。常见的服务例如ssh, nginx都会有类似的威胁。

手工将某个ip加入黑名单,这种操作太麻烦,而且效率低。而fail2ban就是一种自动化的解决方案。

Fail2ban工作原理

fail2ban的工作原理是监控某个日志文件,然后根据某些关键词,提取出攻击方的IP地址,然后将其加入到黑名单。

Fail2ban保护ssh

fail2ban的配置文件位于/etc/fail2ban目录下。

在该目录下建立一个文件 jail.local, 内容如下

  • bantime 持续禁止多久

  • maxretry 最大多少次尝试

  • banaction 拦截后的操作

  • findtime 查找时间

看下下面的操作的意思是:监控sshd服务的最近10分钟的日志,如果某个ip在10分钟之内,有2次登录失败,就把这个ip加入黑名单, 2小时之后,这个ip才会被从黑名单中移除。

[DEFAULT]bantime = 2hbanaction = iptables-multiportmaxretry = 2findtime = 10m[sshd]enabled = true

然后重启fail2ban, systemctl restart fail2ban 

fail2ban提供管理工具fail2ban-client

fail2ban-client status 显示fail2ban的状态
fail2ban-client status sshd 显示某个监狱的配置。从下文的输出来看可以看出来fail2ban已经拦截了一些IP地址了

> fail2ban-client statusStatus|- Number of jail:  1`- Jail list:  sshd> fail2ban-client status sshdStatus for the jail: sshd|- Filter|  |- Currently failed:  2|  |- Total failed:  23289|  `- Journal matches:  _SYSTEMD_UNIT=sshd.service + _COMM=sshd`- Actions   |- Currently banned:  9   |- Total banned:  1270   `- Banned IP list:  234.125.201.105 

fail2ban保护sshd的原理

fail2ban的配置文件目录下有个filter.d目录,该目录下有个sshd.conf的文件,这个文件就是对于sshd日志的过滤规则,里面有些正常时用来提取出恶意家伙的IP地址。

防止CC攻击

这里仅以Nginx为例,使用fail2ban来监视nginx日志,匹配短时间内频繁请求的IP,并使用firewalld将其IP屏蔽,达到CC防护的作用。

#需要先新建一个nginx日志匹配规则vi /etc/fail2ban/filter.d/nginx-cc.conf#填写如下内容[Definition]failregex =  -.*- .*HTTP/1.* .* .*$ignoreregex =

继续修改jail.local追加如下内容:

[nginx-cc]enabled = trueport = http,httpsfilter = nginx-ccaction = %(action_mwl)smaxretry = 20findtime = 60bantime = 3600logpath = /usr/local/nginx/logs/access.log

上面的配置意思是如果在60s内,同一IP达到20次请求,则将其IP ban 1小时,上面只是为了测试,请根据自己的实际情况修改。logpath为nginx日志路径。

防止nginx服务器web目录被黑客扫描

shell > vim /etc/fail2ban/jail.conf[nginx]port    = http,httpslogpath= /var/log/nginx/access.logenabled = truefilter = nginx-limit-req#action = iptables[name=nginx, port=http, protocol=tcp]action = %(action_mwl)sbantime = 3600findtime = 60maxretry = 5

在etc/fail2ban/filter.d目录下新增nginx.conf文件并追加以下内容:

shell > vim /etc/fail2ban/filter.d/nginx.conf[Definition]failregex =<HOST> -.*"(GET|POST|HEAD).*HTTP/1.* 404 .*"$ignoreregex =

原文始发于微信公众号(网络安全运维技术):自动IP拦截工具-Fail2Ban

免责声明:文章中涉及的程序(方法)可能带有攻击性,仅供安全研究与教学之用,读者将其信息做其他用途,由读者承担全部法律及连带责任,本站不承担任何法律及连带责任;如有问题可邮件联系(建议使用企业邮箱或有效邮箱,避免邮件被拦截,联系方式见首页),望知悉。
  • 左青龙
  • 微信扫一扫
  • weinxin
  • 右白虎
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2024年10月29日18:03:29
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                   自动IP拦截工具-Fail2Banhttps://cn-sec.com/archives/3329349.html
                  免责声明:文章中涉及的程序(方法)可能带有攻击性,仅供安全研究与教学之用,读者将其信息做其他用途,由读者承担全部法律及连带责任,本站不承担任何法律及连带责任;如有问题可邮件联系(建议使用企业邮箱或有效邮箱,避免邮件被拦截,联系方式见首页),望知悉.

发表评论

匿名网友 填写信息