OpenRASP Documents (Old)
  • 简介
  • 安装部署
    • 兼容性说明
    • 安装管理后台
    • 快速接入
      • PHP 服务器
      • Tomcat 服务器
      • JBoss 服务器
      • Wildfly 服务器
      • Resin 服务器
      • Jetty 服务器
      • Spring Boot 框架
      • WebLogic 服务器
      • WebSphere 服务器
      • 宝兰德BES服务器
      • 东方通TongWeb服务器
      • 中创InforSuiteAS服务器
      • 普元PAS服务器
    • 安装测试用例
    • 安装灰盒扫描工具
      • IAST 高级配置选项
    • SIEM 系统集成
      • Splunk
      • Logstash
    • 大规模部署
    • 卸载软件
  • 服务配置
    • 日志说明
    • 管理后台
    • 单机版本
    • 其他配置
  • 功能说明
    • 攻击检测能力说明
    • CVE 漏洞覆盖说明
    • 安全基线检查
    • 应用加固支持
    • 应用异常监控
    • 类库信息查询
    • HTML 响应修改
  • 插件开发
    • 开发插件
    • 接口说明
      • RASP 类接口
      • Context 类接口
    • 参数说明
    • 单元测试
    • 在线调试
    • 官方插件定制
  • 二次开发
    • 架构说明
      • Java 版本
      • PHP 版本
      • 管理后台
      • IAST 扫描器
      • Hook 函数列表
    • 从源代码编译
      • Java 版本
      • PHP 版本
      • 管理后台
    • 云控后台接口
    • 代码调试
    • 添加新的Hook点
    • 添加新的插件API
    • 提交你的代码
  • 性能测试
  • 版本变更
  • 关于我们
Powered by GitBook
On this page
  • 物理机部署
  • 容器化部署
Export as PDF
  1. 安装部署

大规模部署

PreviousLogstashNext卸载软件

Last updated 11 days ago

物理机部署

百度内部主要是 Java/PHP 两种语言,其中Java服务器主要是 tomcat。目前,我们只提供了 Java + Tomcat 环境的批量安装脚本,可在源代码仓库里找到:

批量安装脚本会执行如步骤:

  1. 遍历所有名字为 "java" 的进程

  2. 获取进程相关信息

    • 进程检查: 获取启动参数、环境变量信息,检查是否为 tomcat 进程,如果不是,跳过

    • 端口检查: 尝试获取 tomcat 一个可用的 HTTP 端口,如果找不到跳过当前进程

    • 权限检查: 如果用户为root,使用su进行安装;否则检查进程UID是否和当前用户一致,不一致跳过

    • 用户检查: 检查是否能否获取到当前用户名,获取不到就跳过

    • 版本检查: 检查 tomcat/jdk 是否为支持的范围,不支持就跳过

    • 冲突检查: 检查是否有其他的 javaagent 参数,如果发现且不为 openrasp,就跳过

  3. 安装流程

    • 首先执行 RaspInstall.jar 进行安装,如果出错进入回滚流程

    • 然后尝试关闭 tomcat 服务器,最多等待30s

    • 之后尝试启动 tomcat 服务器,并不断尝试访问之前找到的 URL 地址,最多尝试60次

      • 如果失败,进入回滚流程

  4. 回滚流程

    • 执行卸载操作,然后启动 tomcat 服务器

    • 如果无法启动,打印错误

  5. 最后上传完整的脚本日志,包括安装和回滚(如果有)

容器化部署

对于 alpine 容器,需要增加如下内容

RUN apk add --no-cache gcompat libcurl libstdc++

如果不能运行,请尝试增加软连接

ln -s /lib64/ld-linux-x86-64.so.2 /lib/ld-linux-x86-64.so.2

Java 版本

Tomcat 示例

假设 tomcat 安装路径为 /tomcat/,在服务器启动之前增加 ADD + RUN 命令即可:

ADD https://packages.baidu.com/app/openrasp/release/latest/rasp-java.tar.gz /tmp
RUN cd /tmp \
    && tar -xf rasp-java.tar.* \
    && /jdk/bin/java -jar rasp-*/RaspInstall.jar -install /tomcat/ -appid XXX -appsecret XXX -backendurl XXX \
    && rm -rf rasp-*

SpringBoot 示例

假设 springboot 打包后的jar为 /springboot.jar,请先解压缩 rasp 相关文件,然后修改 JVM 启动参数:

ADD https://packages.baidu.com/app/openrasp/release/latest/rasp-java.tar.gz /tmp
RUN cd /tmp \
    && tar -xf rasp-java.tar.* \
    && mv rasp-*/rasp/ /rasp/ \
    && rm -f rasp-java.tar.gz

RUN echo "cloud.enable: true" >> /rasp/conf/openrasp.yml \
    && echo "cloud.backend_url: XXX" >> /rasp/conf/openrasp.yml \
    && echo "cloud.app_id: XXX" >> /rasp/conf/openrasp.yml \
    && echo "cloud.app_secret: XXX" >> /rasp/conf/openrasp.yml

RUN java -javaagent:"/rasp/rasp.jar" -jar /springboot.jar

PHP 版本

请在 apache/php-fpm 启动前增加如下命令

ADD https://packages.baidu.com/app/openrasp/release/latest/rasp-php-linux.tar.bz2 /tmp/
RUN cd /tmp \
    && tar -xf rasp-php-linux.tar.bz2 \
    && php rasp-php-*/install.php -d /opt/rasp/ --backend-url XXX --app-id XXX --app-secret XXX \
    && rm -rf rasp-php*

当然,在实际上线的过程中,我们还编写了一个打包脚本,用来生成单文件的安装包。有兴趣可以参考 相关脚本。

容器部署通常都需要定制。在百度内部,我们一般是修改 Dockerfile,并在发布镜像时集成 OpenRASP。在执行下面的命令之前,请先。

更多内容可参考

更多内容可参考

baidu/openrasp - rasp-install/remote/linux/batch-installer.sh
baidu/openrasp - rasp-install/packer
在管理后台获取 app_id/app_secret/backendurl 等参数的值
baidu-security/app-env-docker - src/openrasp/tomcat7.0/Dockerfile
baidu-security/app-env-docker - src/openrasp/php5.4/Dockerfile