OpenRASP 初探(二)之项目部署

2023-10-24 22:33
文章标签 部署 项目 初探 openrasp

本文主要是介绍OpenRASP 初探(二)之项目部署,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

上接第一篇 《OpenRASP 初探(一)之项目介绍》,本篇主要介绍openrasp项目在 java 项目中如何部署(主要以springboot和tomcat为例)。希望能帮助朋友们在部署过程中提供一些参考,少走些弯路。

一、软件兼容性(openrasp 目前支持 java 和 php)

管理后台:操作系统兼容 Linux (CentOS 6+ / Ubuntu 14.04 + / 其他不要太老的系统)和 Mac OS X
JAVA agent :
-操作系统:MacOS 10.10+、Windows x64、Linux(RHEL/CentOS 6.X ~ 7.X/Ubuntu 14+/Debian 6+/其他 glibc >= 2.12 的发行版)
-web服务器(支持 docker 部署):Tomcat 5 ~ 9、Jetty 7 ~ 9、JBoss 4 ~ 8、Wildfly 8 ~ 16、Resin 3 ~ 4、SpringBoot 1 ~ 2 (内置 tomcat/jetty/undertow)、WebSphere 7.X  及以上版本、WebLogic 10.3.6 / 12.2
-JDK 版本:Oracle JDK 6~11、OpenJDK 6~11
-数据库 :MySQL 、SQLServer 、SQLite 、Oracle 、PostgreSQL 、DB2

二、安装管理后台

1)测试操作系统选择了 centos 6

2)安装管理后台需要先安装 2 个数据库,ElasticSearch 和 MongoDB 。前者用来存储报警和统计信息,后者用来存储应用、账号密码等信息。

目前对数据库的要求是,

MongoDB 版本大于等于 3.6
ElasticSearch 版本大于等于 5.6,小于 7.0

ElasticSearch 安装,我们测试中选取6.8.3版本。ES 是开源软件,但部分插件使用如 xpack 需要申请免费 license。

license 申请:https://register.elastic.co/marvel_register

ElasticSearch 依赖 JDK 环境,6.8.3 es 需要安装 JDK 8 以上版本。

备注:es 以 root 启动会报错,需新建 ES 组合账户,并将 ES 的文件目录的权限赋给 ES 组

chown -R es:es elasticsearch 目录,因为测试,ES 默认安装在本地使用默认 9200 端口

Mango 安装,选择了 4.0.14 版本。创建数据目录,启动 mongo ./mongod -dbpath /data/db/

本地搭建的测试环境,默认配置并选择默认端口 27017(后续如正式搭建需根据具体选择使用的数据服务实例进行配置)

3)DB 服务安装完成后,下载后台程序 tar包 https://packages.baidu.com/app/openrasp/release/1.2.3/ ,我们这里选择1.2.3版本,具体部署可根据需要选择最新版本。

解压后,启动后台服务。./rasp-cloud -d

4)安装完成可访问 web 管理后台。
在这里插入图片描述

三、测试用例部署(客户端部署)

springboot 集成

因公司的 java 项目大部分采用 springboot 部署方式,本次测试 openrasp 客户端 (agent) 也采用这种应用部署方式。

1)配置本地的 java IDE 环境

测试中下载使用了 eclipse IDE 环境,本地 maven 采用了 3.6.3 版本,在 eclipse 的 marketplace 中下载 springboot (STS 插件)版本 4.5.0
在这里插入图片描述创建一个 springboot web 项目,运行出现 springboot logo,本地环境配置完成
在这里插入图片描述2)下载 openrasp 官方提供的测试用例

https://github.com/baidu-security/openrasp-testcases/

测试用例提供 JSP 和 servlet 两种形式。(因为之前看安装文档中有 springboot 集成 JSP 的内容,以为只有 JSP 的测试用例)

  • 新建一个 springboot web 项目,将相应 JSP 放置在 /src/main/webapp 目录下

  • 修改 main class 中的 @Requestmap 将 http 请求映射到 index.jsp

@RequestMapping("/bbc")public String index(Model m){m.addAttribute("now",DateFormat.getDateTimeInstance().format(new Date()));return "index";  //视图重定向index.jsp}
  • 在 /src/main/resource 目录下新建 application.properties 文件(目录没有需新建),编辑如下内容
spring.mvc.view.prefix=/WEB-INF/jsp/ 
spring.mvc.view.suffix=.jsp

该配置文件定义 view 重定向的资源位置和查找的文件后缀。

  • 配置 POM 文件,添加需要的依赖组件,以下组件为 springboot 支持 JSP 必须添加(Jsp 本身就是一个 servlet,运行于服务器端,所以添加以下这部分依赖和支持)
<!-- servlet依赖 --><dependency><groupId>javax.servlet</groupId><artifactId>javax.servlet-api</artifactId>   </dependency><dependency><groupId>javax.servlet</groupId><artifactId>jstl</artifactId></dependency><!-- tomcat的支持--><dependency><groupId>org.apache.tomcat.embed</groupId><artifactId>tomcat-embed-jasper</artifactId></dependency>
  • 坑点 1:
    另外这里面还需要引用 插件,否则使用 maven 打包时不会把资源文件(JSP)打包进 jar 包。这个点测试了好久,Run as「java application」起来 springboot 服务后,web 访问 JSP 没有问题,maven 打 jar 包后运行访问 jsp 就报 404。
<resources><resource><directory>src/main/resources</directory><includes><include>**/**</include>          </includes></resource><resource><directory>src/main/webapp/</directory><!--注意此次必须要放在此目录下才能被访问到 --><targetPath>META-INF/resources</targetPath><includes><include>**/**</include></includes></resource></resources>
  • 坑点 2:
    按照网上资料,添加 插件后,起了 jar 包访问还是无法访问。又继续查资料,发现有人说是 maven 打包的 bug,只有 spring-boot-maven-plugin 指定为 1.4.2 版本是可以的。于是在 POM 里面指定 spring-boot-maven-plugin 版本为 1.4.2。(此处编辑器一般会提示和继承的父依赖有冲突,只要不是 error 不用管就行)
<dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-maven-plugin</artifactId><version>1.4.2.RELEASE</version></dependency>
  • 一切修改完后,run as mvn install 打包成 jar 包,在目标目录会生成 jar 文件。
    在这里插入图片描述
  • 将 jar 文件上传至测试服务器,java -jar xxxx.jar 运行 jar 包,我们看到 jar 包启动成功
    在这里插入图片描述
  • 访问 index.jsp 的 url,可以看到测试用例的首页,测试用例部署成功。
    在这里插入图片描述

Tomcat 集成

因为官方提供的测试用例部分基于 servlet(ognl RCE、SQl 注入等),所以测试中选择将 serlvet 的测试用例集成到 Tomcat 运行。

部署过程:

  1. 在测试节点,安装 Tomcat,并启动 Tomcat 服务。
  2. 下载 servlet 测试用例,https://github.com/baidu-security/openrasp-testcases/
    在这里插入图片描述
  3. 将整个目录的文件夹导入 Eclipse 创建一个 maven 项目
  4. 通过mvn 打包生成 war 包,具体步骤可参照打 springboot 的 jar 包过程。
  5. 打包成功后,将 war 包拷贝到 tomcat 安装目录下的 /Tomcat/webapps 目录下
    在这里插入图片描述
  6. 重启 Tomcat服务,如无报错,访问 http://ip:port/vulns-servlet/index.jsp 即可访问到我们的测试用例。
  7. tomcat 的 openrasp 客户端安装参见第四部分客户端安装。

四、Openrasp 客户端安装

Springboot 的客户端安装

1)下载最新的 java 客户端程序( rasp-java.tar.gz 或 rasp-java.zip 压缩包)到部署测试用例的服务器并解压。

https://packages.baidu.com/app/openrasp/release/latest/

2)登录openrasp管理后台,点击添加主机,查看记录参数信息(安装客户端agent使用)
在这里插入图片描述3)在 rasp-java.tar.gz 解压的目录下,执行客户端 agent 安装命令( /home/springboot/ 是测试用例 jar 文件的存放目录)。

java -jar RaspInstall.jar -nodetect -install /home/springboot/ -backendurl http://ip:8086/ -appsecret rAxxxxxxDTAFJdmZN -appid 508c86xxxxxx62fb1cd9fe

在这里插入图片描述查看之前打包好测试用例 jar 包的存放目录 /home/springboot/ 下面多了个 /rasp 目录 里面有 rasp.jar 文件说明客户端安装成功。

4)带着 openrasp agent 启动应用实例

java -javaagent:/home/springboot/rasp/rasp.jar -jar test-0.0.1-SNAPSHOT.jar

看到应用运行起来。
在这里插入图片描述5)访问管理后台,查看主机管理,有新的管理主机注册上来。
在这里插入图片描述6)访问测试用例的网站实例,可以正常访问。
7)尝试访问测试用例,可以触发攻击行为并记录日志。
在这里插入图片描述到此,Openrasp 测试环境已全部搭建完成。

这篇关于OpenRASP 初探(二)之项目部署的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/278212

相关文章

一文教你如何将maven项目转成web项目

《一文教你如何将maven项目转成web项目》在软件开发过程中,有时我们需要将一个普通的Maven项目转换为Web项目,以便能够部署到Web容器中运行,本文将详细介绍如何通过简单的步骤完成这一转换过程... 目录准备工作步骤一:修改​​pom.XML​​1.1 添加​​packaging​​标签1.2 添加

tomcat多实例部署的项目实践

《tomcat多实例部署的项目实践》Tomcat多实例是指在一台设备上运行多个Tomcat服务,这些Tomcat相互独立,本文主要介绍了tomcat多实例部署的项目实践,具有一定的参考价值,感兴趣的可... 目录1.创建项目目录,测试文China编程件2js.创建实例的安装目录3.准备实例的配置文件4.编辑实例的

SpringBoot配置Ollama实现本地部署DeepSeek

《SpringBoot配置Ollama实现本地部署DeepSeek》本文主要介绍了在本地环境中使用Ollama配置DeepSeek模型,并在IntelliJIDEA中创建一个Sprin... 目录前言详细步骤一、本地配置DeepSeek二、SpringBoot项目调用本地DeepSeek前言随着人工智能技

通过Docker Compose部署MySQL的详细教程

《通过DockerCompose部署MySQL的详细教程》DockerCompose作为Docker官方的容器编排工具,为MySQL数据库部署带来了显著优势,下面小编就来为大家详细介绍一... 目录一、docker Compose 部署 mysql 的优势二、环境准备与基础配置2.1 项目目录结构2.2 基

springboot集成Deepseek4j的项目实践

《springboot集成Deepseek4j的项目实践》本文主要介绍了springboot集成Deepseek4j的项目实践,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价... 目录Deepseek4j快速开始Maven 依js赖基础配置基础使用示例1. 流式返回示例2. 进阶

CentOS 7部署主域名服务器 DNS的方法

《CentOS7部署主域名服务器DNS的方法》文章详细介绍了在CentOS7上部署主域名服务器DNS的步骤,包括安装BIND服务、配置DNS服务、添加域名区域、创建区域文件、配置反向解析、检查配置... 目录1. 安装 BIND 服务和工具2.  配置 BIND 服务3 . 添加你的域名区域配置4.创建区域

SpringBoot项目启动报错"找不到或无法加载主类"的解决方法

《SpringBoot项目启动报错找不到或无法加载主类的解决方法》在使用IntelliJIDEA开发基于SpringBoot框架的Java程序时,可能会出现找不到或无法加载主类com.example.... 目录一、问题描述二、排查过程三、解决方案一、问题描述在使用 IntelliJ IDEA 开发基于

SpringBoot项目使用MDC给日志增加唯一标识的实现步骤

《SpringBoot项目使用MDC给日志增加唯一标识的实现步骤》本文介绍了如何在SpringBoot项目中使用MDC(MappedDiagnosticContext)为日志增加唯一标识,以便于日... 目录【Java】SpringBoot项目使用MDC给日志增加唯一标识,方便日志追踪1.日志效果2.实现步

OpenManus本地部署实战亲测有效完全免费(最新推荐)

《OpenManus本地部署实战亲测有效完全免费(最新推荐)》文章介绍了如何在本地部署OpenManus大语言模型,包括环境搭建、LLM编程接口配置和测试步骤,本文给大家讲解的非常详细,感兴趣的朋友一... 目录1.概况2.环境搭建2.1安装miniconda或者anaconda2.2 LLM编程接口配置2

Ubuntu中Nginx虚拟主机设置的项目实践

《Ubuntu中Nginx虚拟主机设置的项目实践》通过配置虚拟主机,可以在同一台服务器上运行多个独立的网站,本文主要介绍了Ubuntu中Nginx虚拟主机设置的项目实践,具有一定的参考价值,感兴趣的可... 目录简介安装 Nginx创建虚拟主机1. 创建网站目录2. 创建默认索引文件3. 配置 Nginx4