OpenRASP安装使用教程
一、说明
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://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安装使用教程的更多相关文章
- IntelliJ IDEA - 热部署插件JRebel 安装使用教程
IntelliJ IDEA - JRebel 安装使用教程 JRebel 能做什么? JRebel 是一款热部署插件.当你的 Java-web 项目在 tomcat 中 run/debug 的时候 , ...
- Zabbix3.x安装图解教程
准备知识: Zabbix3.x比较之前的2.0界面有了很大的变化,但是安装部署过程与2.x基本完全一样. 1.Zabbix2.x安装图解教程 http://www.osyunwei.com/archi ...
- VMware vCenter Server安装图解教程
安装说明: 1.安装VMware vCenter Server的主机操作系统为:Windows Server 2008 R2 2.在Windows Server 2008 R2中需要预先安装好SQL ...
- 在RedHat.Enterprise.Linux_v6.3系统中安装Oracle_11gR2教程
在RedHat.Enterprise.Linux_v6.3系统中安装Oracle_11gR2教程 本教程提供PDF格式下载: 在RedHat.Enterprise.Linux_v6.3系统中安装Ora ...
- Zabbix安装图解教程
说明: 操作系统:CentOS IP地址:192.168.21.127 Web环境:Nginx+MySQL+PHP zabbix版本:Zabbix 2.2 LTS 备注:Linux下安装zabbix需 ...
- MapGIS6.7安装图文教程(完美破解)
mapgis安装比较简单,主要注意在安装的时候,先打开软件狗,然后再进行软件安装,一般就不会照成其他安装失败的现象,有时候安装之前没有打开软件狗也安装成功了,也有这情况,不过软件使用也需要软件狗的支持 ...
- VirtualBox安装Ubuntu教程
1.VirtualBox虚拟机安装,及VirtualBox安装Ubuntu教程VirtualBox版本为VirtualBox-4.3.12-93733-Win.exe,Ubuntu版本为ubuntu- ...
- MySQL5.0版本的安装图解教程
MySQL5.0版本的安装图解教程是给新手学习的,当前mysql5.0.96是最新的稳定版本. mysql 下载地址 http://www.jb51.net/softs/2193.html 下面的是M ...
- ENVI5.1安装破解教程
原文地址: ENVI5.1安装破解_百度经验 http://jingyan.baidu.com/article/020278118b5ded1bcd9ce57a.html ENVI5.1_x86 ...
随机推荐
- kafka安装步骤
kafka 安装内存会报不够 https://stackoverflow.com/questions/9350437/incompatible-initial-and-maximum-heap-siz ...
- 2018-2019-1 20189203《Linux内核原理与分析》第四周作业
第一部分 课本学习 内核版本号:Linux内核自2013年12月起,就以A.B.C.D的方式命名.A和B变得无关紧要,C是内核的真实版本.每一个版本的变化都会带来新的特性,如内部API的变化等,改动的 ...
- Streaming从Spark2X迁移到Spark1.5 summary
配置文件的加载是一个难点,在local模式下非常容易,但是submit后一直报找不到文件,后来采用将properties文件放在加载类同一个package下,打包到同一个jar中解决. import ...
- 如何为 SpringMVC 编写单元测试:普通 Controller 测试(转)
前一篇文章我们已经知道如何配置使用了 SpringMVC 测试框架的单元测试. 现在我们就该亲身实践下如何为普通 Controller 编写单元测试了. 接下来一个很明显的问题就是: 什么是普通 Co ...
- apache多站点vhost.conf配置
#第1个站点的配置 <VirtualHost *:80> DocumentRoot "D:/phpStudy/WWW" ServerName localhost < ...
- Python 进程之间共享数据
最近遇到多进程共享数据的问题,到网上查了有几篇博客写的蛮好的,记录下来方便以后查看. 一.Python multiprocessing 跨进程对象共享 在mp库当中,跨进程对象共享有三种方式,第一种 ...
- Mysql 集合链接查询
MySQL NULL 值处理 需求:我们已经知道MySQL使用 SQL SELECT 命令及 WHERE 子句来读取数据表中的数据,但是当提供的查询条件字段为 NULL 时,该命令可能就无法正常工作. ...
- activiti5/6 系列之--流程复用技术 callActivity
定义:当流程执行到callActivity,会创建一个新分支,它是到达调用节点的流程的分支. 这个分支会用来执行子流程,默认创建并行子流程,就像一个普通的流程. 上级流程会等待子流程完成,然后才会继续 ...
- UI自动化(四)css样式
<!DOCTYPE html><html lang="en"><head> <meta charset="UTF-8" ...
- 第二次作业-git的基本操作
作业的要求来自于:https://edu.cnblogs.com/campus/gzcc/GZCC-16SE2/homework/2097 一.修改用户名和邮箱地址: (1)配置用户名命令:$git ...