安装部署篇(一)

一、Splunk概述

Splunk 是机器数据的引擎,提供了日志收集、存储、分析、可视化展示为一体的一整套解决方案。借助Splunk进行调查和取证、威胁监测以及事件响应,以应对各种不同的安全挑战。

二、安装Splunk

2.1 下载Splunk

由于一些合规要求,如果你也遇到这样的访问限制,那么就需要重新注册用户。比如可以使用foxmail邮箱,注册地选择其他国家,这样注册就可以正常访问到下载源。
Bypass - Splunk系列 - 图1
创建账号后,即可进入安装包下载界面,选择对应的安装包,点击下载即可下载Splunk Enterprise,免费试用60天,每天索引500MB。
Bypass - Splunk系列 - 图2

2.2 在Linux平台安装Splunk

(1)安装Splunk

  1. cd /optrpm -ivh rpm -ivh splunk-8.2.3-cd0848707637-linux-2.6-x86_64.rpm

(2)设置环境变量

  1. [root@localhost bypass]# vi /etc/profile
  2. export SPLUNK_HOME=/opt/splunk
  3. export PATH=$SPLUNK_HOME/bin:$PATH
  4. [root@localhost bypass]# source /etc/profile

(3)启动splunk

使用splunk start 命令启动splunk,输入用户和密码,完成初始化:
Bypass - Splunk系列 - 图3

(4)访问splunk web端口

Bypass - Splunk系列 - 图4

2.3 在Windows平台安装Splunk

(1)安装准备

下载Windows msi安装包,安装环境:

  • Windows10
  • Windows Server 2016、2019

    (2)安装Splunk

    双击msi文件,进入自定义安装,一直点击下一步,直至完成。

    (3)系统环境与服务管理

    设置环境变量:将C:\Splunk\bin 添加到path
    在服务管理,可以看到有一个Splunkd Service服务:
    Bypass - Splunk系列 - 图5

    (4)访问splunk

    打开浏览器,建议使用chrome,Splun默认在端口8000上运行。Splunk web访问地址“http://localhost:8000”:
    Bypass - Splunk系列 - 图6

    数据接入篇(二)

    一、简单概述

    Splunk支持多种多样的数据源,比如它可以直接上传文件,可以监控本地的任何目录或文件,也可以配置通用转发器等方式来完成数据接入。Splunk所有的设置都可以通过Web页面、使用Splunk CLI命令,甚至是直接修改配置文件,以此来完成设置。
    那么,如何接入数据呢?我们通过两个比较常见的数据接入场景做个应用示例吧,即收集syslog 日志以及使用通用转发器(Agent)收集数据。

    二、应用实例1:收集syslog日志

    2.1、Linux rsyslog客户端配置

    (1)rsyslog安装

    1. yum install rsyslog

    (2)启用TCP进行传输

    1. vim /etc/rsyslog.conf
    2. # Provides TCP syslog reception #若启用TCP进行传输,则取消下面两行的注释
    3. $ModLoad imtcp
    4. $InputTCPServerRun 514
    5. *.* @@192.168.44.130:514

    (3)重启rsyslog服务

    1. systemctl restart rsyslog

    2.2、Splunk TCP监听配置

    端口

    依次访问访问首页→添加数据→监视→TCP/UDP,选择TCP,确认端口,点击下一步:
    Bypass - Splunk系列 - 图7

    来源类型

    选择来源类型,确认主机和索引,点击检查:
    Bypass - Splunk系列 - 图8
    检查确认后,点击提交:
    Bypass - Splunk系列 - 图9
    这里已经完成TCP监听端口的创建,点击开始搜索,可以发现linux客户端传输过来的syslog数据:
    Bypass - Splunk系列 - 图10

    三、应用实例2:使用通用转发器收集Windows日志

    3.1 配置Splunk接收端口

    设置→转发和接收→配置接收,新增接收端口:
    Bypass - Splunk系列 - 图11

    3.2 配置Windows通用转发器

    双击msi文件进行安装:
    Bypass - Splunk系列 - 图12
    将通用转发器配置为部署客户端:
    Bypass - Splunk系列 - 图13
    配置接收的服务器端口:
    Bypass - Splunk系列 - 图14
    点击install,直到完成安装:
    Bypass - Splunk系列 - 图15

    3.3 添加Windows事件日志

    在设置→转发器管理里面,可以看到已上线的客户端:
    Bypass - Splunk系列 - 图16
    设置→数据输入,选择Windows事件日志,新建新远程Windows事件日志:
    Bypass - Splunk系列 - 图17
    选择来源,选择事件日志:
    Bypass - Splunk系列 - 图18
    选择索引,或者新建索引:
    Bypass - Splunk系列 - 图19
    检查后提交:
    Bypass - Splunk系列 - 图20
    完成数据添加:
    Bypass - Splunk系列 - 图21
    点击开始搜索,成功获取到Windows事件日志:
    Bypass - Splunk系列 - 图22

    字段提取篇(三)

    一、简单概述

    Splunk 是一款功能强大的搜索和分析引擎,而字段是splunk搜索的基础,提取出有效的字段就很重要。
    当Spklunk开始执行搜索时,会查找数据中的字段。与预定义提取指定字段不同,Splunk可以通过用户自定义从原始数据中动态提取字段。
    这里,我们演示一下如何利用Splunk来提取字段。

    二、字段提取器

    Splunk提供了一种非常简单的方式来提取字段,就是使用字段提取器,即使在你完全不了解正则表达式的情况下,也可以轻松完成字段提取。

    访问字段提取器

    执行事件搜索,左边栏往下,单击提取新字段,进入字段提取器:
    Bypass - Splunk系列 - 图23

    选择示例

    在事件列表中,选择一个需要进行字段提取的示例事件:
    Bypass - Splunk系列 - 图24

    选择方法

    提供了两种字段提取的方法:正则表达式和分隔符。正则表达式主要用于非结构化数据;而基于表格的结构化数据,使用分隔符即可:
    Bypass - Splunk系列 - 图25

    选择字段

    选择需要字段提取的值,下面会出现对话框,对字段名称进行命名。一般我们也可手动编辑正则表达式进行调整:
    Bypass - Splunk系列 - 图26

    验证

    通过预览,以确认事件列表的匹配程序:
    Bypass - Splunk系列 - 图27

    保存

    在这一步,可以对提取名称和权限进行设置,点击完成来保存提取:
    Bypass - Splunk系列 - 图28

    三、新字段提取

    在Splunk Web中,提供了一种快速设置字段提取的方式,只需提供正则表达式,就可以直接完成新字段提取。

    3.1 新字段提取

    (1)设置→ 字段提取→新字段提取

    设置名称、sourcetype,写入正则表达式,点击保存即可:
    Bypass - Splunk系列 - 图29

    3.2 查看字段提取规则

    在字段提取页面中,搜索关键词,可找到刚才设置的字段提取规则:
    Bypass - Splunk系列 - 图30

    四、使用搜索命令提取字段

    通过搜索命令以不同方式提取字段,如rex、extract、xpath等。但这种方式仅适用于搜索过程中的返回的中间结果,无法新建字段重复使用: ```shell

sourcetype=”secure-2” port “failed password” | rex field=_raw “(?P\w+)\sfrom\s(?P[^ ]+)” | table user,ip

  1. ![](https://cdn.nlark.com/yuque/0/2022/png/1632223/1646643200594-d7928edf-1222-4216-bd59-7eb662afa7d8.png#clientId=u6313a6bb-d3f0-4&crop=0&crop=0&crop=1&crop=1&from=paste&id=u7a581661&margin=%5Bobject%20Object%5D&originHeight=343&originWidth=1080&originalType=url&ratio=1&rotation=0&showTitle=false&status=done&style=none&taskId=u1ea802ce-6320-4e3f-8b7d-6cd70787bc9&title=)
  2. <a name="IHJT4"></a>
  3. # [搜索分析篇(四)](https://mp.weixin.qq.com/s/xBOC2i4P3KmrS624uuqFUA)
  4. <a name="jm2Pu"></a>
  5. ## 一、简单概述
  6. Splunk 平台的核心就是 SPL,即 Splunk 搜索处理语言。<br />它提供了非常强大的能力,通过简单的SPL语句就可以实现对安全分析场景的描述。<br />这里,我们以Linux secure日志分析作为示例,进行安全场景的构建。
  7. <a name="HUp1O"></a>
  8. ## 二、安全日志
  9. 我们先来了解一下Linux secure日志中比较常见的登录日志,如下两条登录记录作为示例:

登录失败

Thu Feb 08 2022 00:15:04 www2 sshd[1100]: Failed password for root from 142.162.221.28 port 4585 ssh2

登录成功

Thu Feb 08 2022 00:15:05 mailsv1 sshd[74181]: Accepted password for nsharpe from 10.2.10.163 port 4245 ssh2

  1. 通过对比,我们可以找到几个关键信息,比如登录动作(成功/失败),用户名、ip地址等,可以通过编辑正则表达式将关键字段提取出来,以便进行搜索和分析。<br />新增字段提取:<br />![](https://cdn.nlark.com/yuque/0/2022/png/1632223/1650266181311-a8d73ed1-6e69-4141-af09-278cb86251a6.png#clientId=uaef97b4a-c3e7-4&crop=0&crop=0&crop=1&crop=1&from=paste&id=uf38a88b0&margin=%5Bobject%20Object%5D&originHeight=399&originWidth=1043&originalType=url&ratio=1&rotation=0&showTitle=false&status=done&style=none&taskId=ucca11985-a286-447e-8e1f-258e6c55948&title=)
  2. <a name="p2joj"></a>
  3. ## 三、安全分析场景
  4. <a name="A50HD"></a>
  5. ### 3.1 用户暴力破解
  6. <a name="KJLyB"></a>
  7. #### 场景描述
  8. 用户账户在短时间内尝试大量的错误密码,即可视为用户暴力破解攻击。
  9. <a name="Cac7z"></a>
  10. #### 安全策略
  11. 单一账号,5分钟内超过20次登录失败:
  12. ```sql
  13. sourcetype="secure*" action=Failed | bucket _time span=5m | stats count by user,ip | search count>20

Bypass - Splunk系列 - 图31

3.2 爆破用户名最多的前10个用户名/ip地址

场景描述

获取暴力破解所使用的密码本,或者暴力破解的来源IP地址。

爆破用户名TOP 10

  1. sourcetype="secure*" "failed password" | stats count by user| sort 10 -count

爆破IP地址TOP 10

  1. sourcetype="secure*" AND "failed password" | stats count by ip | sort 10 -count

Bypass - Splunk系列 - 图32

3.3 用户异地登录

场景描述

用户在短时间内多次异地登录,即可视为账号异常。

安全策略

1天内超过3个城市登录即可视为异地登录异常。

  1. sourcetype="secure*" action="Accepted"| bin _time span=1d |iplocation ip | stats values(ip) as ip values(City) as City dc(City) as src_count by user|search src_count>3

3.4 账号共享

场景描述

同一个ip登录多个账号,以发现存在账号共享的用户。

安全策略

1天内同一个ip登录超过10个账号

  1. sourcetype="secure*" action="Accepted" | bin _time span=1d | stats count(user) by ip| rename count(user) as User_count | search User_count>10

3.5 异常登录时间

场景描述

定义正常的服务器登录时间,如在正常时间范围之外登录,可提示告警。

安全策略

凌晨0点到早上8点内,登录成功的账号。

  1. sourcetype="secure*" action="Accepted" date_hour<8 | table _time,ip,user

3.6 异常IP登录

场景描述

定义正常的服务器登录地址,如在正常的IP地址之外登录,可提示告警。

安全策略

查找登录成功的用户列表,排除来自堡垒机的登录ip,就可以获取到违规登录行为。

  1. sourcetype="secure*" action="Accepted" AND ip!="10.1.*" | stats count by ip,user

3.7 整体用户登录情况

场景描述

用户整体的登录趋势应该是呈现规律性变化,如果某一天出现异常,就需要对引发问题的原因进行排查。

安全策略

查看每天登录成功/失败的次数,有了对照做参考,我们容易从数据趋势看到异常情况。

  1. sourcetype=secure-* "password" | timechart per_day(eval(action="Accepted")) as success,per_day(eval(action = "Failed" OR action = "failed")) as Failed

Bypass - Splunk系列 - 图33