Loading... # OpenRASP 安装教程 OpenRASP 是百度安全推出的一款 免费、开源 的应用运行时自我保护产品 * RASP与WAF区别 `WAF`,`Web Application Firewall`,应用防火墙。其原理是拦截原始http数据包,然后使用规则对数据包进行匹配扫描,如果没有规则匹配上那就放行数据包。正如一个门卫,如果他根据自己以往经验没看出要进入的人有疑点那么这个人就会被放行,至于进去的人在里面干什么他就不知道了。 `RASP`,`Runtime application self-protection`,运行时应用自我保护。Gartner公司2014年新提出的一个概念。其不是拦截数据包而是拦截将要执行的代码,对代码进行规则匹配如果没匹配上就放行代码。就好像在客厅、厨房、卧窒等每个地方都派一个管家监视,每个进到家里的要去什么地方做什么动作都在监视之下,一但发现某人要做出某些危险举动就会被阻止。拦截代码就类似hook,java通过重写ClassLoader等方法实现代码拦截。 OpenRasp还是比较像阿里云的WAF的 * 适用于Typecho ## 功能介绍 ### Web 2.0 攻击检测 ⾸先,我们定义了25种攻击⼿法,并参考 OWASP TOP 10 2017 对检测能⼒进⾏了分类。针对每个 漏洞,我们详细的说明了攻击场景、当前检测能⼒的覆盖程度。具体请参考 功能说明 - 检测能⼒说 明。 * A1 - 注⼊ * A2 - 失效的身份认证和会话管理 * A3 - 敏感数据泄露 * A4 - XML 外部实体(XXE) * A5 - 失效的访问控制 * A6 - 安全配置错误 * A7 - 跨站脚本(XSS) * A8 - 不安全的反序列化 * A9 - 使⽤含有已知漏洞的组件 * A10 - 不⾜的⽇志记录和监控 其次,针对已经公开的 CVE 漏洞,我们也进⾏了⼤量测试。具体覆盖状况请参考 功能说明 - CVE 漏洞覆盖说明。 最后,如果你想要了解 OpenRASP 检测算法,你可以查看百度安全实验室公众号发表的⽂章,或者 直接查看检测插件源代码。 ### 服务器安全基线检查 OpenRASP 会在应⽤服务器启动时,进⾏安全配置规范检查。做好安全基线,可以减少应⽤服务器 被⼊侵的⻛险。⽬前我们⽀持的策略如下, * 3001 - 关键 cookie 是否开启 httpOnly * 3002 - 进程启动账号检查 * 3003 - 后台密强度检查 * 3004 - 不安全的默认应⽤检查 * 3005 - Directory Listing 检查 * 3006 - 数据库连接账号审计 * 3007 - JBoss HTMLAdaptor 认证检查 * 4001 - PHP allow_url_include 配置审计 * 4002 - PHP expose_php 配置审计 * 4003 - PHP display_errors 配置审计 * 4004 - PHP yaml.decode_php 配置审计 不同的策略,⽀持的服务器也不同,具体请参考 功能说明 - 服务器安全基线检查。 ### 应⽤加固 当应⽤收到请求,我们会通过输出响应头的⽅式,实现对应⽤的加固。⽬前⽀持的配置如下 | 内容 | 响应头 | 可选配置 | | :-: | :-: | :-: | | 点击劫持防护 | X-Frame-Options | 不开启/deny/sameorigin | | MIME 嗅探防护 | X-Content-Type-Options | 不开启/nosniff | | XSS Auditor 防护 | X-XSS-Protection | 不开启/1; mode=block | | ⽂件⾃动运⾏防护 | X-Download-Options | 不开启/noopen | ## 安装 可以看到,安防功能还是比较强力的。 ### PHP版 #### 第一步:下载新版本安装包 下载地址: [国内镜像:packages.baidu.com](https://packages.baidu.com/app/openrasp/release/1.3.4/)[国外镜像: github.com](https://github.com/baidu/openrasp/releases) | 文件名 | 说明 | | :-: | :-: | | rasp-php-linux.tar.bz2 | PHP Agent,Linux NTS 版本 | | rasp-php-linux-ts.tar.bz2 | PHP Agent,Linux TS 版本 | #### 我该如何选择版本? ##### 方法一 通过phpinfo();打印环境查看其中的 Thread Safety 项,这个项目就是查看是否是线程安全如果是:enabled,一般来说应该是ts版,否则是nts版。 ##### 方法二 如果你是宝塔用户 直接使用NTS版本就可以了 --- 下载 `rasp-php-linux.tar.bz2` 或者 `rasp-php-linux-ts.tar.bz2`(线程安全版本) 并解压缩。之后进入到解压后的目录中 直接执行安装命令 ```shell php install.php -d /opt/rasp ``` 其中 `/opt/rasp` 为 OpenRASP 安装目录,用于存储检测插件、报警日志等等,可根据实际情况调整。在某些情况下,php cli 和 php-fpm 使用的 ini 不同,自动安装程序可能会失败。 ##### 宝塔用户Log文件不记录问题 在所有的.user.ini目录下加入 `/opt/rasp` #### 手动安装 Linux教程 待续 --- #### 验证安装是否成功 创建 `info.php` 文件, ```php <?php phpinfo(); ?> ``` 检查 `openrasp` 模块是否加载成功即可 * 宝塔用户请重启面板 ## 安全测试 * [国外镜像: github.com](https://packages.baidu.com/app/openrasp/testcases/) * [国内镜像: packages.baidu.com](https://packages.baidu.com/app/openrasp/testcases/) 下载文件 `php-vulns.tar.gz` 上传到服务器上进行测试  在这里我就简单测试一下  点击链接,即可测试是否开启成功 * 安装成功后打开链接会被成功拦截并跳转 并且 日志文件 `/opt/rasp/logs/alarm`文件里也有拦截记录  在后台管理界面(后台安装文章正在编写)中也能正常看到日志正常记录  ## 常见问题 ### OpenRASP 正常拦截攻击,但是 alarm.log 没有日志 * 检查logs目录是否拥有写权限 如果没有权限,可以执行`chmod 777 /opt/rasp/logs` 增加权限 * 检查 SELinux 是否开启,可以执行`setenforce 0` 关闭 ### 检查 php error_log 是否有 OpenRASP 相关的错误日志 * 如果没有配置过,请在 php.ini 里开启,`error_log = /tmp/php_error.log` ### 检查 php open_basedir 是否关闭(或者将 /opt/rasp 加入到允许的路径里) * alarm 日志使用 PHP stream 写入,会受到这个配置的影响 ``` PHP Warning: scandir(): open_basedir restriction in effect. File(/www/rasp/logs/alarm/alarm.log.2018-07-26) is not within the allowed path(s) ``` * 宝塔用户直接在`.user.ini` 加入路径即可 --- 最后修改:2021 年 04 月 13 日 02 : 55 PM © 允许规范转载 赞赏 如果觉得我的文章对你有用,请随意赞赏 ×Close 赞赏作者 扫一扫支付
此处评论已关闭