一、说明

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. sklearn countvectorizer坑

    但是如果修改为['驴 福 记 ( 阜通 店 )','...',...]执行vectorizer.fit_transform就正常.原因是,创建CountVectorizer实例时,有一个默认参数ana ...

  2. random函数的使用

    random作为随机函数用处很多,在Python里面也经常使用,特别是处理一些随机事件的时候,特别好用! 废话不多说,直接看下面的例子: random.randomrandom.random()   ...

  3. js跨域交互之jsonp - 看完就能让你了解jsonp原理 (原)

    跨域? 跨域的安全限制都是对浏览器端来说的,服务器端是不存在跨域安全限制的. 同源策略? 一般来说 a.com 的网页无法直接与 b.com的服务器沟通, 浏览器的同源策略限制从一个源加载的文档或脚本 ...

  4. #WEB安全基础 : HTTP协议 | 0x6 初识HTTP报文

    欢迎来到HTTP最精彩的部分 请注意:应用HTTP协议时,必定有一方担任客户端,另一方担任服务器 客户端向服务器发出请求,服务器向客户端返回响应 下面是一个请求与相应的例子: 请求: GET /ind ...

  5. ASP.NET MVC案例教程(二)

    ASP.NET MVC案例教程(二) 让第一个页面跑起来 现在,我们来实现公告系统中的第一个页面——首页.它非常简单,只包括所有公告分类的列表,并且每个列表项是一个超链接.其中分类数据是用我们的Moc ...

  6. tensorflow神奇问题

    运行tensorflow程序时,遇到了各种奇葩的问题,比如: 1.Import Error: DLL load failed: The specified module could not be fo ...

  7. 连接mysql数据库,创建用户模型

    1.安装与配置python3.6+flask+mysql数据库 (1)下载安装MySQL数据库 (2)下载安装MySQL-python 中间件 (3)pip install flask-sqlalch ...

  8. 查看 chrome 浏览器中的 Headers

    查看 chrome 浏览器中的 Headers, Response 信息:

  9. java输入输出流(I/O)总结

    io流的 四个基本类 java.io包中包含了流式I/O所需要的所有类.在java.io包中有四个基本类:InputStream.OutputStream及Reader.Writer类,它们分别处理字 ...

  10. 正则表达式中test,match,exec区别

    testtest 返回 Boolean,查找对应的字符串中是否存在模式.var str = "1a1b1c";var reg = new RegExp("1." ...