fail2ban安装及简单使用

参考链接: https://itlanyan.com/use-fail2ban-prevent-scan-and-cc-attack/

安装

Centos 环境

# 安装fail2ban
yum install -y fail2ban
# 安装iptables,参考的原文用的是firewalld,但因个人习惯,我这边用的是iptables,下文的[配置监控目标]有变化
yum install -y iptables-services
systemctl start iptables
systemctl enable iptables
iptables -F
iptables -X
iptables -Z
iptables -A INPUT -s 127.0.0.1 -d 127.0.0.1 -j ACCEPT
iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
iptables -A OUTPUT -j ACCEPT
……
iptables -A INPUT -p tcp -j DROP
iptables-save > /etc/sysconfig/iptables

配置文件

  • jail.conf:对应核心概念“jail”(牢笼/监狱),一个jail由action和filter组成,代表监控目标。jail.conf配置软件监控目标及发现恶意IP后的操作;
  • action.d:对应核心概念action(动作),表示发现恶意IP后采取的操作。action.d目录中预定义了许多常用操作,例如调用iptables/firewalld封禁、sendmail发送通知邮件;
  • filter.d: 对应核心概念filter(过滤规则),过滤规则是用来匹配恶意行为的规则文件/正则表达式。filter.d目录内预定于了许多软件监控规则,例如SSH、Nginx、Apache。

配置过滤规则

/etc/fail2ban/filter.d目录下,新建nginxcc.conf,写入:

[Definition]
failregex = ^<HOST> .* "(GET|POST|HEAD).*HTTP.*" (404|503) .*$
ignoreregex =.*(robots.txt|favicon.ico|jpg|png)

测试规则是否可用

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

fail2ban性能不是很好,使用fail2ban-regex测试时不建议用大文件

配置监控目标

系统内置的监控目标在 /etc/fail2ban/jail.conf 文件中,官方建议自定义的监控目标放在 /etc/fail2ban/jail.local 或者在 /etc/fail2ban/jail.d 目录中新建配置文件。本文将监控目标定义在 /etc/fail2ban/jail.local 文件里:

[nginxcc]
enabled = true
#port = http,https
filter = nginxcc
action = iptables-allports[name=nginxcc]
logpath = /var/log/nginx/tlanyan.access.log
bantime = 7200
findtime = 600
maxretry = 5
  • nginxcc:监控目标名称
  • port:封禁的端口,本文中我们注释掉,表示封禁所有端口
  • filter:过滤规则,我们使用自定义的nginxcc
  • action:捕捉到恶意IP后执行的操作,本文使用firewallcmd对IP封禁所有端口
  • logpath:监控的日志文件
  • bantime:封禁时间,单位为秒
  • findtime:查找时间段,单位为秒
  • maxretry:允许的最大失败次数,这里我们配置10分钟内触发5次规则,那么就封禁掉

启动、配置开机自启

systemctl enable fail2ban
systemctl start fail2ban

查看监控状态

# 查看fail2ban的运行状态
fail2ban-client status
# 输出如下:
# Status
# |- Number of jail:	1
# `- Jail list:	nginxcc

# 查看指定监控的状态
fail2ban-client status nginxcc
# 输出如下:
# Status for the jail: nginx404
# |- Filter
# |  |- Currently failed:	0
# |  |- Total failed:	1461
# |  `- File list:	/var/log/nginx/tlanyan.access.log
# `- Actions
#    |- Currently banned:	3
#    |- Total banned:	9
#    `- Banned IP list:	37.139.8.104 194.99.106.146 185.43.251.185

解禁IP

fail2ban-client set nginxcc unbanip IP地址
fail2ban-client unban --all 解禁所有
posted @   ヾ(o◕∀◕)ノヾ  阅读(135)  评论(0编辑  收藏  举报
(评论功能已被禁用)
相关博文:
阅读排行:
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 【译】Visual Studio 中新的强大生产力特性
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 【设计模式】告别冗长if-else语句:使用策略模式优化代码结构
历史上的今天:
2022-06-27 iptables----安装及基础配置
点击右上角即可分享
微信分享提示