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 ...
随机推荐
- C工程 交互 ceph 分布式存储系统
网上看到有人问,如何在C项目里调用ceph系统对外提供的API,实现分布式存储. 我在网上搜到了相关信息,但是因为不是会员无法追加答案,故而,贴于此. 赠予有缘人:) ———————————————— ...
- 知识在与温故、总结-再读CLR
序 CLR,通用语言运行时,每个.Net 程序猿,都会第一时间接触到.记得2008年,第一次学习Jeffrey Richter的CLR Via C#,读的懵懵懂懂,大抵因为编码太少,理解的只是概念和皮 ...
- Spring Boot 的 application.properties
更改默认端口:8080 server.port = 8081 更改context-path :/server.context-path = /springboot #server.address= # ...
- Kubernetes容器上下文环境
目录贴:Kubernetes学习系列 下面我们将主要介绍运行在Kubernetes集群中的容器所能够感知到的上下文环境,以及容器是如何获知这些信息的. 首先,Kubernetes提供了一个能够让容器感 ...
- apache+jk+tomcat+ssl的https改造
项目背景 公司项目要进行https的改造,目前在测试环境搭建了一下,参考了网上的例子(http://blog.csdn.net/whumr1/article/details/7804992) 这里把主 ...
- Twisted简介
Twisted是用Python实现的基于事件驱动的网络引擎框架,Twisted支持许多常见的传输及应用层协议,包括TCP.UDP.SSL/TLS.HTTP.IMAP.SSH.IRC以及FTP.就像Py ...
- 传值与传引用(C++)
reference(引用) 是C++对C的一个扩充 int a; int &b = a;//声明b是一个整形的引用变量 C语言,函数的参数传递有2种形式:传值方式调用和传引用方式调用 传值方式 ...
- Determine YARN and MapReduce Memory Configuration Settings
Determine YARN and MapReduce Memory Configuration Settings https://docs.hortonworks.com/HDPDocuments ...
- Docker Kubernetes hostPort 代理转发
Docker Kubernetes hostPort 代理转发 hostPort: 1. 类似docker -p 映射宿主级端口到容器. 2. 容器所在的主机暴露端口转发到指定容器中. 3. hos ...
- Bugku-CTF之Web5(JSPFUCK??????)
Day10 web5 JSPFUCK??????答案格式CTF{**} http://123.206.87.240:8002/web5/ 字母大写