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 解禁所有
本文来自博客园,作者:ヾ(o◕∀◕)ノヾ,转载请注明原文链接:https://www.cnblogs.com/Jupiter-blog/p/17509022.html
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 【译】Visual Studio 中新的强大生产力特性
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 【设计模式】告别冗长if-else语句:使用策略模式优化代码结构
2022-06-27 iptables----安装及基础配置