• JBoss 服务器安装
    • 自动化安装
    • 手动安装 - Linux
      • 1. 安装软件
      • 2. 配置 JBoss
      • 3. 开启远程管理
      • 4. 验证安装是否成功
  • 手动安装 - Windows
    • 1. 安装软件
    • 2. 配置 JBoss
    • 3. 开启远程管理
    • 4. 验证安装是否成功
  • 已知问题
    • 1. JBoss 7 兼容性
    • 2. java.io.ObjectInputStream 错误

    JBoss 服务器安装

    自动化安装

    解压缩后,首先进入到解压后的目录中,e.g rasp-20170721

    如果你要开启远程管理,请先参考 管理后台 - 添加主机 文档,找到 app_id/app_secret/backend_url 三个关键参数,然后执行如下命令,

    1. java -jar RaspInstall.jar -install <jboss_root> -backendurl http://XXX -appsecret XXX -appid XXX

    如果你只是运行单机版,只需要指定 -install 参数,

    1. java -jar RaspInstall.jar -install <jboss_root>

    安装成功后,需要重启 JBoss 服务器生效。

    不重启安装

    以上方式安装成功之后需要重启服务器,如果在服务器启动的情况下,不重启安装 OpenRASP,需要在以上命令后面增加 -pid 参数指定运行的服务器进程 id,JDK6 - JDK8 样例命令如下,

    1. # <server_pid> 为 jboss 进程 id
    2. # $JAVA_HOME 为 jdk 根目录环境变量,如果未指定该环境变量,替换为 jdk 的完整根目录
    3. java -Xbootclasspath/a:$JAVA_HOME/lib/tools.jar -jar RaspInstall.jar -install <jboss_root> -pid <server_pid>

    jdk9 ~ jdk11 不支持不重启安装

    手动安装 - Linux

    1. 安装软件

    进入到 jboss 安装目录(绝对路径包含空格将导致启动失败),e.g /opt/jboss

    复制安装包内的 rasp 目录到当前目录,

    1. cp -R ~/Downloads/rasp-20170721/rasp .

    OpenRASP 需要在 rasp 目录下释放一些动态链接库,所以还需要修改 rasp 目录的权限,e.g

    1. chmod 777 -R rasp
    2. 配置 JBoss

    如果是 JBoss 4-6 (非 EAP 版本),

    打开bin/run.sh, 找到任意以 JAVA_OPTS= 为起始的行,e.g

    1. # Setup JBoss specific properties
    2. JAVA_OPTS="-Dprogram.name=$PROGNAME $JAVA_OPTS"

    在下面增加 JAVA_OPTS="-javaagent:${JBOSS_HOME}/rasp/rasp.jar ${JAVA_OPTS}",最终效果如下:

    1. # Setup JBoss specific properties
    2. JAVA_OPTS="-Dprogram.name=$PROGNAME $JAVA_OPTS"
    3. JAVA_OPTS="-javaagent:${JBOSS_HOME}/rasp/rasp.jar ${JAVA_OPTS}"

    如果是 JBoss EAP,

    standalone模式

    打开bin/standalone.sh,找到# Display our environment处,在下面添加:

    1. JAVA_OPTS="${JAVA_OPTS} -javaagent:${JBOSS_HOME}/rasp/rasp.jar"
    2. JAVA_OPTS="$JAVA_OPTS -Djboss.modules.system.pkgs=org.jboss.byteman,org.jboss.logmanager,com.baidu.openrasp"
    3. JAVA_OPTS="$JAVA_OPTS -Djava.util.logging.manager=org.jboss.logmanager.LogManager"
    4. JAVA_OPTS="$JAVA_OPTS -Xbootclasspath/p:${JBOSS_HOME}/modules/org/jboss/logmanager/main/jboss-logmanager-x.x.x.jar"
    5. JAVA_OPTS="$JAVA_OPTS -Xbootclasspath/p:${JBOSS_HOME}/modules/org/jboss/logmanager/log4j/main/jboss-logmanager-log4j-x.x.x.jar"
    6. JAVA_OPTS="$JAVA_OPTS -Xbootclasspath/p:${JBOSS_HOME}/modules/org/apache/log4j/main/log4j-x.x.x.jar"

    对于jboss-logmanager-x.x.x.jar、jboss-logmanager-log4j-x.x.x.jar和log4j-x.x.x.jar中的 x.x.x 代表当前jboss自己提供的相应的jar包版本,如果提示找不到这些 jar 包,将所有 ${JBOSS_HOME}/modules/org/jboss/logmanager/log4j/main/ 路径更改为 ${JBOSS_HOME}/modules/system/layer/base/org/jboss/logmanager/log4j/main/

    domain模式

    server-group方式配置rasp

    如果按照server-group配置rasp,那么此group下面所有的服务器都会安装rasp,打开domain/configuration/domain.xml文件,找到<server-groups>标签,在需要安装rasp的server-group中找到<jvm>标签添加如下配置:

    1. <jvm-options>
    2. <option value="-javaagent:<jboss_root>/rasp/rasp.jar"/>
    3. <option value="-Xbootclasspath/p:<jboss_root>/modules/system/layers/base/org/jboss/logmanager/main/jboss-logmanager-x.x.x.jar"/>
    4. <option value="-Xbootclasspath/p:<jboss_root>/modules/system/layers/base/org/jboss/logmanager/main/jboss-logmanager-log4j-x.x.x.jar"/>
    5. <option value="-Xbootclasspath/p:<jboss_root>/modules/system/layers/base/org/jboss/logmanager/main/log4j-x.x.x.jar"/>
    6. </jvm-options>

    其中<jboss_root>为jboss的根目录,jboss-logmanager-x.x.x.jar、jboss-logmanager-log4j-x.x.x.jar和log4j-x.x.x.jar中的 x.x.x 代表当前jboss自己提供的的jar包的版本。

    在需要安装rasp的server-group中添加如下配置:

    1. <system-properties>
    2. <property name="jboss.modules.system.pkgs" value="org.jboss.byteman,org.jboss.logmanager,com.baidu.openrasp"/>
    3. <property name="java.util.logging.manager" value="org.jboss.logmanager.LogManager"/>
    4. </system-properties>

    server方式配置rasp

    如果只对某个server-group的特定的server安装rasp,打开domain/configuration/host.xml文件,找到<servers>标签,在需要安装rasp的server中添加如下配置:

    1. <system-properties>
    2. <property name="jboss.modules.system.pkgs" value="org.jboss.byteman,org.jboss.logmanager,com.baidu.openrasp"/>
    3. <property name="java.util.logging.manager" value="org.jboss.logmanager.LogManager"/>
    4. </system-properties>
    5. <jvm name="default">
    6. <jvm-options>
    7. <option value="-javaagent:<jboss_root>/rasp/rasp.jar"/>
    8. <option value="-Xbootclasspath/p:<jboss_root>/modules/system/layers/base/org/jboss/logmanager/main/jboss-logmanager-x.x.x.jar"/>
    9. <option value="-Xbootclasspath/p:<jboss_root>/modules/system/layers/base/org/jboss/logmanager/main/jboss-logmanager-log4j-x.x.x.jar"/>
    10. <option value="-Xbootclasspath/p:<jboss_root>/modules/system/layers/base/org/jboss/logmanager/main/log4j-x.x.x.jar"/>
    11. </jvm-options>
    12. </jvm>

    其中<jboss_root>为jboss的根目录,jboss-logmanager-x.x.x.jar、jboss-logmanager-log4j-x.x.x.jar和log4j-x.x.x.jar中的 x.x.x 代表当前jboss自己提供的的jar包的版本。

    3. 开启远程管理

    配置方法同 Tomcat 开启远程管理,不再赘述。

    4. 验证安装是否成功

    重启 JBoss 服务器,观察启动日志中是否出现 OpenRASP Engine Initialized字段,出现则说明安装成功

    手动安装 - Windows

    1. 安装软件

    进入到 jboss 安装目录,e.g D:\jboss

    复制安装包内的 rasp 目录到当前目录

    2. 配置 JBoss

    如果使用Jboss 4~6 (非 EAP 版本),则打开 bin\run.bat;

    打开脚本后,找到任意以 set JAVA_OPTS 为起始的行,如:

    1. set JAVA_OPTS=%JAVA_OPTS% -Dprogram.name=%PROGNAME%

    在下面增加 set JAVA_OPTS=-javaagent:%JBOSS_HOME%\rasp\rasp.jar %JAVA_OPTS%

    1. set JAVA_OPTS=%JAVA_OPTS% -Dprogram.name=%PROGNAME%
    2. set JAVA_OPTS=-javaagent:%JBOSS_HOME%\rasp\rasp.jar %JAVA_OPTS%

    如果使用Jboss EAP,

    standalone模式

    打开 bin\standalone.bat 找到第一次出现rem Setup JBoss specific properties处,在下面添加:

    1. set "JAVA_OPTS=%JAVA_OPTS% -javaagent:%JBOSS_HOME%\rasp\rasp.jar"
    2. set "JAVA_OPTS=%JAVA_OPTS% -Djboss.modules.system.pkgs=org.jboss.byteman,org.jboss.logmanager,com.baidu.openrasp"
    3. set "JAVA_OPTS=%JAVA_OPTS% -Djava.util.logging.manager=org.jboss.logmanager.LogManager"
    4. set "JAVA_OPTS=%JAVA_OPTS% -Xbootclasspath/p:%JBOSS_HOME%\modules\org\jboss\logmanager\main\jboss-logmanager-x.x.x.jar"
    5. set "JAVA_OPTS=%JAVA_OPTS% -Xbootclasspath/p:%JBOSS_HOME%\modules\org\jboss\logmanager\log4j\main\jboss-logmanager-log4j-x.x.x.jar"
    6. set "JAVA_OPTS=%JAVA_OPTS% -Xbootclasspath/p:%JBOSS_HOME%\modules\org\apache\log4j\main\log4j-x.x.x.jar"

    domain模式

    方法同 Linux 版本

    3. 开启远程管理

    配置方法同 Tomcat 开启远程管理,不再赘述。

    4. 验证安装是否成功

    重启 JBoss 服务器,观察启动日志(默认输出到终端)中是否出现 OpenRASP Engine Initialized字段,出现则说明安装成功;或者访问一下服务器,检查是否存在 X-Protected-By: OpenRASP 响应头,存在即表示安装成功。

    已知问题

    1. JBoss 7 兼容性

    在测试阶段我们发现 jboss7 + jdk6u26 版本,存在无法正常启动的问题,与jboss7的classloader加载机制有关,解决该问题需要用户进行如下配置修改(以 windows 为例):

    • 修改 standalone.conf.bat 文件,将set "JAVA_OPTS=%JAVA_OPTS% -Djboss.modules.system.pkgs=org.jboss.byteman" 替换为 set "JAVA_OPTS=%JAVA_OPTS% -Djboss.modules.system.pkgs=org.jboss.byteman,org.jboss.logmanager"
    • 修改 standalone.bat 文件,在配置-javaagent:XXXX行后添加:
    1. set JAVA_OPTS=-Djava.util.logging.manager=org.jboss.logmanager.LogManager %JAVA_OPTS%
    2. set JAVA_OPTS=-Xbootclasspath/p:%JBOSS_HOME%\modules\org\jboss\logmanager\main\jboss-logmanager-1.2.2.GA.jar;%JBOSS_HOME%\modules\org\jboss\logmanager\log4j\main\jboss-logmanager-log4j-1.0.0.GA.jar;%JBOSS_HOME%\modules\org\apache\log4j\main\log4j-1.2.16.jar %JAVA_OPTS%

    注意相应jar包版本应与jboss modules路径下对应jar包版本一致。 jboss7使用中出现OpenRASP相关问题,请联系我们

    2. java.io.ObjectInputStream 错误

    这个并不是 OpenRASP 的问题,请尝试更新JDK到最新版本

    参考资料

    • The type java.io.ObjectInputStream cannot be resolved. It is indirectly referenced from required .class files