安全运营-Suricata+Splunk构建入侵检测系统

admin 2024年3月13日16:13:00评论10 views字数 6373阅读21分14秒阅读模式

安装Suricata

”SURICATA是一个开源的网络入侵检测系统(IDS)和入侵防御系统(IPS)。它可以捕获通讯流量并对其做协议解析,识别或防御通讯流量中可疑或恶意的行为。国内大部分厂商基于流量的IDS的数据包捕获、协议解析、检测引擎等关键模块都是在此基础上做修改和扩展优化的。“

访问官网进行下载 https://suricata.io/download/

我这里以ubuntu举例,采用订阅源的方式进行安装 https://docs.suricata.io/en/suricata-7.0.3/install.html#ubuntu-from-personal-package-archives-ppa

#获取源
sudo apt-get install software-properties-common
sudo add-apt-repository ppa:oisf/suricata-stable
sudo apt-get update

#安装suricata
sudo apt-get install suricata

#如果需要更新suricata,则运行以下命令
sudo apt-get update
sudo apt-get upgrade suricata

安装好suricata,下面开始修改配置文件,这里主要修改的是用来监听的网卡名称以及一些需要检测的流量网段

首先查看当前网卡名称ifconfig或者ip -p -j route show default安全运营-Suricata+Splunk构建入侵检测系统

这里我的网卡名称是eth0,IP为192.168.124.46,修改suricata配置文件

sudo nano /etc/suricata/suricata.yaml

配置文件为yaml格式,简单易读。将HOME_NET修改为你要监测的网段,比如我这里业务系统在192.168.124.0/24段,vars代表变量,比如EXTERNAL_NET!$HOME_NET,则代表排除的网段为非192.168.124.0/24网段的IP安全运营-Suricata+Splunk构建入侵检测系统

第二部分要修改网卡信息,全局搜索af-packet,将interface修改为你需要捕获的网卡即可,这里支持同时捕获多张网卡,按照yaml格式插入到interface: default之前即可

安全运营-Suricata+Splunk构建入侵检测系统

suricata 支持实时规则重新加载,这样无需重新启动正在运行的 suricata 进程,就可以生效。
要启用实时重新加载选项,在配置文件的底部并添加以下行:

detect-engine:
  - rule-reload: true

suricata 包含一个名为suricata-update的工具,可以从外部获取规则集。运行sudo suricata-update为 suricata 服务器下载最新的规则集

红框标记的是suricata所订阅的规则,在/usr/share/suricata/rules/下,最后测试一下suricata的配置文件,检查有无错误

sudo suricata -T -c /etc/suricata/suricata.yaml -v
安全运营-Suricata+Splunk构建入侵检测系统

如果没有错误的话则可以进行下一步。重启suricata

sudo systemctl restart suricata

查看启动日志

sudo tail /var/log/suricata/suricata.log

检查运行状态

sudo systemctl status suricata

OK,至此suricata启动成功,下面开始检测规则有没有成功加载并生效
suricata的告警以及事件日志都在/var/log/suricata/ 下,默认suricata 配置启用了两个日志。第一个是在/var/log/suricata/fast.log,第二个是json的/var/log/suricata/eve.log

初次查看fast.log应该为空,因为里面主要记录告警日志,下面我们手工来触发一次告警,在主机上运行curl http://testmynids.org/uid/index.html 该请求将会返回一个匹配suricata 警报规则的响应:

Outputuid=0(root) gid=0(root) groups=0(root)

此示例响应数据会触发告警:“假装返回通过 webshell 在受感染的远程系统上运行id命令的输出”。现在可以检查 suricata 的日志,查看/var/log/suricata/fast.log

安全运营-Suricata+Splunk构建入侵检测系统

成功产生2条告警

03/08/2024-14:54:52.942329  [**] [1:2013028:7] ET POLICY curl User-Agent Outbound [**] [Classification: Attempted Information Leak] [Priority: 2] {TCP} 192.168.124.46:35650 -> 18.155.192.22:80
03/08/2024-14:54:53.107184  [**] [1:2100498:7] GPL ATTACK_RESPONSE id check returned root [**] [Classification: Potentially Bad Traffic] [Priority: 2] {TCP} 18.155.192.22:80 -> 192.168.124.46:35650

suricata 还使用JSON记录更为详细的信息/var/log/suricata/eve.log,并且suricata文档建议使用该jq实用程序来读取和过滤eve.log,没有的话可以安装

sudo apt install jq

输入jq 'select(.alert .signature_id==2100498)' /var/log/suricata/eve.json检查,输出将类似于以下内容

安全运营-Suricata+Splunk构建入侵检测系统
{
  "timestamp""2024-03-08T14:54:53.107184+0000",
  "flow_id"1219566567138253,
  "in_iface""eth0",
  "event_type""alert",
  "src_ip""18.155.192.22",
  "src_port"80,
  "dest_ip""192.168.124.46",
  "dest_port"35650,
  "proto""TCP",
  "pkt_src""wire/pcap",
  "alert": {
    "action""allowed",
    "gid"1,
    "signature_id"2100498,
    "rev"7,
    "signature""GPL ATTACK_RESPONSE id check returned root",
    "category""Potentially Bad Traffic",
    "severity"2,
    "metadata": {
      "created_at": [
        "2010_09_23"
      ],
      "updated_at": [
        "2019_07_26"
      ]
    }
  },
  "http": {
    "hostname""testmynids.org",
    "url""/uid/index.html",
    "http_user_agent""curl/7.68.0",
    "http_content_type""text/html",
    "http_method""GET",
    "protocol""HTTP/1.1",
    "status"200,
    "length"39
  },
  "files": [
    {
      "filename""/uid/index.html",
      "gaps"false,
      "state""CLOSED",
      "stored"false,
      "size"39,
      "tx_id"0
    }
  ],
  "app_proto""http",
  "direction""to_client",
  "flow": {
    "pkts_toserver"6,
    "pkts_toclient"5,
    "bytes_toserver"496,
    "bytes_toclient"875,
    "start""2024-03-08T14:54:52.611632+0000",
    "src_ip""192.168.124.46",
    "dest_ip""18.155.192.22",
    "src_port"35650,
    "dest_port"80
  }
}

如果有以上的回显,代表suricata检查到了威胁数据包,并且生成了一条记录。完成以上操作则代表suricata正常运行并且成功利用规则捕获到了攻击请求。

Suricata 接入 Splunk

splunk介绍

”Splunk是⼀个托管的⼀体化的⽇志⽂件管理⼯具。通过对⽇志进⾏⾼效索引,让管理员可以对⽇志各种情况进⾏搜索,并通过友好视图展现出来。统计关注时间段整体交易延时和交易量,依据来源、类型等多维度统计交易。制作成仪表板等网络监控平台,并可设置攻击告警、系统告警、应⽤告警。“

去官网下载安装包,访问https://www.splunk.com/en_us/download/splunk-enterprise.html 首先需要注册一个账户,注册成功后会收到一封邮箱,点击激活链接激活即可,这里要注意的是尽量使用企业邮箱去注册,如果使用个人邮箱会导致注册需要最后不成功,我用的outlook注册好像是不行

安全运营-Suricata+Splunk构建入侵检测系统

下载.rpm或者.deb都可以

安全运营-Suricata+Splunk构建入侵检测系统

运行以下命令进行安装

rpm -ivh splunk-8.0.2-a7f645ddaf91-linux-2.6-x86_64.rpm --nodeps --force
cd /opt/splunk
./splunk start

‍按照提示下一步安全运营-Suricata+Splunk构建入侵检测系统

根据提示输⼊完成后可以看到安装成功,并提示你splunk的端⼝。检查是否成功运行

ps -ewwf| grep splunk

输入安装时候创建的账户密码进行登录,登录之后开始添加suricata的日志数据。
splunk支持3种数据导入,分别为
1、本地日志文件上传
2、文件或目录监控
3、splunk数据转发器

通过文件或目录监视

因为我们suricata是和splunk安装在一台主机上,所以先使用本地文件监控的方法来实现导入suricata日志

安全运营-Suricata+Splunk构建入侵检测系统

选择suricata的事件日志

安全运营-Suricata+Splunk构建入侵检测系统

来源类型自动识别_json,点击下一步

安全运营-Suricata+Splunk构建入侵检测系统

这里选择新建索引

安全运营-Suricata+Splunk构建入侵检测系统

索引名称自定义即可,这里我配置的是suricata_eve_overview

安全运营-Suricata+Splunk构建入侵检测系统

二次确认没问题之后点击提交

安全运营-Suricata+Splunk构建入侵检测系统

之后点击导航栏->设置->索引,来到索引控制面板

安全运营-Suricata+Splunk构建入侵检测系统

可以看到我们刚刚创建多索引已经有了日志(如果没有可以多等等

安全运营-Suricata+Splunk构建入侵检测系统

输入index=suricata_eve_overview查看suricata的数据,可以看到数据信息包含很多字段,包括源地址目的地址IP端口协议类型时间戳命中的规则名称及ID

安全运营-Suricata+Splunk构建入侵检测系统

这里我添加了用来展示的字段,alert主要为告警字段

安全运营-Suricata+Splunk构建入侵检测系统

http主要为http的一些信息

安全运营-Suricata+Splunk构建入侵检测系统

最后筛选后的字段展示如下

安全运营-Suricata+Splunk构建入侵检测系统

来模仿一下命令执行攻击来查看splunk是否正常展示告警信息

安全运营-Suricata+Splunk构建入侵检测系统

使用过滤规则来查看告警名称包含root的告警信息: index=suricata_eve_overview "alert.signature"="*root*"

安全运营-Suricata+Splunk构建入侵检测系统

可以看到攻击被正常捕获并展示

通过Forwarder转发数据

示例图

安全运营-Suricata+Splunk构建入侵检测系统

安装转发器(fordwarder)
https://www.splunk.com/zh_cn/download/universal-forwarder.html, 根据架构选择不同的安装包,我这里选择的为.rpm

安全运营-Suricata+Splunk构建入侵检测系统

将安装包上传到需要转发的主机上,运行命令

#创建splunkforwarder文件夹
export SPLUNK_HOME="/opt/splunkforwarder"
mkdir $SPLUNK_HOME

#解压安装包
tar xvzf splunkforwarder_package_name.tgz

#安装splunkforwarder.rpm
rpm -ivh splunkforwarder_package_name.rpm --nodeps --force

#启动splunkforwarder
cd $SPLUNK_HOME/bin/
./splunk start

启动splunkforwarder会提示输入账户密码,这个账户是splunkforwarder专属的账户密码,后面会用到
接下来去到splunk配置用来接受splunkforwarder的索引以及要接收转发器数据的监听端口

安全运营-Suricata+Splunk构建入侵检测系统

在splunk开启转发器要接收的端口

安全运营-Suricata+Splunk构建入侵检测系统

点击新增

安全运营-Suricata+Splunk构建入侵检测系统

输入9997点击保存即可

安全运营-Suricata+Splunk构建入侵检测系统

之后回到要转发数据的机器,也就是安装splunkforwarder的机器执行以下命令

#配置转发器以连接到splunk部署服务器
./splunk add forward-server 192.168.124.46:9997

#配置转发器以连接到splunk部署服务器
./splunk set deploy-poll 192.168.124.46:8089

以上2个端口都是默认的,不需要额外修改,如要查看请在splunk服务器执行以下命令

./splunk show splunkd-port

接下来在splunkforwarder添加一个suricata的日志监控项给到splunk

./splunk add monitor /var/log/suricata/eve.json -index suricata_forwarder_test

执行以下命令查看监控的目录

./splunk list monitor
安全运营-Suricata+Splunk构建入侵检测系统

以上命令执行完后,重启splunksplunkforwarder服务器
回到系统,可以看到suricata日志被成功监控,索引也同样有数据

安全运营-Suricata+Splunk构建入侵检测系统

配置完成,输入index="suricata_forwarder_test"就可以看到我们远程转发器发过来的日志

安全运营-Suricata+Splunk构建入侵检测系统

总结

通过安装suricta和splunk来实现对告警信息做到统一查看,实现了一个简易版的SIEM,虽然没有商业化的产品那么易用易读,但胜在扩展性强,上限高。后续会继续围绕suricata展开规则优化和规则管理的一些文章分享。

Reference

1、https://docs.splunk.com/Documentation/Splunk
2、https://cloud.tencent.com/developer/article/1903171
3、https://www.jianshu.com/p/5cbf4ee6ad2e
4、https://blog.csdn.net/qq_23936389/article/details/121347559
5、https://mp.weixin.qq.com/s/2Z4TgvhxjIY7QXRJUCya8Q

原文始发于微信公众号(Evilc0de 安全团队):安全运营-Suricata+Splunk构建入侵检测系统

  • 左青龙
  • 微信扫一扫
  • weinxin
  • 右白虎
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2024年3月13日16:13:00
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                   安全运营-Suricata+Splunk构建入侵检测系统https://cn-sec.com/archives/2565822.html

发表评论

匿名网友 填写信息