• Java 版本日志配置
    • 配置说明
      • 1. 使用 Syslog 采集报警日志
      • 2. 开启调试日志
      • 3. 开启日志限速
      • 4. HTTP报警推送
    • FAQ
      • 1. 没有产生日志文件

    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