• Splunk
    • 添加日志类型
      • 方法1 - 手动添加
      • 方法2 - 安装插件
    • 配置 Splunk 端口监听
    • 配置 OpenRASP
    • 开启邮件报警
    • 已知问题
      • 1. Syslog UDP 方式日志截断问题
      • 2. 界面上看不到日志

    Splunk

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

    添加日志类型

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

    方法1 - 手动添加

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

    1. [openrasp]
    2. BREAK_ONLY_BEFORE = \d\d?:\d\d:\d\d
    3. SEDCMD-StripHeader = s/^[^{]+//
    4. KV_MODE = json
    5. pulldown_type = true
    6. # Change the default maximum line length (in bytes)
    7. TRUNCATE = 320000

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

    方法2 - 安装插件

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

    • splunk-app-1.1.zip 然后在 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. 界面上看不到日志

    请按照如下步骤进行排查

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