分享一个 Fail2ban 过滤规则

今天明月给大家分享个 Fail2ban 的过滤(Filter)规则,有关 Fail2ban 的文章大家可以参考【服务器全面使用 Fail2Ban 初见成效】和【使用 Fail2ban 禁止垃圾采集爬虫,保护 Nginx 服务器】等文了解,总之 Fail2ban 是 Linux 下不可或缺的安全防御工具,特别是针对 Nginx 的站点日志文件进行实时分析防御效果非常的出众,当你发现自己的站点被暴力破解、恶意爬虫骚扰、采集等等的时候明月非常建议你试试 Fail2ban。

今天分享给大家的这个过滤规则比较具有综合性,能防范暴力破解又能屏蔽拦截恶意骚扰请求,明月尤其喜欢的就是对 xmlrpc.php 的访问自动过滤允许来自安卓 WordPress 客户端的请求,另外对于那些使用随机伪装 UA 的请求拦截效果也非常的好。

规则代码:

[Definition]
failregex = ^<HOST> \- \S+ \[\] \"(GET|POST|HEAD) .+XDEBUG.+$^<HOST> \- \S+ \[\] \"(GET|POST|HEAD) .+GponForm.+$^<HOST> \- \S+ \[\] \"(GET|POST|HEAD) .+phpunit.+$^<HOST> \- \S+ \[\] \"(GET|POST|HEAD) .+ajax-index\.php .+$^<HOST> \- \S+ \[\] \"(GET|POST|HEAD) .+sellers\.json .+$^<HOST> \- \S+ \[\] \"(GET|POST|HEAD) .+adminer\.php .+$^<HOST> \- \S+ \[\] \"(GET|POST|HEAD) .+wp-configuration\.php.+$^<HOST> \- \S+ \[\] \"(GET|POST|HEAD) .+ThinkPHP.+$^<HOST> \- \S+ \[\] \"(GET|POST|HEAD) .+wp-config.+$^<HOST> \- \S+ \[\] \"(GET|POST|HEAD) .+dede\/login\.php .+$^<HOST> \- \S+ \[\] \"(GET|POST|HEAD) .+plus\/recommend\.php .+$^<HOST> \- \S+ \[\] \"(GET|POST|HEAD) .+e\/install\/index.php .+$^<HOST> \- \S+ \[\] \"(GET|POST|HEAD) .+m\/e\/install\/index\.php .+$^<HOST> \- \S+ \[\] \"(GET|POST|HEAD) .+e_bak\/install\/index.php .+$^<HOST> \- \S+ \[\] \"(GET|POST|HEAD) .+\.aspx .+$^<HOST> \- \S+ \[\] \"(GET|POST|HEAD) .+\.act .+$^<HOST>.*] "(GET|POST|HEAD) .*xmlrpc\.php.*^<HOST> -.*"(GET|POST|HEAD).*HTTP\/1\.1.*"*.Mozilla/5\.0 \(Windows NT 6\.1\; rv\:60\.0\) Gecko\/20100101 Firefox\/60\.0.*"$^<HOST> -.*"(GET|POST|HEAD).*HTTP\/1\.1.*"*.Photon.*"$^<HOST> -.*"(GET|POST|HEAD).*HTTP\/1\.1.*"*.Mozilla\/5\.0 zgrab\/0\.x.*"$^<HOST> -.*"(GET|POST|HEAD).*HTTP\/1\.1.*"*.XTC.*"$^<HOST> -.*"(GET|POST|HEAD).*HTTP\/1\.1.*"*.python-requests.*"$^<HOST> -.*"(GET|POST|HEAD).*HTTP\/1\.1.*"*.bidswitchbot.*"$^<HOST> -.*"(GET|POST|HEAD).*HTTP\/1\.1.*"*.Google-adstxt.*"$^<HOST> -.*"(GET|POST|HEAD).*HTTP\/1\.1.*"*.Apache-HttpClient.*"$^<HOST>.*] "POST .*HTTP\/1\.1.*^<HOST> -.*"(GET|POST|HEAD).*HTTP\/1\.1.*"*.Go-http-client\/1\.1.*"$^<HOST> .* ".*\\x.*" .*$^<HOST> -.*"(GET|POST|HEAD) .+wp-login\.php .*HTTP\/1\.1.*^<HOST> -.*"(GET|POST|HEAD) .*wp-includes/wlwmanifest.xml .*HTTP\/1\.1.*
ignoreregex = ^<HOST>.*] "POST /xmlrpc\.php\?for=wpandroid*^<HOST>.*] "POST /wp-cron\.php\?doing_wp_cron=.*
datepattern = {^LN-BEG}%%ExY(?P<_sep>[-/.])%%m(?P=_sep)%%d[T ]%%H:%%M:%%S(?:[.,]%%f)?(?:\s*%%z)?^[^\[]*\[({DATE}){^LN-BEG}

简单的给大家说明一下:

failregex = ^<HOST>.*] "(GET|POST|HEAD) .*xmlrpc\.php.*
ignoreregex = ^<HOST>.*] "POST /xmlrpc\.php\?for=wpandroid*

上述两条规则就是防止 Wordpress xmlrpc 攻击的规则,并且让 WordPress fo android 客户端正常访问工作,有关 WordPress 手机客户端大家可以参考【如何使用 WordPress 手机客户端?】和【WordPress 站点实现评论秒回复】等文章。

failregex = ^<HOST> .* ".*\\x.*" .*$

这个规则防止 URL 中的特殊字符攻击的,可以过滤掉如下这样的访问记录:

185.202.1.188 - - [23/Jun/2020:08:18:33 +0800] "\x03\x00\x00/*\xE0\x00\x00\x00\x00\x00Cookie: mstshash=Administr" 400 157 "-" "-"

不知道您见没见到过这样的访问记录,反正明月是真的见过不少次了!都是转义符想拦截都不知道到如何下手?嘿嘿,现在可以搞定了。

将上面分享的过滤规则单独保存为 nginx-custom.conf 文件到/etc/fail2ban/filter.d 目录下,然后打开/usr/local/nginx/conf/nginx.conf 编辑添加这个 nginx-custom 过滤的拦截条件如下:

[nginx-custom]
enabled  = true
port     = http,https
filter   = nginx-custom
action   = iptables-multiport[name=BadBots, port="http,https"]
logpath  = /home/wwwlogs/*.log
maxretry = 1
bantime  = 86400

然后保存,重启 Fail2ban 就可以生效进行实时分析拦截了,说实话这个拦截条件有点儿苛刻了,触发一次就屏蔽 IP 一整天确实够狠,呵呵!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/diannao/32015.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

分流井设备的监测控制和智慧运维

分流井是一种用于将雨水和污水进行分离的设施&#xff0c;通常设置在雨水管和污水管的汇合处。它可以根据不同的情况&#xff0c;将雨水和污水分别排放到不同的管道中&#xff0c;从而实现雨污分流的目的。 以下是一些常见的分流井类型和工作原理&#xff1a; 1、智能分流井&a…

java-SpringBoot执行定时任务-任务调度-@EnableScheduling和@Scheduled

文章目录 java借助springBoot框架&#xff0c;执行定时任务0. 项目地址1. 需求分析2、新建springBoot项目3. 编写定时任务3.1 开启调度任务3.2 编写定时任务方法 java借助springBoot框架&#xff0c;执行定时任务 0. 项目地址 https://github.com/OrangeHza/JavaDemo 1. 需求…

Elasticsearch bool 查询:组合多个查询(must, should, must_not)

在Elasticsearch中&#xff0c;bool查询是一种强大的工具&#xff0c;它允许我们将多个查询子句组合在一起&#xff0c;以实现复杂的搜索逻辑。通过使用must、should和must_not等子句&#xff0c;我们可以构建出精确且灵活的查询语句&#xff0c;以满足各种搜索需求。本文将详细…

Redis小对象压缩

小对象压缩存储 如果Redis内部管理的集合数据结构很小&#xff0c;他会使用紧凑存储形式压缩存储。 Redis的ziplist是一个紧凑的字节数组结构&#xff0c;如下图所示&#xff0c;每个元素之间都是紧挨着的。 如果他存储的是hash结构&#xff0c;那么key和value会作为两个ent…

竞赛 机器视觉的试卷批改系统 - opencv python 视觉识别

文章目录 0 简介1 项目背景2 项目目的3 系统设计3.1 目标对象3.2 系统架构3.3 软件设计方案 4 图像预处理4.1 灰度二值化4.2 形态学处理4.3 算式提取4.4 倾斜校正4.5 字符分割 5 字符识别5.1 支持向量机原理5.2 基于SVM的字符识别5.3 SVM算法实现 6 算法测试7 系统实现8 最后 0…

supervisor进程管理

supervisor简介 一个python开发的进程管理工具 支持Linux、Unix系统&#xff0c;不支持Windows系统 能将一个普通的命令行进程变为后台deamon&#xff0c;并监控进程状态&#xff0c;异常退出时能自动重启。 supervisor安装 先安装seuptools模块&#xff08;包管理工具&…

Maven添加reactor依赖失败

目录 情况说明 解决过程 情况说明 起初是自己在学spring boot3&#xff0c;结果到了reactor这一部分的时候&#xff0c;在项目的pom.xml文件中添加下列依赖报错&#xff1a; <dependencyManagement><dependencies><dependency><groupId>io.projectr…

[Django学习]如何在Django中声明“事务”(包括事务回滚)

一、事务概念 事务(transaction)是访问并可能操作各种数据项的一个数据库操作序列&#xff0c;这些操作要么全部执行,要么全部不执行&#xff0c;是一个不可分割的工作单位。比如某软件的转账功能&#xff1a;现在用户A要给B转账300块&#xff0c;其流程为&#xff0c;先检查A的…

模拟原神圣遗物系统-小森设计项目,设计圣遗物组件基类(生之花,死之羽,时之沙,空之杯,理之冠)父类,并且优化圣遗物

项目分析 模拟原神圣遗物系统-小森设计项目&#xff0c;设计圣遗物&#xff08;生之花&#xff0c;死之羽&#xff0c;时之沙&#xff0c;空之杯&#xff0c;理之冠&#xff09;抽象类 为啥设计圣遗物组件基类&#xff08;生之花&#xff0c;死之羽&#xff0c;时之沙&#x…

开发国外客户的软件

开发国外客户的软件通常需要考虑多个方面&#xff0c;包括目标市场的特点、客户需求、产品功能以及营销策略等。以下是一些关键点和建议&#xff0c;用于开发针对国外客户的软件&#xff1a; 市场调研与分析&#xff1a; 确定目标市场&#xff1a;通过市场调研&#xff0c;明确…

【CPP】插入排序、希尔排序

目录 1.插入排序1.1直接插入排序简介代码分析 1.2直接插入对比冒泡排序简介代码对比分析(直接插入排序与冒泡的复杂度效率区别) 1.3希尔排序简介代码分析 1.插入排序 基本思想&#xff1a;把一个待排数字按照关键码值插入到一个有序序列中&#xff0c;得到一个新的有序序列。 …

前沿技术丨S2S自动化测试解决方案

技术背景 随着面向服务的架构&#xff08;Service-Oriented Architecture&#xff0c;SOA&#xff09;在整车架构中的逐步推进及应用&#xff0c;车内网络通信中会一直并存基于以太网的面向服务和基于传统网络的面向信号的两类控制器&#xff0c;S2S&#xff08;Signal to Ser…

AXI学习笔记

文章目录 AXI口诀&#xff1a;AXI三种总线&#xff0c;三种接口&#xff0c;一个协议背景知识一、 AMBA&#xff1a;二、AXI2.1 通信协议与握手机制2.2 AXI协议特点2.3 三种AXI总线类型&#xff08;AXI4、AXI4-lite、AXI4-stream&#xff09;2.3.1 AXI通道&#xff08;5通道&am…

GD32 MCU的选项字节是什么?

GD32 MCU的选项字节是什么&#xff0c;有什么功能呢&#xff1f;选项字节被误篡改如何回复&#xff1f; 读者朋友们是否会有以上的疑问&#xff0c;首先我们先为大家介绍选项字节是什么以及选项字节的功能。 以GD32F30X系列MCU为例&#xff0c;其选项字节说明如下表所示&…

烦死了。没完的垃圾。

赶紧结束吧受不了了。

Spring Boot框架的原理及应用详解(七)

本系列文章简介&#xff1a; 在当今的软件开发世界中&#xff0c;快速迭代、高效开发以及易于维护成为了开发者们不断追求的目标。Spring Boot作为Spring框架的一个子项目&#xff0c;自其诞生以来就凭借其“约定大于配置”的理念和自动配置的特性&#xff0c;迅速在Java开发社…

第11天:API开发与REST framework

第11天&#xff1a;API开发与REST framework 目标 使用Django REST framework构建RESTful API。 任务概览 学习序列化器的概念和使用方法。创建API视图和路由。实现API的权限和认证。 详细步骤 1. 学习序列化器 序列化器是Django REST framework中用于数据转换的组件&am…

详解mysql安装、常见问题及解决方法

一、MySQL 简介 MySQL 是一个广泛使用的开源关系型数据库管理系统 (RDBMS)&#xff0c;由瑞典公司 MySQL AB 开发&#xff0c;后被 Sun Microsystems 收购&#xff0c;最终归属 Oracle 公司所有。它以其快速、可靠、可扩展的特性而闻名&#xff0c;并且因其开源的性质在各类应…

力扣每日一题 6/22 字符串/贪心

博客主页&#xff1a;誓则盟约系列专栏&#xff1a;IT竞赛 专栏关注博主&#xff0c;后期持续更新系列文章如果有错误感谢请大家批评指出&#xff0c;及时修改感谢大家点赞&#x1f44d;收藏⭐评论✍ 2663.字典序最小的美丽字符串【困难】 题目&#xff1a; 如果一个字符串满…

在每个Pod中执行命令

查看文件中某个值 v1 for pod in $(kubectl get pod -oname -A |grep vastbase ); do base_name$(echo "$pod" | sed s|pod/|| | sed s/-[0-9]\-[0-9]\$//)json_path"/pgdata/data/$base_name/has.dynamic.json"max_connections$(ka exec -it "$pod…