modsecurity: 规则的体系一

news/2024/10/21 12:00:13

一,每个事务的生命周期:

如图:

每个事务在modsecurity需要经历5个阶段,在每个阶段可能需要解析等操作,
然后调用相应阶段的规则进行匹配,对应规则中的phase

阶段一:request headers请求头,这是modsecurity最先接触到的数据,
           需要验证请求头相关的规则,并根据请求头来判断如何解析request body

阶段二:request body请求体,此阶段需要根据请求头正确解析body数据,并验证request body相关的规则

阶段三:response headers响应头,
            在获取到响应头之后,验证response header相关的规则

阶段四:response body响应体,
            正确解析响应体数据之后,验证response body相关的规则

阶段五:logging日志记录,日志记录阶段是一定存在的,
            用于记录事务信息,包括命中规则信息,处理方式等。

 

二,两种检测模式:

检测模式的配置在crs-setup.conf中,具体通过SecDefaultAction来进行配置

1,Self-contained mode:自主机制

例子:

# SecDefaultAction "phase:1,log,auditlog,deny,status:403"
# SecDefaultAction "phase:2,log,auditlog,deny,status:403" 

说明:

这种机制是非常传统的简单的方式,只要命中其中一条规则,就直接进行拦截,返回403,
也可以设置其他动作,
各规则之间没有任何联系,当然可以通过规则链的写法进行弥补规则之间的联系,
优点:   很明显,学习和使用难度很小,理解简单,并且在性能上很优秀,命中规则直接拦截,不需要后续的处理。
缺点:   对于目前庞大的规则体系里,使用这种模式肯定是要删除掉大量规则的,
         比如:   对于一些本来只需要警告或者提醒的规则,使用自主模式,会造成误报,并且很多规则没法使用

默认未启用

2, Anomaly Scoring mode:评分机制,默认启用,是默认使用的检测机制

例子:

SecDefaultAction "phase:1,log,auditlog,pass"
SecDefaultAction "phase:2,log,auditlog,pass"

说明:

优点: 这种评分机制作为默认机制,是crs体系优点之一,
顾名思义,评分机制就是给每个规则赋予一个权重分数,当命中规则的权重分数增加到设定的拦截阈值时,进行拦截。
使各条规则之间通过变量的方式进行联系,从而计算总体权重分。
对于危险性或者说攻击性不足的规则给予小权重,
对于确认很大可能为攻击的规则给与大权重,
然后可以根据业务情况来设定拦截阈值,从而在误报和漏报之间寻找平衡,优点十分明显。
缺点:  增加了使用者的学习难度,加大了性能的消耗,
在确认拦截之前需要去匹配大量的规则,
并且需要设置变量并进行变量的计算,对性能是一种考验。

三,全局级别分类:

1,  所有规则分为四类,分别为
critical_anomaly_score/error_anomaly_score/
warning_anomaly_score/notice_anomaly_score,
对应严重,错误,警告,提醒四类,
权重由高到低,
默认其权重分数在crs-setup.conf中配置,
分数对应为5/4/3/2

#SecAction \
#    "id:900100,\
#    phase:1,\
#    pass,\
#    t:none,\
#    nolog,\
#    tag:'OWASP_CRS',\
#    ver:'OWASP_CRS/4.8.0-dev',\
#    setvar:tx.critical_anomaly_score=5,\
#    setvar:tx.error_anomaly_score=4,\
#    setvar:tx.warning_anomaly_score=3,\
#    setvar:tx.notice_anomaly_score=2" 

2,   在阈值判断中,默认使用949中的anomaly_score作为总分和阈值进行比较,
      达到阈值就进行拦截,
      其他权重分的计算目前只是在日志中记录,利于后续分析与调试

 

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈,一经查实,立即删除!

相关文章

SpringBoot 使用WebSocket

WebSocket 是一种网络通信协议,提供了在单个TCP连接上进行全双工通信的能力。这意味着客户端和服务器可以同时发送和接收数据,而不需要等待对方的回应。 Spring Boot 提供了对WebSocket的自动配置和简化的编程模型,使得在Spring Boot应用程序中集成WebSocket变得相对简单。 …

Leetcode 1584. 连接所有点的最小费用

1.题目基本信息 1.1.题目描述 给你一个points 数组,表示 2D 平面上的一些点,其中 points[i] = [x_i, y_i] 。 连接点 [x_i, y_i] 和点 [x_j, y_j] 的费用为它们之间的 曼哈顿距离 :|x_i – x_j| + |y_i – y_j| ,其中 |val| 表示 val 的绝对值。 请你返回将所有点连接的最小…

Linux系统MySQL安装

Linux系统安装MySQL1.下载安装包 官方网站:https://www.mysql.com/ ,找到下载DOWNLOADS,下载操作系统对应的社区版本。本文使用的数据库版本是5.7.41。在社区版本下载界面可以下载最新和以前的版本。2、安装MySQL 2.1、查看是否已经安装MySQL rpm -qa | grep mysql mysql-li…

宝塔面板如何进行反向代理的配置

反向代理在网络架构中充当重要角色,帮助改善网站性能、安全性并提供额外的配置选项。在宝塔面板中实施反向代理配置,涉及的步骤包括:1. 安装并启动必要的软件;2. 配置代理规则以指向目标服务器;3. 优化性能和安全性设置;4. 对配置进行测试验证。在操作中,我们将详细探讨…

Linux模块

ansible-doc -l:查看ansible系统的模块 ansible-doc 加模块名 :具体查看那个模块 ansible-doc -s 加模块名 :具体查看那个模块 ansible重要常用模块命令模块:command shell script文件模块:file copy安装模块:yum服务模块:service定时模块:cron挂载模块:mount…

Python中的深拷贝与浅拷贝

目录1. 可变对象和不可变对象2. 用=赋值的问题3. copy模块登场4. 重新认识列表对象5. 浅拷贝,深拷贝浅拷贝(copy.copy())一维列表的浅拷贝深拷贝(copy.deepcopy())浅拷贝,深拷贝,直接赋值的区别 1. 可变对象和不可变对象 在 Python 中,数据类型可以分为两大类:可变对象和…