OpenRASP安装使用教程
https://www.cnblogs.com/lsdb/p/10011363.html
改天学习安装一下 不知道有没有和 springboot 进行集成的方法
一、说明
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-2018-10-29/ # 自动化安装,后边的tomcat安装路径修改成自己tomcat安装在的位置 java -jar RaspInstall.jar -install /usr/myapp/apache-tomcat-8.5.35
从上边的提示中可以看到所谓的“安装”,主要是做两件事件:第一件是把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 - 命令执行后门 - 带回显)。