Java

支持的平台上

操作系统:OS X、Linux、Windows。架构:x86-64 (x64)

版本 应用程序服务器 Web框架 操作系统 验证框架
7 8 9 10 11
  • Tomcat 7*, Tomcat 8和Tomcat 9**
  • JBoss 6. x * * *
  • Wildfly 16. - 20. x * * * *
  • Jetty 9.3 + * * * * *
  • 暗潮1。倍、2.倍
春天4。倍、5.倍
  • CentOS 6 +
  • Ubuntu 14 +
  • Debian 8 +
  • 高山3.7.1 +
Spring Security 4。5. x, x * * * * * *

CentOS 6.0生命终结公告

截至2021年12月31日,Rapid7将在CentOS 6.0上结束生命(EOL) tCell代理。Agent文档和支持要求将同时反映这一变化。看到CentOS临终公告看看你是否受到了影响,以及你能采取什么行动。

Java支持的传说

* - Tomcat 7无法解析语法错误的cookie名称,因此有效地阻止了它们的注入尝试。因此,在这个用例中,没有应用程序防火墙事件出现在tCell云中。
** -如果使用Servlet API 3.1或更高,将不能使用异步特性(Tomcat 8和9)。
*** - JBoss有一个已知的bug,请参见外部Java代理的JBoss问题为一个解决方案。
**** -如果使用Wildfly,则没有路线信息可用。
*****—当在HTTP报头中注入空字节时,带有Eclipse Jetty服务器的JVM代理在许多情况下不会检测和发出空字节事件。
****** -登录支持需要使用Spring Security.看到登录检测与Spring安全为更多的信息。

Java支持说明

tCell不支持将JVM代理与应用程序防火墙传感器一起使用reqszrspsz启用并使用分块编码。结果是普遍失败reqszrspsz应用程序防火墙注射。

先决条件

  • 设置一个tCell帐户
  • 创建的应用程序(Admin > Applications)
  • 允许出站HTTPS连接到tCell云:tCell代理连接到哪些ip ?
  • 下载并安装Visual c++ 2015运行时:https://www.microsoft.com/en-us/download/details.aspx?id=53840
  • 下载代理和配置文件:
    1. 点击顶部导航栏中的“tCell Admin”
    2. 点击“下载代理”
    3. 选择“Java”代理
    4. 下载zip文件或tar.gz文件
    5. 选择“Create New API Key”(默认)
    6. 单击“下载配置文件”下载代理的配置文件(其中预先填充了应用程序和API密钥信息)

安装

安装到典型的Apache Tomcat服务器中

这些步骤适用于从上游源获取的典型Tomcat安装http://tomcat.apache.org

  1. 将Java代理解压到要用于tCell的目录的父目录中。如果使用标准的Tomcat目录结构,我们建议使用Tomcat主目录。如。/ apache-tomcat-7.0.63 /。.现在您应该有一个名为tcell
  2. 复制文件tcell_agent。配置到此目录。
  3. 检查tcell目录和文件。您的应用服务器运行的用户应该能够读和写这个目录。但是,所有的JAR文件都应该由根用户拥有并且是只读的,以尽量减少用户替换JAR的机会。例如:
         
1
chown -R tomcat:tomcat ./tcell . chown
2
chmod u + rwx。/ tcell
3.
乔恩根:tomcat / tcell / tcell * jar
4
chmod 444。/ tcell tcell * jar
    1. 在普通的Tomcat安装中,编辑或创建bin / setenv.sh文件(setenv.bat在Windows上)有-javagent参数添加到CATALINA_OPTS。

    例如,如果你在$CATALINA_HOME中安装了tCell,你可以添加:

               
    1
    CATALINA_OPTS = " $ CATALINA_OPTS - javaagent: $ {CATALINA_HOME} / tcell / tcellagent.jar”

    Windows相当于:

               
    1
    设置CATALINA_OPTS = % CATALINA_OPTS %”- javaagent: % CATALINA_HOME % \ tcell \ tcellagent.jar”

    JAVA_HOME和JRE_HOME环境变量

    运行tomcat服务器需要设置其中一个。这通常是普通Java安装过程的一部分。没有有效的Java安装,服务器将无法启动。

  1. 如果你通过命令行启动你的应用程序,更新它以具有以下内容:
               
    1
    >"-javaagent:"
    注意:在tcell目录中有一个名为“tcellagent.jar”的文件。
  1. 重新启动应用程序服务器

安装到Red Hat / Centos打包的Tomcat服务器

当使用Red Hat派生发行版的tomcat包时,这些步骤是适当的。

  1. 如果未安装,请使用操作系统工具进行安装,如yum安装tomcatdnf安装tomcat
  2. 将Java Agent解压到tomcat目录中/usr/share/tomcat创建新目录/usr/share/tomcat/tcell
  3. 复制或移动下载的tcell_agent。配置文件到这个新目录。
  4. 确保步骤2和步骤3创建或添加的文件和目录可由“tomcat”用户读取。例如:
               
    1
    chown -R tomcat:tomcat /usr/share/tomcat/tcell . chown
  5. 在/etc/tomcat/tomcat.conf后面添加java代理选项
               
    1
    CATALINA_OPTS = " $ CATALINA_OPTS - javaagent: / usr / share / tomcat / tcell / tcellagent.jar”
  6. 重新启动tomcat服务器。

验证

要验证数据正在发送到tCell,请转到您的tCell控制台,并确保为您刚刚创建的应用程序列出的应用程序服务器代理的数量大于0。

故障排除

尝试test命令:

         
1
$ Java -jar tcell/tcellagent.jar test
2
检查当前配置文件[已通过]
3.
检查配置文件是否解析[通过]
4
检查以TCELL_ [PASSED]开头的环境参数
5
初始化日志(通过)
6
检查app_id your-appid
7
检查api_key [PASSED]
8
从API获取策略[已通过]
9
发送事件到输入[PASSED]
10
检查libtcellagent版本:[1.0.0]

日志记录

日志文件可以在tcell /日志目录中。如果你没有看到tcell /日志目录,很可能是tCell代理没有启动。如果是这样的话

  1. 运行以下命令,确认tCell代理正在添加到服务器启动中:
               
    1
    Ps aux | grep——color tcell
  2. 检查你的简历中有没有错误catalina.out日志。另外,跑步bin / catalina.sh运行bin / catalina.bat运行将在前台启动tomcat,并在启动时打印任何错误。

日志级别可自定义tcell_agent.config文件通过添加一个块,如以下:

         
json
1
“logging_options”
2
“启用”真正的
3.
“水平”“信息”
4

有效的日志级别包括:

  • 错误
  • 警告
  • 信息(默认)
  • 调试
  • 跟踪

该列表指示了从上到下各级别之间的优先级。当启用日志级别时,较高的日志级别也同时启用。例如,如果您启用WARN,那么ERROR也会启用。在tcell目录中,看到tcell_agent.config.template了一个例子。

当日志文件已满时,将在新的日志文件中继续记录日志。看到日志滚动为更多的信息。

YourKit分析器的兼容性

确保tCell代理java参数列在Yourkit参数之前。

FileNotFoundException (Wildfly)

在本节中,您可能会看到一些类似于堆栈跟踪的内容。这些警告是良性的。您可以通过添加命令来禁用产生此异常的检测

"enabled_instrumentations": {"jboss": false}

到tcell_agent中的应用程序块。配置,但这可能导致在tCell UI中丢失包。

         
1
tcell. packagetracker - Failed to collect package info for code source ca.uhn. happy - happy -structures-v21-2.3.jar .jar .jar .jar .jar .jar .jar .jar .jar .jar .jar .jar .jar .jar .jar .jar .jar .jar .jar .jar .jar .jar .jar
2
java.nio.file.NoSuchFileException: / opt / gwn / wildfly-16.0.0.Final /独立/部署/ lib / ca.uhn.hapi-hapi-structures-v21-2.3.jar
3.
sun.nio.fs.UnixException.translateToIOException (UnixException.java: 86)
4
sun.nio.fs.UnixException.rethrowAsIOException (UnixException.java: 102)
5
sun.nio.fs.UnixException.rethrowAsIOException (UnixException.java: 107)
6
sun.nio.fs.UnixFileSystemProvider.newByteChannel (UnixFileSystemProvider.java: 214)
7
java.nio.file.Files.newByteChannel (Files.java: 361)
8
java.nio.file.Files.newByteChannel (Files.java: 407)
9
java.nio.file.Files.readAllBytes (Files.java: 3152)
10
io.tcell.PackageTracker.computeSha1Sum (PackageTracker.java: 130)
11
io.tcell.PackageTracker.loadPackageInfo (PackageTracker.java: 104)
12
io.tcell.PackageTracker.run (PackageTracker.java: 55)
13
java.lang.Thread.run (Thread.java: 748)