一、说明

1.1 RASP和WAF的区别

WAF,Web Application Firewall,应用防火墙。其原理是拦截原始http数据包,然后使用规则对数据包进行匹配扫描,如果没有规则匹配上那就放行数据包。正如一个门卫,如果他根据自己以往经验没看出要进入的人有疑点那么这个人就会被放行,至于进去的人在里面干什么他就不知道了。

RASP,Runtime application self-protection,运行时应用自我保护。Gartner公司2014年新提出的一个概念。其不是拦截数据包而是拦截将要执行的代码,对代码进行规则匹配如果没匹配上就放行代码。就好像在客厅、厨房、卧窒等每个地方都派一个管家监视,每个进到家里的要去什么地方做什么动作都在监视之下,一但发现某人要做出某些危险举动就会被阻止。拦截代码就类似hook,java通过重写ClassLoader等方法实现代码拦截。

我们经常听说免杀、绕WAF,其主要原理就是通过各种函数进行编码实现换脸来绕过WAF的匹配规则;而RASP审查的是最终要执行的代码,此时为了能够执行各种被编码的payload都将被还原成原始的payload,显然此时查杀漏报率和误报率都会更低。但同时也显然RASP比WAF做了更多的事情,这意味着RASP会比传统WAF要消耗更多的系统资源。

就Web Application Firewall这个词的字面意思而言RASP也属于WAF,可以认为RASP是深入到中间件内部的新型WAF。

1.2 OpenRASP

OpenRASP是百度在2017年针对RASP概念推出的一款开源免费的自适应安全产品。

安装配置等官方文档(https://rasp.baidu.com/doc/)都已有详细说明,这篇博客只是为了自己备忘,实现在Tomcat上安装OpenRASP。

参考:

https://paper.seebug.org/330/

https://baijiahao.baidu.com/s?id=1596150015211244982&wfr=spider&for=pc

https://github.com/baidu/openrasp

二、安装

2.1 设置主机名解析

避免后边tomcat部署应用时出现主机名无法解析错误(Caused by: java.net.UnknownHostException: ls: Temporary failure in name resolution)

cat >> /etc/hosts << EOF
127.0.0.1 `hostname`
EOF

2.2 安装jdk配置环境变量

这个就不多说了。

jdk下载地址:https://www.oracle.com/technetwork/java/javase/downloads/index.html

2.3 安装tomcat

下载解压就行,这个也不多说了。我这里以centos 6.10+tomcat8.5为例,具体安装路径/usr/myapp/apache-tomcat-8.5.35

tomcat下载地址:http://tomcat.apache.org/

2.4 安装openrasp

我这里为了简便直接使用jar包进行自动化安装

jar包下载地址:https://github.com/baidu/openrasp/releases

# 下载tar.gz包,链接修改成自己安装时的最新版本
wget https://github.com/baidu/openrasp/releases/download/v0.50/rasp-java.tar.gz
# 解压
tar -zxf rasp-java.tar.gz
# 进入到目录,修改成自己解压出的
cd rasp---/
# 自动化安装,后边的tomcat安装路径修改成自己tomcat安装在的位置
java -jar RaspInstall.jar -install /usr/myapp/apache-tomcat-8.5.

从上边的提示中可以看到所谓的“安装”,主要是做两件事件:第一件是把rasp文件夹复制到tomcat安装目录下,第二件是修改catalina.sh加载openrasp。(官方文档手动安装更可知道详细在做什么)

三、防护测试

3.1 安装测试用例

此时重启tomcat,openrasp就能按默认规则开始防护了。

不过由于openrasp是监测要执行的代码的,我们不能像openresty那样弄个不存在的页面来测试页面不存在openrasp只会返回404,所以我们须要弄个真正存在且真正存在漏洞的页面,使用可行的exp进行攻击才能测出是否防护已生效。

百度已提供存在漏洞的网页,我们直接下载其war包放到tomcat的html文件夹下重启tomcat即可。反序列化依赖jdk版本为了简便用们使用vulns.war

下载地址:https://github.com/baidu-security/openrasp-testcases/releases

3.2 测试防护效果

重启tomcat后访问vulns目录,如下

随便点击一个页面右方的链接,即可见进攻击说明。以“001 - 使用 File.listFiles 遍历目录(有路径拼接)”为例如下

直接点击正常调用链接可以正常访问,点不正常调用链接触下如下拦截。拦截日志在rasp/logs/alarm/alarm.log

3.3 使用体验说明

从道理上来说RASP效果会比传统WAF好,但就OpenRASP使用来看成熟度还有待提高,比如自己提供的测试用例有些都没成功触发拦截(如004 - 命令执行后门 - 带回显)。

OpenRASP安装使用教程的更多相关文章

  1. IntelliJ IDEA - 热部署插件JRebel 安装使用教程

    IntelliJ IDEA - JRebel 安装使用教程 JRebel 能做什么? JRebel 是一款热部署插件.当你的 Java-web 项目在 tomcat 中 run/debug 的时候 , ...

  2. Zabbix3.x安装图解教程

    准备知识: Zabbix3.x比较之前的2.0界面有了很大的变化,但是安装部署过程与2.x基本完全一样. 1.Zabbix2.x安装图解教程 http://www.osyunwei.com/archi ...

  3. VMware vCenter Server安装图解教程

    安装说明: 1.安装VMware vCenter Server的主机操作系统为:Windows Server 2008 R2 2.在Windows Server 2008 R2中需要预先安装好SQL ...

  4. 在RedHat.Enterprise.Linux_v6.3系统中安装Oracle_11gR2教程

    在RedHat.Enterprise.Linux_v6.3系统中安装Oracle_11gR2教程 本教程提供PDF格式下载: 在RedHat.Enterprise.Linux_v6.3系统中安装Ora ...

  5. Zabbix安装图解教程

    说明: 操作系统:CentOS IP地址:192.168.21.127 Web环境:Nginx+MySQL+PHP zabbix版本:Zabbix 2.2 LTS 备注:Linux下安装zabbix需 ...

  6. MapGIS6.7安装图文教程(完美破解)

    mapgis安装比较简单,主要注意在安装的时候,先打开软件狗,然后再进行软件安装,一般就不会照成其他安装失败的现象,有时候安装之前没有打开软件狗也安装成功了,也有这情况,不过软件使用也需要软件狗的支持 ...

  7. VirtualBox安装Ubuntu教程

    1.VirtualBox虚拟机安装,及VirtualBox安装Ubuntu教程VirtualBox版本为VirtualBox-4.3.12-93733-Win.exe,Ubuntu版本为ubuntu- ...

  8. MySQL5.0版本的安装图解教程

    MySQL5.0版本的安装图解教程是给新手学习的,当前mysql5.0.96是最新的稳定版本. mysql 下载地址 http://www.jb51.net/softs/2193.html 下面的是M ...

  9. ENVI5.1安装破解教程

    原文地址:  ENVI5.1安装破解_百度经验 http://jingyan.baidu.com/article/020278118b5ded1bcd9ce57a.html   ENVI5.1_x86 ...

随机推荐

  1. docker单机网络类型

    docker单机网络类型概述 Docker 安装时会自动在 host 上创建三种网络  分别为 bridge    host   none .   可用 docker network ls 命令查看 ...

  2. python基础(6)-深浅拷贝

    赋值 字符串和数字 # id()函数可以获取变量在内存中的地址标识 num1 = 2; num2 = 2; print(id(num1)) # result:8791124202560 print(i ...

  3. hbase 快速开发

    hbase是一个分布式的NoSQL,部署起来配置很多东西,开发起来太慢,可以使用docker快速搭建环境 gs@gs-virtual-machine:~$ sudo docker run -ti ha ...

  4. 实现html页面自动刷新的几种方式

    自动页面刷新通常会用在对数据的实时性比较敏感的网站中,比如股票走势等,另外在普通的页面自动跳转中也会使用到页面自动刷新技术. 页面刷新我见过的有三种方式,下面来一一说明 1.通过在<head&g ...

  5. 19 Python标准异常总结 (转)

    Python标准异常总结 AssertionError 断言语句(assert)失败 AttributeError 尝试访问未知的对象属性 EOFError 用户输入文件末尾标志EOF(Ctrl+d) ...

  6. 深入浅出JAVA线程池使用原理2

    一.Executor框架介绍 Executor框架将Java多线程程序分解成若干个任务,将这些任务分配给若干个线程来处理,并得到任务的结果 1.1.Executor框架组成 任务:被执行任务需要实现的 ...

  7. Six advantages of Nissan consult 3 diagnostic tool

    Today autonumen.com introduces Nissan consult 3. Nissan Consult 3 is a professional diagnostic tool ...

  8. nodejs笔记之初识node

    1.安装node; node -v  //检测node是否安装成功 node可以做什么: 搭建服务器: 读写文件: 连接数据库: 爬虫: node的模块系统: 原生模块(如http,fs); 自定义模 ...

  9. 一次Webservice请求的流程

  10. flutter中使用webview

    首先要安装一个插件:flutter_webview_plugin dependencies: flutter_webview_plugin: ^0.2.1+2 使用方法: new MaterialAp ...