OpenRASP安装使用教程

1、说明

1.1 RASP和WAF的区别

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

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

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

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

 

1.2 OpenRASP

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

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

 

参考:tomcat

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

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

https://github.com/baidu/openraspapp

 

2、安装

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-2018-10-29/
# 自动化安装,后边的tomcat安装路径修改为本身tomcat安装在的位置
java -jar RaspInstall.jar -install /usr/myapp/apache-tomcat-8.5.35

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

 

3、防御测试

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 - 命令执行后门 - 带回显)。