Java 版本日志配置

OpenRASP 使用修改过的 log4j (版本 1.2.17) 作为日志输出框架,

  • 将默认包名 org.apache.log4j 更改为 com.baidu.openrasp.log4j
  • 将默认配置关键字 log4j.configuration 更改为 log4j.rasp.configuration
  • 增加 Syslog TCP Appender,支持按照TCP方式传输报警日志
    本文提到的配置,与log4j 官方配置文档并无不同,用户也可参考官方文档进行配置

具体配置文件为 <app_home>/rasp/conf/rasp-log4j.xml,OpenRASP 在启动时会检查这个文件是否存在,若不存在则生成一个

配置说明

1. 使用 Syslog 采集报警日志

通常单条报警日志都会超过1KB,所以你只能使用 Syslog TCP 方式传输日志

找到 <log4j:configuration> 节点,加入一个 <appender> 节点(默认配置文件中有配置示例),

  1. <appender name="SYSLOGTCP" class="com.baidu.openrasp.messaging.SyslogTcpAppender">
  2. <param name="Threshold" value="INFO" />
  3. <param name="Facility" value="LOCAL0" />
  4. <param name="RemoteHost" value="127.0.0.1" />
  5. <param name="FacilityPrinting" value="true"/>
  6. <param name="Port" value="514" />
  7. <param name="ReconnectionDelay" value="60000" />
  8. </appender>

然后找到 <logger name="com.baidu.openrasp.plugin.alarm">,添加一个 <appender-ref ref="SYSLOG" /> 节点,e.g

  1. <logger name="com.baidu.openrasp.plugin.alarm" additivity="false">
  2. <level value="INFO" />
  3. <appender-ref ref="ALARM" />
  4. <appender-ref ref="SYSLOGTCP" />
  5. </logger>

修改后重启应用服务生效

2. 开启调试日志

开启调试日志后,OpenRASP 传递给插件的参数、以及插件返回的结果都会被记录到调试日志里

找到 <root> 节点,修改 INFO 级别为 DEBUG

  1. <root>
  2. <level value="INFO" />
  3. <appender-ref ref="RASP" />
  4. </root>

修改后重启应用服务生效

3. 开启日志限速

当插件需要打印大量调试日志时,你可以开启日志限速功能,防止对服务器的性能产生影响

找到你要限速的 <appender> 节点,添加如下内容

  1. <filter class="com.baidu.openrasp.messaging.BurstFilter">
  2. <param name="maxBurst" value="100000" />
  3. <param name="refillAmount" value="10000" />
  4. <param name="refillInterval" value="10" />
  5. </filter>

这表示在 在10秒内,最多打印 100000 条日志

修改后重启应用服务生效

4. HTTP报警推送

找到 <log4j:configuration> 节点,加入一个 <appender> 节点(默认配置文件中有配置示例),

  1. <appender name="ALARMHTTPAPPENDER" class="com.baidu.openrasp.messaging.AlarmHttpAppender">
  2. <param name="url" value="http://host:port/alarm"/>
  3. <param name="connectionTimeout" value="10000"/>
  4. <param name="readTimeout" value="10000"/>
  5. <param name="maxCacheSize" value="256"/>
  6. <param name="cacheFlushTime" value="60000"/>
  7. </appender>

参数说明:

  • url : the target address to receive the alarm
  • connectionTimeout : the number of milliseconds this Connector will wait, after accepting a connection, for the request URI line to be presented.
  • readTimeout : the timeout on waiting to read data.
  • maxCacheSize : max size of cached alarm logging item
  • cacheFlushTime : the time interval for post all the cached logging items
    该appender仅用于POST推送报警信息;然后找到 <logger name="com.baidu.openrasp.plugin.alarm">,添加一个 <appender-ref ref="ALARMHTTPAPPENDER" /> 节点,e.g
  1. <logger name="com.baidu.openrasp.plugin.alarm" additivity="false">
  2. <level value="INFO" />
  3. <appender-ref ref="ALARM" />
  4. <appender-ref ref="ALARMHTTPAPPENDER" />
  5. </logger>

为支持多条报警同时推送,POST数据形式(mime:application/json)如下,接收服务须能正确处理。服务异常处理:目前对于返回HTTP STATUS≥300的情况,会在catalina.out文件中记录相关错误信息,使用过程中务必留意,确保下游接收服务的正常运行。

  1. {
  2. "data": [
  3. {
  4. "attack_type": "xxe",
  5. "attack_source": "66.66.66.66",
  6. "plugin_name": "offical",
  7. "server_type": "Tomcat",
  8. ...
  9. "user_agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/60.0.3112.113 Safari/537.36"
  10. },
  11. ...
  12. {
  13. "attack_type": "directory",
  14. "attack_source": "66.66.66.66",
  15. "plugin_name": "offical",
  16. "server_type": "Tomcat",
  17. ...
  18. "user_agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/60.0.3112.113 Safari/537.36"
  19. }
  20. ]
  21. }

FAQ

1. 没有产生日志文件

如果你移动过 <app_home> 目录,你需要手工修正 <app_home>/rasp/conf/rasp-log4j.xml 里面定义的日志路径,否则可能无法正常写入日志

如果遇到其他问题,请联系我们

原文: https://rasp.baidu.com/doc/setup/log/java.html