佳木斯湛栽影视文化发展公司

主頁 > 知識庫 > Security安裝 Elastic SIEM 和 EDR的超詳細教程

Security安裝 Elastic SIEM 和 EDR的超詳細教程

熱門標(biāo)簽:網(wǎng)站文章發(fā)布 美圖手機 銀行業(yè)務(wù) 呼叫中心市場需求 檢查注冊表項 智能手機 服務(wù)器配置 鐵路電話系統(tǒng)

Elastic Security 為分析人員提供了預(yù)防,檢測和響應(yīng)威脅的手段。 該解決方案解決了SIEM,endpoint,威脅搜尋等安全用例,使 SecOps 團隊能夠收集各種數(shù)據(jù),執(zhí)行自動化和分析師驅(qū)動的分析,并通過嵌入式工作流和自動化來應(yīng)對安全威脅。在今天的文章中,我將介紹如何安裝 Elastic SIEM 及 EDR。

在我的系統(tǒng)配置中,我們使用如下的結(jié)構(gòu):

我有兩臺機器,在其中的一臺機器上安裝有 Elasticsearch,F(xiàn)ilebeat 及 Kibana,而在另外一臺機器上安裝有 endpoint agent。在今天的練習(xí)中,我將詳細地介紹如何一步一步地完成整個安裝。

安裝 Elastic Stack 基礎(chǔ)

盡管我在之前的很多文章中有介紹如何安裝 Elastic Stack,我還是想一步一步地來詳細介紹。就我而言,我使用的是 Elastic Stack 的最新版本7.11.1。對于我的 Elastic Stack 設(shè)置,我使用的是一個單臺的 Ubuntu 20.04 機器。 該服務(wù)器將運行 Elasticsearch 和 Kibana。

安裝 Elasticsearch

首先安裝 transport-https

sudo apt-get install curl apt-transport-https

接下來,將 Elastic 倉庫添加到你的源列表。

curl -s https://artifacts.elastic.co/GPG-KEY-elasticsearch | sudo apt-key add -
echo "deb https://artifacts.elastic.co/packages/7.x/apt stable main" | sudo tee /etc/apt/sources.list.d/elastic-7.x.list

然后更新。

sudo apt update

現(xiàn)在安裝 Elasticsearch

sudo apt-get install elasticsearch 

對于中國有的開發(fā)者來說,上面的安裝步驟可能會很慢,一種辦法就是直接到網(wǎng)址 https://www.elastic.co/downloads/ 直接下載 Elasticsearch 的 deb 安裝包,并按如下的命令來進行安裝:

sudo dpkg -i elasticsearch-7.11.1-amd64.deb

安裝 Elasticsearch 之后,我們需要對其配置文件進行幾處更改。 該文件位于 /etc/elasticsearch/elasticsearch.yml 中。要訪問此文件,你需要 root 特權(quán)。

首先,我們需要更改 network.host 值。 其默認設(shè)置為localhost。 將其更改為安裝了 Elasticsearch 的主機的 IP 地址。

cluster.name: demo-elk
node.name: elk-1
network.host: 0.0.0.0
discovery.type: single-node

現(xiàn)在,你應(yīng)該準備啟動 Elasticsearch 并檢查它是否已正確啟動。

sudo service elasticsearch start

我們可以使用如下的命令來查看 elasticsearch 服務(wù)的狀態(tài):

service elasticsearch status

如上所示,如果我們看到 Elasticsearch 服務(wù)的狀態(tài)為 active,則表明它的安裝是成功的。

你還可以通過運行以下命令來檢查 Elasticsearch 是否可從其他主機訪問:

curl http://elasticsearch_ip>:9200

輸出應(yīng)類似于以下內(nèi)容:

安裝 Kibana

運行以下命令以安裝 Kibana。

sudo apt install kibana

對于中國有的開發(fā)者來說,上面的安裝步驟可能會很慢,一種辦法就是直接到網(wǎng)址 https://www.elastic.co/downloads/ 直接下載 Kibana 的 deb 安裝包,并按如下的命令來進行安裝:

sudo dpkg -i kibana-7.11.1-amd64.deb

一旦安裝完成后,編輯 /etc/kibana/kibana.yml 并指定托管 Kibana 的 IP 地址。

server_port: 5601
server_host: 0.0.0.0
server_name: demo-kibana

在上面,我們可以只修改 server_host 即可,其它的我們可以使用默認的配置即可。設(shè)置 server_host 為 0.0.0.0 為的是我們可以在其它的機器上訪問當(dāng)前的 Kibana。我們可以使用 Ubuntu 機器的 IP 地址加上端口 5601 就可以訪問了。

啟動 Kibana 并檢查其狀態(tài)。

sudo service kibana start
sudo service kibana status

如果我們能看到狀態(tài)為 active,則表明我們的安裝是成功。我們可以通過另外一個電腦來訪問 Kibana:

你如果能看到上面的畫面,則表明你的安裝是成功的。

安裝 Beats

Filebeat 用于將數(shù)據(jù)從設(shè)備傳送到 Elasticsearch。 對于不同的產(chǎn)品,有許多不同的 Filebeat 模塊,它們以所需的格式將日志和數(shù)據(jù)發(fā)送到 Elasticsearch。 在此示例中,我們將模塊用于 Zeek,但是 Elastic 也擴展了其對其他產(chǎn)品的支持,包括 AWS,CrowdStrike,ZScaler 等。

目前,我們只打算在運行 Zeek 的主機上安裝 Filebeat,我們稍后會對其進行配置。

sudo apt-get install filebeat

對于中國有的開發(fā)者來說,上面的安裝步驟可能會很慢,一種辦法就是直接到網(wǎng)址 https://www.elastic.co/downloads/ 直接下載 Filebeat 的 deb 安裝包,并按如下的命令來進行安裝:

sudo dpkg -i filebeat-7.11.1-amd64.deb

安裝 Zeek

現(xiàn)在,我們準備著手安裝 Zeek。 首先,我們需要安裝所有必備組件。 通過運行以下命令來執(zhí)行此操作。

sudo apt-get install cmake make gcc g++ flex bison libpcap-dev libssl-dev python-dev swig zlib1g-dev

接下來,我們需要為 Zeek 創(chuàng)建工作目錄,由于某些原因,Zeek 在安裝時默認不執(zhí)行此操作。

sudo mkdir /opt/zeek
sudo chown -R root:root /opt/zeek
sudo chmod 740 /opt/zeek

接下來下載帶有 GIT 的 Zeek

git clone --recursive https://github.com/zeek/zeek

等下載完文件,進入 zeek 下載目錄。 然后將我們先前創(chuàng)建的 /opt/zeek 目錄設(shè)置為安裝目錄。

cd /home/$USER/zeek
./configure --prefix=/opt/zeek

在上面,我們假設(shè)你把 zeek 的文件 clone 到 home 目錄下的 zeek 目錄?,F(xiàn)在,我們準備安裝 Zeek,運行以下 make 命令,然后將其保留安裝(這可能需要一些時間)

make
sudo make install

接下來,我們需要添加 PATH 環(huán)境變量

export PATH=/opt/zeek/bin:$PATH

我們可以在 /opt/zeek/etc 找到一個叫做 node.cfg 的配置文件。

# pwd
/opt/zeek/etc
root@liuxgu:/opt/zeek/etc# ls
networks.cfg node.cfg zeekctl.cfg zkg

這個文件包含對 zeek 的節(jié)點配置。我們需要配置我們的 interface:

node.cfg

上面的 interface, 我們可以通過 ifconfig 命令來獲得本機的接口。另外,我們需要安裝 sendmail,否則在運行 zeek 時會發(fā)生無法找到 sendmail 的錯誤。

sudo apt-get install sendmail

現(xiàn)在,我們準備運行下面的命令來部署 Zeek。我們需要在 root 賬號下運行:

zeekctl deploy

我們可以在 /opt/zeek/logs 目錄里發(fā)現(xiàn)日志?!癱urrent” 目錄保存當(dāng)天的日志,而前幾天的日志則存檔到其自己的目錄中。 還有一個針對不同數(shù)據(jù)類型的日志文件,例如 DNS 連接,HTTP 連接等。

讓我們檢查DNS日志

# pwd
/opt/zeek/logs
root@liuxgu:/opt/zeek/logs# ls
2021-02-24 current

配置安全

就目前而言,我們在 ELK 部署中擁有的唯一功能是日志提取和可視化。 我們可以將日志提取到 Elastisearch 中,并通過 Kibana 可視化來處理數(shù)據(jù),但是缺少 SIEM 的核心功能。 我們無法建立檢測或用例。 此功能不是“開箱即用”的,要使用它,我們必須首先在所有不同節(jié)點之間配置安全性。 X-Pack 是 Elastic 軟件包,它基本上負責(zé)所有 Elastic Security 功能。

所需的一個關(guān)鍵組件是配置每個節(jié)點之間的 SSL 連接,可以通過多種方法進行。 我們也將使用 X-Pack 來執(zhí)行此操作。

首先,在安裝了 Elasticsearch 的主機上,我們需要創(chuàng)建一個 YAML 文件 /usr/share/elasticsearch/instances.yml,它將包含我們要使用 SSL 保護的不同節(jié)點/實例。 就我而言,我只有 Elasticsearch,Kibana 和 Zeek。

/usr/share/elasticsearch/instances.yml

instances:
 - name: "elasticsearch"
  ip:
  - "192.168.0.4"
 - name: "kibana"
  ip:
  - "192.168.0.4"
 - name: "zeek"
  ip:
  - "192.168.0.4"

接下來,我們將使用 Elastic 的 certutil 工具為我們的實例生成證書。 這也將生成一個證書頒發(fā)機構(gòu)(Certificate Authority)。

/usr/share/elasticsearch/bin/elasticsearch-certutil cert ca --pem --in instances.yml --out certs.zip

這將為我們的每個實例創(chuàng)建一個 .crt 和 .key 文件,以及一個 ca.crt 文件。你可以使用 unzip 來解壓縮不同的證書。

unzip /usr/share/elasticsearch/certs.zip -d /usr/share/elasticsearch/

現(xiàn)在我們有了我們的證書,我們可以配置每個實例。

配置 Elasticsearch SSL

首先,我們需要創(chuàng)建一個文件夾將你的證書存儲在我們的 Elasticsearch 主機上。

mkdir /etc/elasticsearch/certs/ca -p

接下來,我們需要將解壓縮的證書復(fù)制到其相關(guān)文件夾中并設(shè)置正確的權(quán)限。

cp ca/ca.crt /etc/elasticsearch/certs/ca
cp elasticsearch/elasticsearch.crt /etc/elasticsearch/certs
cp elasticsearch/elasticsearch.key /etc/elasticsearch/certs
chown -R elasticsearch: /etc/elasticsearch/certs
chmod -R 770 /etc/elasticsearch/cert

接下來,我們需要將 SSL 配置添加到我們的 /etc/elasticsearch/elasticsearch.yml 文件中。

/etc/elasticsearch/elasticsearch.yml

# Transport layer
xpack.security.transport.ssl.enabled: true
xpack.security.transport.ssl.verification_mode: certificate
xpack.security.transport.ssl.key: /etc/elasticsearch/certs/elasticsearch.key
xpack.security.transport.ssl.certificate: /etc/elasticsearch/certs/elasticsearch.crt
xpack.security.transport.ssl.certificate_authorities: [ "/etc/elasticsearch/certs/ca/ca.crt" ]
 
# HTTP layer
xpack.security.http.ssl.enabled: true
xpack.security.http.ssl.verification_mode: certificate
xpack.security.http.ssl.key: /etc/elasticsearch/certs/elasticsearch.key
xpack.security.http.ssl.certificate: /etc/elasticsearch/certs/elasticsearch.crt
xpack.security.http.ssl.certificate_authorities: [ "/etc/elasticsearch/certs/ca/ca.crt" ]

現(xiàn)在重新啟動 Elasticsearch。

service elasticsearch restart 

配置 Kibana SSL

現(xiàn)在,我們將重復(fù)此過程,但這一次是 Kibana。 Kibana 的配置略有不同。同樣,將你的證書移動到正確的文件夾并設(shè)置正確的權(quán)限。

注意:以下步驟假定你正在運行獨立的 ELK 配置。 如果你正在運行分布式部署,則需要將證書移至適當(dāng)?shù)闹鳈C。

mkdir /etc/kibana/certs/ca -p
cp ca/ca.crt /etc/kibana/certs/ca
cp kibana/kibana.crt /etc/kibana/certs
cp kibana/kibana.key /etc/kibana/certs
chown -R kibana: /etc/kibana/certs
chmod -R 770 /etc/kibana/certs

接下來,在文件 /etc/kibana/kibana.yml 中,在 Elasticsearch 和 Kibana 之間添加SSL設(shè)置。

/etc/kibana/kibana.yml

# The URLs of the Elasticsearch instances to use for all your queries.
elasticsearch.hosts: ["https://192.168.0.4:9200"]
elasticsearch.ssl.certificateAuthorities: ["/etc/kibana/certs/ca/ca.crt"]
elasticsearch.ssl.certificate: "/etc/kibana/certs/kibana.crt"
elasticsearch.ssl.key: "/etc/kibana/certs/kibana.key"

然后在同一文件中,在 Kibana 和瀏覽器之間添加配置。

# These settings enable SSL for outgoing requests from the Kibana server to the browser.
server.ssl.enabled: true
server.ssl.certificate: "/etc/kibana/certs/kibana.crt"
server.ssl.key: "/etc/kibana/certs/kibana.key"

然后,重新啟動 Kibana。

service kibana restart

配置 Beats (Zeek) SSL

下一步,我們需要為運行 Zeek 和 Beats 的主機配置 SSL。 如果你沒有運行 Zeek 或其他使用 Filebeats 模塊的產(chǎn)品,例如 Suricata,Windows Event Log 等,則可以跳過此步驟。

首先將證書復(fù)制到運行 Zeek 的主機上,然后使用正確的權(quán)限創(chuàng)建證書目錄。 您需要同時復(fù)制 Zeek 證書和 CA 證書。

mkdir /etc/filebeat/certs/ca -p
cp ca/ca.crt /etc/filebeat/certs/ca
cp zeek/zeek.crt /etc/filebeat/certs
cp zeek/zeek.key /etc/filebeat/certs
chmod 770 -R /etc/filebeat/certs

接下來,我們需要將更改添加到 /etc/filebeat/filebeat.yml。

首先,我們的 Elasticsearch 配置設(shè)置。

# Elastic Output
output.elasticsearch.hosts: ['192.168.0.4:9200']
output.elasticsearch.protocol: https
output.elasticsearch.ssl.certificate: "/etc/filebeat/certs/zeek.crt"
output.elasticsearch.ssl.key: "/etc/filebeat/certs/zeek.key"
output.elasticsearch.ssl.certificate_authorities: ["/etc/filebeat/certs/ca/ca.crt"]

然后是我們的 Kibana 配置設(shè)置。

setup.kibana:
 host: "https://192.168.0.4:5601"
 ssl.enabled: true
 ssl.certificate_authorities: ["/etc/filebeat/certs/ca/ca.crt"]
 ssl.certificate: "/etc/filebeat/certs/zeek.crt"
 ssl.key: "/etc/filebeat/certs/zeek.key"

然后重新啟動 Filebeat。

service filebeat restart

現(xiàn)在,你可以通過運行以下命令來檢查 FileBeats 是否可以連接到 Elasticsearch。 一切都應(yīng)該返回“OK”。

filebeat test output

添加身份驗證

我們還需要向 Elasticsearch 添加身份驗證。 這很容易做到。 首先通過編輯 /etc/elasticsearch/elasticsearch.yml 啟用安全

/etc/elasticsearch/elasticsearch.yml

# X-Pack Setting
xpack.security.enabled: true

設(shè)置完上面,我們必須重新啟動 Elasticsearch:

service elasticsearch restart

接下來,我們需要為所有內(nèi)置的 Elasticsearch 角色和用戶生成密碼。 Elasticsearch 附帶了一個工具來執(zhí)行此操作。 運行以下命令以生成這些密碼并將其保存在安全的地方(密碼管理器)。

/usr/share/elasticsearch/bin/elasticsearch-setup-passwords interactive

為了方便,我將把所有的賬號的密碼都設(shè)置為 password。

我們可以通過另外一個機器來訪問 ubuntu 機器 https://ubuntu.9200。當(dāng) Chrome 瀏覽器上出現(xiàn)如下的畫面時:

我們在當(dāng)前的頁面打入如下的字符串:

thissisunsafe

我們就可以看到:

我們把用戶名及密碼 elastic/password 輸入進去即可:

針對 Kibana,我們需要修改 /etc/kibana/kibana.yml 文件,并把相應(yīng)的用戶名及密碼填入:

/etc/kibana/kibana.yml

elasticsearch.username: "kibana_system"
elasticsearch.password: "password"

修改完后,我們必須重新啟動 Kibana:

service kibana restart

我們也可以按照同樣的方法來啟動 Kibana https://ubuntu:5601。

接下來,將新創(chuàng)建的 Elasticsearch 憑證添加到我們的 Filebeat 配置文件中:

/etc/filebeat/filebeat.yml
# Elastic Credentials
output.elasticsearch.username: "elastic"
output.elasticsearch.password: "Your_Elastic_Pass_Here"

我們需要重新啟動 Filebeat:

service filebeat restart

添加 Zeek 數(shù)據(jù)到 Elasticsearch

我們可以通過 Filebeat 把 Zeek 的日志信息導(dǎo)入到 Elasticsearch 中去。首先,我們必須啟動 zeek 模塊。我們打開 Kibana 的界面:

里面有詳細的步驟介紹如何配置 Filebeat。首先,我們需要使用如下的命令來啟動 zeek 模塊:

sudo filebeat modules enable zeek
$ sudo filebeat modules enable zeek
Enabled zeek

完成后,我們需要配置 Zeek 將 Zeek 日志轉(zhuǎn)換為 JSON 格式。 首先,停止 Zeek 的運行。然后將 @load policy / tuning / json-logs.zeek 行編輯到文件 /opt/zeek/share/zeek/site/local.zeek

保存好文件,并重新啟動 zeek:

zeekctl deploy

現(xiàn)在檢查日志是否為 JSON 格式。 即使你不熟悉 JSON,日志的格式也應(yīng)該與以前明顯不同。

tail -f /opt/zeek/logs/current/dns.log

然后編輯配置文件 /etc/filebeat/modules.d/zeek.yml。 我們需要指定 Zeek 創(chuàng)建的每個單獨的日志文件,或者至少指定我們希望 Elasticsearch 提取的日志文件。 對于 /opt/zeek/logs/ 文件夾中的每個日志文件,必須定義 “current” 日志的路徑以及以前的任何日志,如下所示。

dns:
  enabled: true
  var.paths: [ "/opt/zeek/logs/current/dns.log", "/opt/zeek/logs/*.dns.json" ]

如果 opt 文件夾中有一些默認日志文件(例如 capture_loss.log),你不希望 Elasticsearch 提取這些文件,則只需將 “enabled” 字段設(shè)置為 false。 重要的是,將在 /opt/zeek/logs中沒有日志文件的所有日志源設(shè)置為 enabled: false,否則會收到錯誤消息。 此外,請務(wù)必注意間距,因為 YML 文件對空格敏感。在我的 current 目錄中我們可以看到如下的文件:

root@liuxgu:/opt/zeek/logs/current# ls
capture_loss.log http.log      ntp.log      ssh.log   weird.log
conn.log     known_services.log packet_filter.log stats.log
dhcp.log     loaded_scripts.log reporter.log    stderr.log
dns.log      notice.log     software.log    stdout.log

那么我們的 /etc/filebeat/modules.d/zeek.yml 最終格式為:

json

完成后,你應(yīng)該可以很好地啟動 Filebeat 并啟動該服務(wù)。

sudo filebeat setup
sudo service filebeat restart

我們將在 Kibana 中看到如下的信息:

點擊上面的 Zeek Overview 按鈕, 我們將看到 Zeek 的信息:

如果你轉(zhuǎn)到 SIEM 應(yīng)用程序中的網(wǎng)絡(luò)儀表板,則應(yīng)該看到使用 Zeek!數(shù)據(jù)填充的不同儀表板! 這里的儀表板很好地概述了從網(wǎng)絡(luò)中收集的一些數(shù)據(jù)。

啟動檢測

一旦完成上述所有步驟,并將數(shù)據(jù)提取到 Elasticsearch 中,你可能會注意到仍然無法創(chuàng)建檢測。

點擊上面的 View document。這是我們最后要完成的步驟。 編輯你的 Kibana 配置件 /etc/kibana/kibana.yml,然后添加 xpack.encryptedSavedObjects.encryptionKey。 我相信這可以是任何32個字符串。

xpack.security.enabled: true
# xpack.fleet.agents.tlsCheckDisabled: true
xpack.encryptedSavedObjects.encryptionKey: "something_at_least_32_characters"

重新啟動 Kibana:

service kibana restart

經(jīng)過上面的設(shè)置后,我們終于可以創(chuàng)建檢測規(guī)則了:

安裝 Endpoint agent

現(xiàn)在,我們準備安裝 Elastic endpoint。首先,通過單擊側(cè)面菜單上管理標(biāo)簽下的鏈接,導(dǎo)航到 “Fleet” 儀表板。

如果我們現(xiàn)在將代理安裝到 Windows 主機上,則會收到一個錯誤消息,即我們的自簽名證書來自不受信任的來源,并且代理安裝將失敗。因此,我們需要做的是將我們的 CA 證書添加為 Windows 主機上的受信任證書。

安裝證書

首先在 Windows 搜索欄中搜索 “本地安全策略”。 然后轉(zhuǎn)到 安全設(shè)置 > 公鑰策略 > 證書路徑驗證設(shè)置

然后,選中“定義這些策略設(shè)置”,然后選中 “允許使用用戶信任的根CA來驗證證書” 和 “允許用戶信任對等信任證書” 選項(如果尚未選中)。

最后,選中 “第三方根CA 和企業(yè)根CA”。單擊 “應(yīng)用”,然后單擊 “確定”。

接下來在 Windows 搜索欄中搜索 certmgr.msc。

然后轉(zhuǎn)到 “受信任的根證書頒發(fā)機構(gòu)” > “證書”,右鍵單擊空白處的任意位置,然后選擇 “所有任務(wù)” > “導(dǎo)入

然后簡單地按照向?qū)Р僮?,并選擇我們之前創(chuàng)建的 ca.crt。

安裝 endpoint agent

現(xiàn)在,我們準備安 Elastic agent。 從 Fleet Dashboard 復(fù)制安裝命令,并在該代理所在的 Windows 主機上使用 PowerShell 運行它。由于 Elastic Stack 是運行于另外一個機器上的,我們需要對它做一些配置。我們可以參考文章 “Elastic:Elastic Security 入門”。這里就不再詳述了。

到此這篇關(guān)于Security安裝 Elastic SIEM 和 EDR的超詳細教程的文章就介紹到這了,更多相關(guān)Security安裝 Elastic SIEM 和 EDR內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

您可能感興趣的文章:
  • SpringBoot Security安裝配置及Thymeleaf整合
  • Apache下ModSecurity的安裝啟用與配置
  • windows server2014 安裝 Mysql Applying Security出錯的完美解決方法

標(biāo)簽:河南 紅河 沈陽 滄州 上海 長治 樂山 新疆

巨人網(wǎng)絡(luò)通訊聲明:本文標(biāo)題《Security安裝 Elastic SIEM 和 EDR的超詳細教程》,本文關(guān)鍵詞  ;如發(fā)現(xiàn)本文內(nèi)容存在版權(quán)問題,煩請?zhí)峁┫嚓P(guān)信息告之我們,我們將及時溝通與處理。本站內(nèi)容系統(tǒng)采集于網(wǎng)絡(luò),涉及言論、版權(quán)與本站無關(guān)。
  • 相關(guān)文章
  • 收縮
    • 微信客服
    • 微信二維碼
    • 電話咨詢

    • 400-1100-266
    临高县| 都兰县| 咸宁市| 昭平县| 邵阳县| 永康市| 安多县| 兴化市| 崇信县| 荣成市| 区。| 长子县| 齐河县| 彭山县| 迭部县| 高雄市| 喀喇沁旗| 成武县| 青岛市| 闻喜县| 赞皇县| 宁晋县| 城固县| 永川市| 洞口县| 杨浦区| 伊宁县| 连城县| 灵武市| 合山市| 公主岭市| 宁夏| 湘乡市| 江城| 玉田县| 蓝山县| 泗阳县| 竹溪县| 栖霞市| 潼南县| 灵台县|