第一步: 下载最新版本的安装包

https://packages.baidu.com/app/openrasp/release/latest/rasp-php-linux.tar.bz2

解压到目录:/opt/rasp

bzip2 -d rasp-php-linux.tar.bz2
tar -xvf rasp-php-linux.tar

解压出来的文件夹会带日期版本号,不方便在PHP里设置open_base,所以文件夹更名移动

mv rasp-php-* /opt/rasp

给日志文件夹其他用户写入权限,也可以只给apache或者nginx运行用户的权限,要不然检测到攻击只会拦截,不会写日志。

chmod -R 777 /opt/rasp/logs

在phpinfo里查看php扩展的目录 extension_dir

cd /opt/rasp/php

选择对应的PHP版本扩展复制到扩展目录

cp /opt/rasp/php/linux-php5.6-x86_64/openrasp.so /php/56/lib/php/extensions

chmod 755 /php/56/lib/php/extensions/openrasp.so

修改php.ini文件,加入openrasp扩展

修改 php.ini,或者创建 z-openrasp.ini 文件,添加如下内容:

; BEGIN OPENRASP

[openrasp]
extension=openrasp.so
openrasp.root_dir=/opt/rasp

; 远程管理配置,不需要不用配置
; openrasp.backend_url=
; openrasp.app_id=
; openrasp.app_secret=
; openrasp.remote_management_enable=1

; END OPENRASP

其中,openrasp.root_dir 表示刚才选择的 OpenRASP 安装目录,不填写则无法加载。对于其他配置参数,可参考其他配置文档进行调整。

安装检测插件

点击这里下载官方插件 plugins/official/plugin.js,并放置到 <openrasp.root_dir>/plugins/ 目录,下载后自动加载并生效。

如果是fastcgi模式就重启php-fpm,

service php-fpm restart

1. 确认基本信息

在 web 目录下面,我们建立一个 info.php,并填写如下内容

<?php phpinfo();?>

访问刚才创建的 info.php,检查 openrasp 模块是否加载成功即可,e.g

如果你没有看到类似的信息,则说明扩展加载失败。常见原因有

  1. PHP版本和扩展版本不一致,比如 PHP 是 5.3 版本,但你安装了 PHP 5.6 版本的 openrasp.so
  2. INI 配置不正确,请参考 php error.log 里的错误消息
    • 所有的错误消息都以 [OpenRASP] 错误码 开头,方便和其他日志进行区分
    • 对于 apache/nginx,可以查看类似 /var/log/nginx/error.log 的路径

确认安装成功后,请删除 info.php 这个文件,以避免泄露敏感信息。

要比较注意open_base的设置,比如宝塔部署的话,是每个网站独立的open_base,一般是在网站根目录下的.user.ini,

FTP里是看不到这个文件的,需要在SSH输入

ls -a才能看到,由于限制了权限需要用chattr解除权限

chattr -i .user.ini

vi .user.ini

open_basedir=/www/:/tmp/:/proc/

在后面追加:/opt/rasp/logs

OpenRASP 正常拦截攻击,但是 alarm.log 没有日志

假设 OpenRASP 安装到了 /opt/rasp

  1. 检查 logs 目录是否有写权限

    • 如果没有权限,可以执行 chmod 777 /opt/rasp/logs 增加权限
    • 检查 SELinux 是否开启,可以执行 setenforce 0 关闭
  2. 检查 php error_log 是否有 OpenRASP 相关的错误日志
    • 如果没有配置过,请在 php.ini 里开启,e.g error_log = /tmp/php_error.log
  3. 检查 php open_basedir 是否关闭(或者将 /opt/rasp 加入到允许的路径里)
    • 我们的 alarm 日志使用 PHP stream 写入,会受到这个配置的影响,e.g

      PHP Warning:  scandir(): open_basedir restriction in effect. File(/www/rasp/logs/alarm/alarm.lo

百度Openrasp开源的应用运行时自我保护产品,安装教程。的更多相关文章

  1. phpstudy运行时出现没有安装VC库

    系统默认的VC库是安装在C:\Program Files\Common Files\microsoft shared\VC的文件夹里,当运行PHP Study是出现如下的提示: 可以到下面的网站去下载 ...

  2. win7下无法安装QTP-少了Microsoft Visual c++2005 sp1运行时组件

    问题是:当我点击QTP的setup.exe进行QTP安装时,出现提示[少了Microsoft Visual c++2005 sp1运行时组件,安装时会提示命令行选项语法错误,键入“命令/?”可获取帮肋 ...

  3. RASP Runtime Application Self-protection 运行时应用自我保护 介绍及优缺点

    RASP 介绍 Runtime Application Self-protection 运行时应用自我保护 [图源:绿盟科技] 概念 Gartner (著名信息技术研究和分析厂商) 在2014年提出了 ...

  4. Android6.0运行时权限(基于RxPermission开源库)

    版权声明:本文为HaiyuKing原创文章,转载请注明出处! 前言 在6.0以前的系统,都是权限一刀切的处理方式,只要用户安装,Manifest申请的权限都会被赋予,并且安装后权限也撤销不了. And ...

  5. 运行时应用自我保护(RASP):应用安全的自我修养

    应用程序已经成为网络黑客想要渗透到企业内部的绝佳目标. 因为他们知道如果能发现并利用应用程序的漏洞,他们就有超过三分之一的机会成功入侵. 更重要的是,发现应用程序漏洞的可能性也很大. Contrast ...

  6. ASP.NET 5运行时升级到Beta5

    在Visual Studio 2015 RTM和Windows 10正式发布之前,微软把开源.NET升级到了beta5,带来了一些增强和改变.和Visual Studio 2015 RC一起安装的AS ...

  7. 自定义注解之运行时注解(RetentionPolicy.RUNTIME)

    对注解概念不了解的可以先看这个:Java注解基础概念总结 前面有提到注解按生命周期来划分可分为3类: 1.RetentionPolicy.SOURCE:注解只保留在源文件,当Java文件编译成clas ...

  8. iOS开发——高级特性&Runtime运行时特性详解

    Runtime运行时特性详解 本文详细整理了 Cocoa 的 Runtime 系统的知识,它使得 Objective-C 如虎添翼,具备了灵活的动态特性,使这门古老的语言焕发生机.主要内容如下: 引言 ...

  9. AgileEAS.NET SOA 中间件平台5.2版本下载、配置学习(四):开源的Silverlight运行容器的编译、配置

    一.前言 AgileEAS.NET SOA 中间件平台是一款基于基于敏捷并行开发思想和Microsoft .Net构件(组件)开发技术而构建的一个快速开发应用平台.用于帮助中小型软件企业建立一条适合市 ...

随机推荐

  1. MTK Android Camera运行流程

    Android Camera 运行流程 总体架构1.CameraService服务的注册2.Client端的应用层到JNI层Camera App-JNI3.Client到Service的连接4.HAL ...

  2. 【java 数据结构】还不会二叉树?一篇搞定二叉树

    二叉树是我们常见的数据结构之一,在学习二叉树之前我们需要知道什么是树,什么是二叉树,本篇主要讲述了二叉树,以及二叉树的遍历. 你能get到的知识点? 1.树的介绍 2.二叉树的介绍 3.二叉树遍历的四 ...

  3. P1352 没有上司的舞会&&树形DP入门

    https://www.luogu.com.cn/problem/P1352 题目描述 某大学有N个职员,编号为1~N.他们之间有从属关系,也就是说他们的关系就像一棵以校长为根的树,父结点就是子结点的 ...

  4. Java的运行时数据存储机制

    原文地址:http://yanwushu.sinaapp.com/java_data_storage/ Java程序在运行时需要为一系列的值或者对象分配内存,这些值都存在什么地方?用什么样的数据结构存 ...

  5. Docker-Bridge Network 02 容器与外部通信

    本小节介绍bridge network模式下,容器与外部的通信. 1.前言2.容器访问外部2.1 访问外网2.2 原理2.3 一张图总结2.4 抓包3.外部访问容器3.1 创建nginx容器并从外部访 ...

  6. 在svg文间画图过程中放大缩小图片后,坐标偏移问题

    //鼠标坐标:在SVG经过缩放.偏移.ViewBox转换后,鼠标坐标值 var mouseCoord = { x : ., y : . }; //用户坐标:相对于原始SVG,坐标位置 var user ...

  7. SQL Server 2005 sa登录失败。已成功与服务器建立连接 但是在登录过程中发生错误。 provider 共享内存提供程序 error 0 管道的另一端上无任何进程。

    SQL Server 2005 Express版 用户 'sa' 登录失败.该用户与可信 SQL Server 连接无关联.提示错误:已成功与服务器建立连接 但是在登录过程中发生错误. provide ...

  8. python超实用的30 个简短的代码片段(三)

    Python是目前最流行的语言之一,它在数据科学.机器学习.web开发.脚本编写.自动化方面被许多人广泛使用. 它的简单和易用性造就了它如此流行的原因. 如果你正在阅读本文,那么你或多或少已经使用过P ...

  9. 【论文研读】强化学习入门之DQN

    最近在学习斯坦福2017年秋季学期的<强化学习>课程,感兴趣的同学可以follow一下,Sergey大神的,有英文字幕,语速有点快,适合有一些基础的入门生. 今天主要总结上午看的有关DQN ...

  10. vue2.x学习笔记(四)

    接着前面的内容:https://www.cnblogs.com/yanggb/p/12563162.html. 模板语法 vue使用了基于html的模板语法,允许开发者声明式地将dom绑定到底层vue ...