Splunk

本文介绍如何通过 Syslog TCP 方式,将日志采集到 Splunk 平台。

添加日志类型

在开始之前,我们需要先添加 openrasp 日志类型,否则 Splunk 无法组装超过1KB的日志。

方法1 - 手动添加

创建或者编辑 $SPLUNK_HOME/etc/system/local/props.conf,添加如下内容,并重启 Splunk 服务器以生效:

[openrasp]
BREAK_ONLY_BEFORE = \d\d?:\d\d:\d\d
SEDCMD-StripHeader = s/^[^{]+//
KV_MODE = json
pulldown_type = true

# Change the default maximum line length (in bytes)
TRUNCATE = 320000

上述配置添加了一个名为 openrasp 的日志类型,格式为 JSON,单行最大长度 320000 字符,足够使用了。

方法2 - 安装插件

首先在这里下载控制台插件,安装此插件会自动创建 openrasp 日志类型:

然后在 Splunk 首页左上角,点击 App -> Manage Apps -> Install app from file,点击浏览文件,选中刚才下载的插件,然后勾选 Upgrade app. Checking this will overwrite the app if it already exists 选项,点击上传:

Alt text

安装成功后,会在首页看到 RASP 应用,

Alt text

应用界面如图

Alt text

配置 Splunk 端口监听

在 Splunk 首页,点击右上角的 Settings -> DATA -> Data Inputs,然后选择 TCP 类型,并点击 NEW 进入配置界面。在这里,我们输入监听端口,即 514

log type

选择日志类型时,依然是 openrasp。接着点击 Review,然后点击 Submit 保存即可。

log type

当服务器收到日志,就可以在界面上查看了

log type

其他端口也是可以的,但协议只能是 TCP 类型。

配置 OpenRASP

如果是单机版,请根据 其他配置 - syslog 日志 的说明,配置至少如下两项:

  • syslog.enable=true
  • syslog.url=tcp://X.X.X.X:514

修改后应用重启服务器生效。

如果开启了管理后台,定位到 系统设置 -> 报警设置 -> Syslog 报警设置,在界面上配置即可。

开启邮件报警

首先点击右上角 设置 -> 系统 -> 服务器设置 -> 电子邮件设置,输入邮件服务器和账号信息,

Alt text

设置好上面邮箱信息后,可定期搜索报警,并通过邮件方式通知。

打开 Splunk -> 搜索 -> 设置搜索语句 -> 另存为 -> 告警

Alt text

已知问题

1. Syslog UDP 方式日志截断问题

如果你使用 Syslog UDP 方式采集日志,那么单条日志长度将被限制为 1KB。由于我们的报警日志通常在 2~3 KB,所以会导致报警日志截断

2. 界面上看不到日志

请按照如下步骤进行排查

  1. OpenRASP 是否产生报警日志?
    • 检查 <app_home>/rasp/logs/alarm.log 是否有报警?
  2. OpenRASP 是否将日志发给 Syslog 服务器?
    • 使用 wireshark/tcpdump 抓包分析
  3. Splunk 是否能收到数据?
    • 在应用服务器上,检查 Splunk 端口是否可连接?
    • 使用 linux logger 命令,模拟发送一条日志到 splunk,splunk 是否能收到?
      • e.g logger -n X.X.X.X -T -P 514 '{"hello":"world123"}'
  4. Splunk 有日志,但是 OpenRASP app 看不到数据
    • 使用默认的搜索应用,看是否能搜到数据?
    • 检查搜索时间范围是否正确?