前言

笔者上一章写了编译openrasp-v8的JNI编译过程,实际上是百度开源的OpenRASP的引擎依赖包,简单体验了,基础功能非常不错,只是很多管理功能需要2次开发,体验了以下,分享过程。

1. RASP与WAF

RASP(Runtime application self-protection)运行时应用自我保护,将自身注入到应用程序中,与应用程序松耦合,进行实时监测、阻断攻击。对于JAVA而言,应用本身通过javaagent技术注入agent来实现,原有代码无需修改。

实际上WAF的部分功能与RASP重叠,WAF是专门防御安全方面的,只是侧重点不一样,而且加密或者序列化流只能RASP防御。区别网上都很多了,可以直接网上查阅。本质上RASP就是给应用武装,让应用自身去跟安全风险作战。

2. 安装体验

查阅百度OpenRASP文档:安装部署 - OpenRASP 官方文档 - 开源自适应安全产品 (baidu.com)

目前client仅支持Java、PHP,目前主流开发方式是Java,所以体验Java为例。

2.1 准备

实际上准备的是server端的数据库,还有client端的数据库示例,所以需要MongoDB、ElasticSearch、MySQL

安装Server端,各个版本要求很明确了,MongoDB就选最新版本,elasticsearch就选5.6

MySQL是客户端示例需要的,笔者就选5.6,方便测试漏洞。

自己开发直接docker安装,方便:

docker run -itd --name mongod -p 27017:27017 mongo
docker run --name elasticsearch -d -p 9200:9200 -p 9300:9300 elasticsearch:5.6docker run --name mysql_5.6 -e MYSQL_ROOT_PASSWORD=123456 -d -i -p 3306:3306  mysql:5.6

运行后

2.2 server安装

server端可以下载直接用,如果需要定制就要2次开发,源码编译,go开发的后端

​​​​​​Index of /app/openrasp/release/latest/ (baidu.com)

笔者macOS下:wget https://packages.baidu.com/app/openrasp/release/latest/rasp-cloud-mac.tar.gz

下载解压后:tar -zxvf rasp-cloud-mac.tar.gz

然后执行

./rasp-cloud -d

可以看到版本号1.3.7,client的agent也建议对应。

 日志路径,后管编写系统go,CN地址go很活跃,基本上是世界上最活跃的区域了,一般用来编写后管系统,类似后管前端使用VUE编写差不多。此时可以访问:

http://localhost:8086

其中用户名固定为 openrasp,初始密码为 admin@123

仅仅是安装好了server端,实际上是后管平台,不会有任何用途,需要agent注入才能生效

2.3 agent注入

以Tomcat为例,实际上Springboot原理类似,都是执行注入javaagent参数:javaagent技术原理_fenglllle的博客-CSDN博客_javaagent原理

wget https://packages.baidu.com/app/openrasp/release/latest/rasp-java.tar.gz

用下面的指令初始化,集成在CI CD平台,实际上是对jvm参数加上--javaagent:

java -jar RaspInstall.jar -heartbeat 90 -appid 62d8c6e81ae21a6f67acc1ac0515011e36b69c75 -appsecret NAa3VwiqVe2u3bCulQex0AriesMn3GgONe931rPUmDO -backendurl http://localhost:8086/ -install /path/to/tomcat

注意:appid和appsecret是server端每次启动生成的,不能使用固定的

这时就获取到一个已经注入javaagent的Tomcat,而示例需要去百度去获取

建议获取vulns.war,示例非常完整,放在tomcat的webapps下,解压

2.4 参数修改

实际上启动Tomcat就可以用了,但是数据库漏洞会报错,因为没有连接数据库。需要修改参数,war包解压后先删除war,然后cd vulns

这2个配置,分别修改为docker的MySQL连接,直接查看OpenRASP可以看到,修改了catalina.sh脚本,注入agent参数

./startup.sh即可启动 ,Tomcat尽量使用老版本,不超过Tomcat8,示例是jsp写的,新Tomcat可能不兼容。

2.5 体验

访问:OpenRASP 官方测试用例集合

其中SQL注入这些需要提前创建表,安装示例写入即可

随意执行几个漏洞,拦截方式是可以修改的,但是没有发现规则修改的地方,管理功能基本上都有,但是不是很贴近实际生产。

插件可下载,但是不能单独每条编辑,NodeJS语法: 官方开发指南:单机版本 - OpenRASP 官方文档 - 开源自适应安全产品 (baidu.com)

总结

实际上百度开源的OpenRASP拿来就可以直接用,如果需要定制规则,需要后端定制,还有很多管理功能实际上可以更友好,但是核心功能非常完整,自己需要处理agent带来的的性能影响,出现agent问题怎么办的情况。

OpenRASP Java应用自我保护使用相关推荐

  1. OpenRasp Java运行时修改字节码技术

    Java运行时修改字节码技术 Java运行时动态修改字节码技术,常用的有javassist asm来实现.不过最近在分析openrasp-java这块时,程序使用的javassist来动态插桩关键类, ...

  2. 《Java面试题汇总》

    <面试题汇总>之基础篇 一 Java基础 1 基础知识点 1.1 int和Integer的区别 int是整型,是java8中的基本数据类型之一: Integer是int对应的包装类,有一个 ...

  3. java 在已有的so基础上封装jni_webshell中的分离免杀实践java篇

    声明 由于传播.利用此文所提供的信息而造成的任何直接或者间接的后果及损失,均由使用者本人负责,雷神众测以及文章作者不为此承担任何责任. 雷神众测拥有对此文章的修改和解释权.如欲转载或传播此文章,必须保 ...

  4. 云原生安全之RASP技术(应用运行时自我保护)

    文章目录 一.背景 1. WAF和RASP 2. waf和rasp是非此即彼的吗? 二.RASP技术(应用运行时自我保护) 1. 应用安全测试SAST.IAST.DAST 和 RASP区别 SAST, ...

  5. JAVA 多用户商城系统b2b2c-Spring Cloud常见问题与总结(一)

    在使用Spring Cloud的过程中,难免会遇到一些问题.所以对Spring Cloud的常用问题做一些总结.需要JAVA Spring Cloud大型企业分布式微服务云构建的B2B2C电子商务平台 ...

  6. Java 最常见的 10000+ 面试题及答案整理:持续更新

    Java面试题以及答案整理[最新版]Java高级面试题大全(2021版),发现网上很多Java面试题都没有答案,所以花了很长时间搜集,本套Java面试题大全,汇总了大量经典的Java程序员面试题以及答 ...

  7. java 判断当前时间是否为节假日_最近公司招人,研发组商量了下,暂时定下这么多java面试题!...

    一.List相关面试题 List是一个集合接口,分为AarrayList和LinkedList两个实现方式 ArrayList:底层实现就是数组,且ArrayList实现了RandomAccess,表 ...

  8. jsp中如何运行java_从上帝视角看Java如何运行

    有头发且有趣的码农万里挑一~ 06 有料叔 | 一位有故事的程序猿 JVM内存结构 可以看出JVM从宏观上可以分为 '内部'  及 '外部'  两个部分(便于记忆理解): '内部'包含:线程共享(公有 ...

  9. JAVA Spring Cloud 注册中心 Eureka 相关配置

    转载至  https://www.cnblogs.com/fangfuhai/p/7070325.html Eureka客户端配置       1.RegistryFetchIntervalSecon ...

  10. springboot中关闭eureka server中已注册服务列表自我保护配置

    配置集群服务可以向eureka通知应用是否可以使用 a.在eureka server的application.properties中加入: # 设为false,关闭自我保护 eureka.server ...

最新文章

  1. python-pcl GPU、输入输出模块教程翻译
  2. ASP导出EXCEL乱码?试试这个
  3. 俊鸟的数据输入校验专题(三) WPF 的五种输入校验概述
  4. 【python】再说装饰器与闭包的写法
  5. 福禄克FI-3000光纤监测显微仪使用MPO检查摄像头?
  6. 字符串时间格式转化-java Unit
  7. java应用挂死故障排查
  8. 弧形面如何逆时针排序_环形导轨如何实现拐弯?
  9. 追梦软件路,愿不忘初心
  10. UVM入坑系列笔记(一)
  11. ubuntu git cntlm 代理 不能下载
  12. 源代码分析工具推荐Understand
  13. linux sokit使用方法,【sokit TCP/UDP 数据包收发测试(调试)工具怎么用】sokit TCP/UDP 数据包收发测试(调试)工具好不好_使用技巧-ZOL软件百科...
  14. InfluxDB在Win10安装与简单入门
  15. Beyong Compare4过期解决办法
  16. 模式识别基本概念小结(学习笔记)
  17. 网络安全:为大家介绍5种常见的加密算法
  18. 解决Linux vim 打开文件乱码问题
  19. FTP传输大文件丢包损坏严重,怎么解决?
  20. Linux下vim的复制、粘贴操作

热门文章

  1. 不使用setPositiveButton 如何让alertdialog消失
  2. Ubuntu14.04安装GNOME3桌面
  3. [STM32]WIN7 64位系统 CDC类 虚拟串口驱动无法安装的解决办法
  4. NOD32升级账号更新器 [ C# | NOD32 | Eset ]
  5. autoit3 ie.au3 函数之——_IEErrorNotify
  6. python实现用户账号密码登录且密码星号显示
  7. glassfish插件_Maven嵌入式Glassfish插件-未启动
  8. 未转变者入侵服务器后台,未转变者(unturned)联机服务器创建方法
  9. 高冷一字id_一字网名男生高冷霸气
  10. 01.数模竞赛论文的写作