ModSecurity网站防火墙安装教程加WEB防御规则设置

news2024/9/28 1:25:42

ModSecurity安装教程加核心防御规则

资源宝分享:www.httple.net

ModSecurity简介
ModSecurity-官网: ​​http://www.modsecurity.cn​​
ModSecurity是目前世界上使用最多的开源WAF产品,可谓是WAF界的鼻祖,跨平台的Web应用防火墙(WAF),被称为WAF界的“瑞士军刀”。它可以通过检查Web服务接收到的数据,以及发送出去的数据来对网站进行安全防护

功能介绍

SQL Injection (SQLi):阻止SQL注入
Cross Site Scripting (XSS):阻止跨站脚本攻击
Local File Inclusion (LFI):阻止利用本地文件包含漏洞进行攻击
Remote File Inclusione(RFI):阻止利用远程文件包含漏洞进行攻击
Remote Code Execution (RCE):阻止利用远程命令执行漏洞进行攻击
PHP Code Injectiod:阻止PHP代码注入
HTTP Protocol Violations:阻止违反HTTP协议的恶意访问
HTTPoxy:阻止利用远程代理感染漏洞进行攻击
Sshllshock:阻止利用Shellshock漏洞进行攻击
Session Fixation:阻止利用Session会话ID不变的漏洞进行攻击
Scanner Detection:阻止黑客扫描网站
Metadata/Error Leakages:阻止源代码/错误信息泄露
Project Honey Pot Blacklist:蜜罐项目黑名单
GeoIP Country Blocking:根据判断IP地址归属地来进行IP阻断

下面来实战

准备一个纯洁系统,如果安装nginx先卸载
nginx 卸载

ps -ef | grep nginx
kill -9 pid

删除nginx文件夹whereis nginx

whereis nginx
rm -rf *

yum清理nginx

yum remove nginx

相关依赖安装

yum install -y wget epel-release
yum install -y gcc-c++ flex bison yajl yajl-devel curl-devel curl GeoIP-devel doxygen zlib-devel pcre-devel lmdb-devel libxml2-devel ssdeep-devel lua-devel libtool autoconf automake

Modsecurity 安装

cd /home/modsecurity
wget http://www.modsecurity.cn/download/modsecurity/modsecurity-v3.0.4.tar.gz
tar -zxvf modsecurity-v3.0.4.tar.gz
mv modsecurity-v3.0.4 /usr/local/modsecurity/modsecurity
sh build.sh
./configure
make
make install

请忽略 sh ​​​build.sh​​ 中有关的git错误:

fatal: Not a git repository (or any of the parent directories): .git

ModSecurity-nginx 安装
ModSecurity-nginx 下载地址:
https://github.com/SpiderLabs/ModSecurity-nginx

mkdir modsecurity-nginx
unzip ModSecurity-nginx-master.zip
mv ModSecurity-nginx-master /usr/local/modsecurity-nginx

nginx 安装

mkdir /home/nginx
cd /home/nginx
wget http://nginx.org/download/nginx-1.16.1.tar.gz
tar -zxvf nginx-1.16.1.tar.gz
cd nginx-1.16.1/
./configure --add-module=/usr/local/modsecurity-nginx
make
make install

nginx + ModSecurity-nginx 配置
在nginx的conf下创建文件夹modsecurity
并把 /usr/local/modsecurity/ 下的配置文件
modsecurity.conf-recommended > /usr/local/nginx/conf/modsecurity/modsecurity.conf 移动并重命名
unicode.mapping > /usr/local/nginx/conf/modsecurity

mkdir /usr/local/nginx/conf/modsecurity
cd /usr/local/modsecurity/
cp modsecurity.conf-recommended /usr/local/nginx/conf/modsecurity/modsecurity.conf
cp unicode.mapping /usr/local/nginx/conf/modsecurity

nginx.conf
在http或server节点中添加以下内容(在http节点添加表示全局配置,在server节点添加表示为指定网站配置)

    modsecurity on;
    modsecurity_rules_file /usr/local/nginx/conf/modsecurity/modsecurity.conf;

modsecurity.conf
SecRuleEngine DetectionOnly > SecRuleEngine On

#SecRuleEngine DetectionOnly
SecRuleEngine On

确保ModSecurity在记录审计日志时保存请求体IJ 改为 C

#SecAuditLogParts ABIJDEFHZ
SecAuditLogParts ABCDEFHZ

添加以下内容:

Include /usr/local/nginx/conf/modsecurity/crs-setup.conf
Include /usr/local/nginx/conf/modsecurity/rules/*.conf

配置防御规则文件
下载规则文件压缩包

cd /home/modsecurity
wget http://www.modsecurity.cn/download/corerule/owasp-modsecurity-crs-3.3-dev.zip
unzip owasp-modsecurity-crs-3.3-dev.zip
cd owasp-modsecurity-crs-3.3-dev

复制crs-setup.conf.example到/usr/local/nginx/conf/modsecurity/下并重命名为crs-setup.conf

cp crs-setup.conf.example /usr/local/nginx/conf/modsecurity/crs-setup.conf

复制rules文件夹到==/usr/local/nginx/conf/modsecurity/=
修改文件名称,去掉 .example
REQUEST-900-EXCLUSION-RULES-BEFORE-CRS.conf.example
RESPONSE-999-EXCLUSION-RULES-AFTER-CRS.conf.example

cp -r rules /usr/local/nginx/conf/modsecurity/
cd /usr/local/nginx/conf/modsecurity/rules
mv REQUEST-900-EXCLUSION-RULES-BEFORE-CRS.conf.example REQUEST-900-EXCLUSION-RULES-BEFORE-CRS.conf
mv RESPONSE-999-EXCLUSION-RULES-AFTER-CRS.conf.example RESPONSE-999-EXCLUSION-RULES-AFTER-CRS.conf

重启nginx

/usr/local/nginx/sbin/nginx -c /usr/local/nginx/conf/nginx.conf

测试是否安装成功

可以清楚的看到后两条测试结果403,被拦截成功

在这里插入图片描述

Modsecurity的规则库生成的规则内容参考

Modsecurity规则库功能说明

  1. 请求的URI为“/admin”
  2. 描述为"测试"
  3. 请求方式为POST
  4. 请求体中的参数为“id”
SecRule REQUEST_FILENAME "@beginsWith /admin" "chain,msg:测试,phase:2,deny,nolog,auditlog,id:450003,t:lowercase"
SecRule REQUEST_METHOD "^(?:POST)$" "chain,t:none"
SecRule REQUEST_BODY "@containsWord  id" "t:lowercase"

0x01 Apache Cocoon Xml 注入 CVE-2020-11991
防御规则链如下:

  1. 规则设置请求方式为POST,在使用规则之前验证有效请求POST

  2. 规则设置访问路径为“/v2/api/product/manger/getInfo”

  3. 规则设置访问的数据传输的内容正则匹配是否存在系统字段

SecRule  REQUEST_METHOD "^POST$" "chain,msg: 'Apache Cocoon Xml Injection(CVE-2020-1191)',severity:ERROR,deny,status:404,id:xxx"
SecRule REQUEST_URI "/v2/api/product/manger/getInfo" "chain"
SecRule REQUEST_BODY:data "@rx (?!)system"

0x02 Apache Solr任意文件读取漏洞
防御规则链如下:

  1. 规则设置请求方式为GET,在使用规则之前验证有效请求GET

  2. 规则设置访问路径为“/solr/admin/cores?indexInfo=false&wt=json”

  3. 规则设置检测数据字段中有无文件参数

SecRule REQUEST_METHOD "^GET$" "chain,msg: 'Apache Solr 任意文件读取',severity:ERROR,deny,status:404,id:xxx"
SecRule REQUEST_URI "/solr/admin/cores?indexInfo=false&wt=json" "chain"
SecRule REQUEST_BODY:data "@rx /file\:/g"

0x03集群引擎V4.0 RCE
防御规则链如下:

  1. 规则设置请求方式为POST,在使用规则之前验证有效请求POST

  2. 规则设置访问路径为“/login”

  3. 规则设置检测请求体中有无用户名字段,并且检测是否存在特殊字符“$”

0x04 Atlassian Jira 信息泄露漏洞 CVE-2020-14181
防御规则链如下:

  1. 规则设置请求方式为GET,在使用规则之前验证有效请求GET

  2. 规则设置访问路径为“/secure/ViewUserHover.jspa”

  3. 规则设置检测请求体中有无用户名字段,以及匹配传入的参数用户名值

SecRule REQUEST_FILENAME "@beginWith /secure/ViewUserHover.jspa""chain,msg: 'Atlassian Jira information Link Attack(CVE-2020-14181)',severity:ERROR,deny,status:404,id:xxx"
SecRule REQUEST_METHOD "^GET$" "chain"
SecRule REQUEST_BODY "@containsWord username=[a-zA-Z_\-]+"

0x05 弹性搜索远程执行代码CVE-2014-3120

  1. 规则设置请求方式为POST,在使用规则之前验证有效请求POST

  2. 规则设置访问路径为“/_search?pretty”

  3. 规则设置访问的数据传输的内容正则匹配是否存在系统字段以及“command”等

SecRule REQUEST_FILENAME "@beginWith /_search?pretty""chain,msg: 'Elasticsearch Remote Code Execution RCE Attack(CVE-2020-14181)',severity:ERROR,deny,status:404,id:xxx"
SecRule REQUEST_METHOD "^POST$" "chain"
SecRule REQUEST_BODY:data "@rx (?!)system|(?!)command|(?!)size|(?!)query"

哆哆邮件系统RCE

  1. 规则设置请求方式为POST,在使用规则之前验证有效请求POST

  2. 规则设置访问路径为“/webadm/?q=moni_detail.do&action=gragh”

  3. 规则设置匹配data内容是否有linx的相关命令字符

SecRule  REQUEST_METHOD "^POST$" "chain,msg: 'Eyou Mail system RCE',severity:ERROR,deny,status:404,id:xxx"
SecRule REQUEST_URI "/webadm/?q=moni_detail.do&action=gragh" "chain"
SecRule REQUEST_BODY:data "@rx (?!)system|(?!)ls|(?!)cat|\{/"

F5 BIG-IP代码执行漏洞(CVE-2021-22986)
1.规则设置请求方式为POST,在使用规则之前验证有效请求POST

2.规则设置访问路径为“/mgmt/tm/util/bash”

3.规则设置匹配data内容是否有linx的相关命令字符command以及run等字符串以及“|”特殊字符

SecRule  REQUEST_METHOD "^POST$" "chain,msg: 'BIG-IP代码执行漏洞(CVE-2021-22986) Attack',severity:ERROR,deny,status:404,id:xxx"
SecRule REQUEST_URI "/mgmt/tm/util/bash" "chain"
SecRule REQUEST_BODY:data "@rx (?!)command|(?!)run|\|/"

GitLab Graphql邮箱信息泄露漏洞(CVE-2020-26413)
1.规则设置请求方式为POST,在使用规则之前验证有效请求POST

2.规则设置访问路径为“/api/graphql”

3.规则设置匹配data内容username以及email等字符串以及“{”特殊字符

SecRule  REQUEST_METHOD "^POST$" "chain,msg: 'GitLab Graphql information Link',severity:ERROR,deny,status:404,id:xxx"
SecRule REQUEST_URI "/api/graphql" "chain"
SecRule REQUEST_BODY:data "@rx (?!)username&(?!)eamil&\{/"

H3C IMC远程命令执行
1.规则设置请求方式为POST,在使用规则之前验证有效请求POST

2.规则设置访问路径为“imc/javax.faces.resource/dynamiccontent.properties.xhtml”

3.规则设置匹配data内容cmd

SecRule  REQUEST_METHOD "^POST$" "chain,msg: 'H3C IMC远程命令执行',severity:ERROR,deny,status:404,id:xxx"
SecRule REQUEST_URI "/imc/javax.faces.resource/dynamiccontent.properties.xhtml" "chain"
SecRule REQUEST_BODY:data "@rx (?!)cmd"

景和OAC6默认密码

1.规则设置请求方式为POST,在使用规则之前验证有效请求POST
2.规则设置访问路径为“/C6/Jhsoft.Web.login/AjaxForLogin.aspx”
3.规则设置匹配data内容存在base64(000000)即MDAwMDAw
4.(或者存在关键词类型=login&loginCode=YWRtaW4=&&pwd=MDAwMDAw)
5.或者正则匹配type=login&loginCode=YWRtaW4=&&pwd=MDAwMDAw

SecRule  REQUEST_METHOD "^POST$" "chain,msg: 'JingHe OA C6 Default password',severity:ERROR,deny,status:404,id:xxx"
SecRule REQUEST_URI "/C6/Jhsoft.Web.login/AjaxForLogin.aspx" "chain"
SecRule REQUEST_BODY "@containsWord type=login&loginCode=YWRtaW4=&&pwd=MDAwMDAw"

景河OA下载.asp文件读取

  1. 规则设置请求方式为GET,在使用规则之前验证有效请求GET
  2. 规则设置访问路径为“/C6/Jhsoft.Web.module/testbill/dj/download.asp?filename=/c6/web.config”
  3. 规则设置访问的参数文件名后面跟随的路径
  4. 设置规则只要读取文件就存在"."
SecRule  REQUEST_METHOD "^GET$" "chain,msg: 'JingHe OA download.asp File read',severity:ERROR,deny,status:404,id:xxx"
SecRule REQUEST_URI "/C6/Jhsoft.Web.login/AjaxForLogin.aspx" "chain"
SecRule REQUEST_BODY "@contains filename" "chain"
SecRule REQUEST_LINE "@rx (?!)filename\=\[a-Z.]+/"

极通EWEBS任意文件读取

  1. 规则设置请求方式为POST,在使用规则之前验证有效请求POST
  2. 规则设置访问路径为“/casmain.xgi”
  3. 规则设置匹配访问的data中参数Language_S的值匹配特殊字符“.”
  4. 规则设置匹配Language_S的值以…/开头
SecRule  REQUEST_METHOD "^POST$" "chain,msg: '极通EWEBS任意文件读取',severity:ERROR,deny,status:404,id:xxx"
SecRule REQUEST_URI "/casmain.xgi" "chain"
SecRule REQUEST_BODY "@cantains Language_S" "chain"
SecRule ARGS:/^\.\.\// Language_S

极通EWEBS phpinfo泄露

  1. 规则设置请求方式为GET,在使用规则之前验证有效请求GET
  2. 规则设置访问路径为“/testweb.php”
SecRule REQUEST_FILENAME "@beginWith /testweb.php" "chain,msg: '极通EWEBS phpinfo Link',severity:ERROR,deny,status:404,id:xxx"
SecRule  REQUEST_METHOD "^GET$"

金山V8任意文件读取

  1. 规则设置请求方式为GET,在使用规则之前验证有效请求GET
  2. 规则设置访问路径为“/htmltopdf/downfile.php?filename=downfile.php”
SecRule REQUEST_URI "/htmltopdf/downfile.php?filename=downfile.php" "chain,msg:'Kingsoft V8 Arbitrary file read',severity:ERROR,deny,status:404,id:xxx"
SecRule  REQUEST_METHOD "^GET$"

总结

这里只是一部分根据网上的POC自己根据规则自建的,当然,没有与之匹配的环境这个规则也是无法使用的,,,,。但是扩展的思路倒是很多,看自己怎么使用了!!!

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

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

相关文章

学习open62541 --- [75] 生成namespace文件的简便方法

在之前的文章中,生成namespace文件是使用open62541提供的nodeset_compiler.py,根据nodeset_compiler.rst(位于open62541/doc/)里的描述,有更好的方法:使用cmake命令ua_generate_nodeset_and_datatypes来生成…

ChatGPT可以写文章吗?来看看他对卷积神经网络的解释是否准确

文章目录提问chatGPT的回答第一次回答第二次回答结果提问 chatGPT的回答 在回答时候由于字数限制它不能一口气输出全部结果,此时可以采用两种方法让它继续输出: 复制它的上一步回答给它,它会接着回复直接发送继续,它也会接着回复…

体验100问 | 「体验管理」是一个正确的职业选择吗?

Guofu 第 84⭐️ 篇原创干货分享(点击👆🏻上方卡片关注我,加⭐️星标⭐️~)Q003:体验管理是一个正确的职业选择吗?🤔 龙国富说: 1、职业选择应该去寻求“不变”的事情这件事其实在我…

DS期末复习卷(三)

选择题 某数据结构的二元组形式表示为A(D&#xff0c;R)&#xff0c;D{01&#xff0c;02&#xff0c;03&#xff0c;04&#xff0c;05&#xff0c;06&#xff0c;07&#xff0c;08&#xff0c;09}&#xff0c;R{r}&#xff0c;r{<01&#xff0c;02>&#xff0c;<01&a…

淘宝API接口系列,获取购买到的商品订单列表,卖出的商品订单列表,订单详情,订单物流,买家信息,收货地址列表,买家token

custom自定义API操作buyer_order_list获取购买到的商品订单列表buyer_order_detail获取购买到的商品订单详情buyer_order_express获取购买到的商品订单物流buyer_address_list收货地址列表buyer_address_add添加收货地址buyer_info买家信息buyer_token买家tokenseller_order_li…

类的继承

类的继承&#xff1a;一个类继承另一个类&#xff0c;自动拥有这个类的属性和方法&#xff0c;类似于包含与被包含的关系。被继承的类称为父类--子类则是继承父类的类。一个父类可以有多个子类&#xff1b;一个子类可以有多个父类&#xff08;多继承&#xff09;问题创建子类时…

CUDA中的流序内存分配

文章目录CUDA中的流序内存分配1. Introduction2. Query for Support3. API Fundamentals (cudaMallocAsync and cudaFreeAsync)4. Memory Pools and the cudaMemPool_t注意&#xff1a;设备的内存池当前将是该设备的本地。因此&#xff0c;在不指定内存池的情况下进行分配将始终…

测试开发之Django实战示例 第七章 创建电商网站

第七章 创建电商网站在上一章里&#xff0c;创建了用户关注系统和行为流应用&#xff0c;还学习了使用Django的信号功能与使用Redis数据库存储图片浏览次数和排名。这一章将学习如何创建一个基础的电商网站。本章将学习创建商品品类目录&#xff0c;通过session实现购物车功能。…

java流浪动物救助系统(毕业设计)

项目类型&#xff1a;Java web项目/Java EE项目&#xff08;非开源&#xff09; 项目名称&#xff1a;基于JSPServlet的流浪动物救助网站[dwjz_web] 进行源码获取 用户类型&#xff1a;双角色&#xff08;爱心人士、管理员&#xff09; 项目架构&#xff1a;B/S架构 设计思…

全景拼接python旗舰版

前言在这个项目中&#xff0c;您将构建一个管道&#xff0c;将几幅图像拼接成一个全景图。您还将捕获一组您自己的图像来报告最终的结果。步骤1 特征检测与描述本项目的第一步是对序列中的每幅图像分别进行特征检测。回想一下我们在这个类中介绍过的一些特征探测器&#xff1a;…

KDS安装步骤

KDS kinetis design studio 软件 第一步官网(https://www.nxp.com/ 注册账号下载set成功下载软件。 随着AI&#xff0c;大数据这些技术的快速发展&#xff0c;与此有关的知识也普及开来。如何在众多网站中寻找最有价值的信息&#xff0c;如何在最短的时间内获得最新的技…

家政服务小程序实战教程09-图文卡片

小程序还有一类需求就是展示服务的列表&#xff0c;我们这里用图文卡片组件来实现&#xff0c;我们先要添加一个标题&#xff0c;使用网格布局来实现 第一列添加一个文本组件&#xff0c;第二列添加一个图标组件 修改文本组件的文本内容&#xff0c;设置外边距 设置第二列的样式…

PHP session反序列化漏洞

session请求过程&#xff1a; 当第一次访问网站时&#xff0c;Seesion_start()函数就会创建一个唯一的Session ID&#xff0c;并自动通过HTTP的响应头&#xff0c;将这个Session ID保存到客户端Cookie中。同时&#xff0c;也在服务器端创建一个以Session ID命名的文件&#xff…

Netty网络应用基础

文章目录前言一、基础概念狭义网络网络应用工程库二、总体框架三、应用分层总结前言 开始之前&#xff0c;咱们先澄清一些基础概念、总体框架和应用分层&#xff0c;避免在后续的讨论中给大家带来误解。 一、基础概念 狭义网络 常规Java后端开发中应用到的计算机网络&#x…

【ArcGIS Pro二次开发】(2):创建一个Add-in项目

Add-In即模块加载项&#xff0c;是一种能够快速扩展桌面应用程序功能的全新扩展方式。 一、创建新项目 1、打开VS2002&#xff0c;选择创建新项目。 2、在搜索框中输入“arcgis pro”&#xff0c;在搜索结果中选择【ArcGIS Pro 模块加载项】创建项目&#xff0c;注意选择语言应…

OpenSSL发布修复程序以解决多个安全漏洞!

OpenSSL 项目已发布修复程序以解决多个安全漏洞&#xff0c;包括开源加密工具包中的一个高严重性错误&#xff0c;该错误可能会使用户遭受恶意攻击。 国际知名白帽黑客、东方联盟创始人郭盛华表示&#xff0c;该问题被追踪为CVE-2023-0286&#xff0c;与类型混淆有关&#xff…

激光雷达相关技术

一、参考资料 17篇点云处理综述-点云语义分割、点云物体检测、自动驾驶中的点云处理…… #三维视觉 #点云 3D点云数据标准 自动驾驶之心 自动驾驶之心-专栏 二、重要信息 1. 黑车检测难题 从2018年至今&#xff0c;高线数机械式激光雷达的测距能力一直停留在200米10%反…

Fastjson 1.83漏洞利用猜想

0x00 前言 这篇是去年五月发到i春秋的~ 在不久前fastjson<1.2.83又爆出来了新的问题,详细内容可以参考 https://github.com/alibaba/fastjson/wiki/security_update_20220523,这篇文章主要是抛转引玉,写一种可能的利用思路,详细的利用链可能要等大佬们来给出了。 文内…

【LeetCode】动态规划总结

动态规划解决的问题 动态规划和贪心的区别&#xff1a; 动态规划是由前一个状态推导出来的&#xff1b; 贪心是局部直接选最优的。 动态规划解题步骤 状态定义&#xff1a;确定dp数组以及下标的含义状态转移方程&#xff1a;确定递推公式初始条件&#xff1a;dp如何初始化遍历…

java学习记录day7

类与对象 对象数组与管理 对象数组就是数组里的每个元素都是对象&#xff1a;House[] home new House[10];使用对象数组实现多个House的管理。 拓展:数组的扩充: 扩充原来数组的一半&#xff1a; public void add(House[] home){int newLen home.length*3/21;home Array…