天天看點

使用Elastic進行事件響應的便攜式SIEM

作者:吉祥莊鋼鐵俠
使用Elastic進行事件響應的便攜式SIEM

在事件響應活動中,經常需要收集、利用和關聯來自異質來源和許多不同主機的大量資料。擁有一個能夠快速導入、操作、豐富和交叉搜尋這些資料的工具是武器庫中的一個重要項目。

為了實作這樣的目标,我最喜歡的解決方案是使用基于Elastic單節點容器部署的 "便攜式SIEM"。

使用docker-compose技術和一些小的定制,就有可能擁有一個随時可以使用的SIEM,從一個帶有一堆指令的新環境開始,這裡包括那些用于導入資料的指令。一旦IR被關閉,報告被寫入,就可以直接删除容器,釋放資源,為下一個事件提供一個随時可以使用的環境,不受之前事件的污染,就像驗證時使用的無菌支援一樣。

我将在這篇文章中描述的是主機的初始配置和Elastic stack的編譯檔案。此外,我還将描述如何運作一個filebeat runonce容器,從驗證分流生成的csv中導入資料。

我的安裝是基于Debian 11的虛拟機,我們需要安裝docker引擎和相關的docker-compose;這裡可以找到安裝docker引擎的快速入門指南。

下一步是使用docker-compose定義檔案來安裝Elastic stack。正如Elastic官方文檔中所描述的,我們需要做的就是從官方github倉庫下載下傳docker-compose.yml檔案和.env檔案,調整它們以反映我們的需求,并啟動服務boundle。

有一些強制性的設定是我們必須要改變的:

ELASTIC_PASSWORD,這是配置設定給彈性使用者的密碼,它是叢集的預設超級使用者。

KIBANA_PASSWORD,這是kibana_system使用者使用的密碼,用于kibana和elasticsearch之間的内部通信。

STACK_VERSION,我們希望Elastic stack部署的版本。

.env檔案中的其餘選項是可選的,用于根據網絡或系統要求進行環境定制。

通常,這些步驟對于啟動叢集已經足夠了,然而我還會做進一步的改變,以節省資源和優化網絡。

從預設的官方docker-compose.yml檔案中,我删除了es02和es03的節點和它們的子節點,這樣彈性搜尋叢集就會在單節點設定中成長起來。我們還需要調整es01.environment節點下的變量:

cluster.initial_master_nodes: 我們需要隻留下es01

discovery.seed_hosts: 我們隻需要定義es01

在這一點上,我們需要做的是将docker-compose.yml和.env檔案存儲在專門用于SIEM的同一目錄下(例如,/data/siem),并從那裡啟動組合:

> cd /data/siem 
> sudo docker-compose up -d
           

該發動機部署了三個集裝箱:

彈性搜尋容器

kibana容器

一個名為setup的臨時容器,用于執行叢集的基本操作(密碼定義、使用者定義等)。

一旦啟動操作完成,就可以用浏覽器通路SIEM的URL http://HOST_MACHINE_IP:5601,使用之前在.env檔案中定義的彈性使用者和密碼。

當SIEM啟動并運作時,是時候導入需要分析的資料了。為此,建議使用filebeat的runonce容器,讀取存儲在主機中的csv檔案并将資料索引到彈性搜尋節點。

首先,我們必須建立 filebeat 配置檔案 filebeat.docker.yml

filebeat:
  inputs:
  - type: filestream
      id: irharvester
          paths:
      - csv.txt
    processors:
      - decode_csv_fields:
                fields:
            message: csv
              outputs:
    elasticsearch:
      hosts: ["https://specify_es_host:9200"]
      username: "elastic"
      password: "YOUR_PASSWORD"
      protocol: https
            ssl.verification_mode: none
                       

在上面的配置中,我們要訓示filebeat從一個路徑為csv.txt(可以是多個)的檔案中讀取,并将csv解碼器應用于逐行導入的消息字段。csv剖析的結果被存儲在一個名為csv的字段中。同時,指定将資料發送到哪裡進行索引,在這種情況下是彈性搜尋容器。

然後,為了啟動資料攝取,就像運作一個基于官方filebeat鏡像和相關檔案映射的容器一樣簡單。

> sudo docker run -d --rm \
--name=harvester --network=backend \
--volume="$(pwd)/filebeat.docker.yml:/usr/share/filebeat/filebeat.yml:ro" \
--volume="$(pwd)/csv.txt:/usr/share/filebeat/csv.txt:ro" \
 docker.elastic.co/beats/filebeat:8.8.0 \
 -E 'output.elasticsearch.hosts=["https://siem_es01_1:9200"]' \
-E 'output.elasticsearch.password=$ELASTIC_PASSWORD' -e
           

現在可以使用kibana搜尋導入的資料,并利用資料操作的力量,既可以在索引時使用filebeat處理器或攝取管道,也可以使用運作時字段,使資料适應具體的事件用例。

繼續閱讀