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)、W ebSphere 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。
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(后续如正式搭建需根据具体选择使⽤的数据服务实例进⾏配置)
解压后,启动后台服务。./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 官⽅提供的测试⽤例
测试⽤例提供 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",DateTimeInstance().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>at.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>maven打包本地jar包
<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 包启动成功
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论