作者:来自 Elastic Andrew PeaseColson WilhoitDerek Ditch

使用 Docker 启动 Elastic Stack

序言

Elastic Stack 是一个模块化数据分析生态系统。虽然这允许工程灵活性,但建立开发实例进行测试可能很麻烦。建立 Elastic Stack 的最简单方法是使用 Elastic Cloud - 这是完全一站式的。但是,在某些情况下,Elastic Cloud 可能不适用于你的测试环境。为了帮助解决这个问题,本博客将为你提供必要的信息,以便快速轻松地建立本地、完全容器化、TLS 安全的 Elastic Stack,并启用 Fleet 和检测引擎。你将能够创建 Fleet 策略,在本地主机或 VM 上安装 Elastic Agent,并将数据发送到你的堆栈中进行监控或分析。

本博客将涵盖以下内容:

  • Elastic Stack
  • Elastic 容器项目
  • 如何使用 Elastic 容器项目
  • 如何导航 Kibana 并使用其相关功能进行安全研究

Elastic 容器项目不由 Elastic 公司赞助或维护。该项目的设计和实施考虑可能无法反映 Elastic 关于部署生产就绪堆栈的指导。

Elastic Stack

Elastic Stack 由多个不同的组件组成,每个组件都提供独特的功能,可用于各种用例。

Elasticsearch

Elasticsearch 是一个分布式 RESTful 搜索和分析引擎。作为 Elastic Stack 的核心,它集中存储你的数据,以实现闪电般的快速搜索、精细调整的相关性和可轻松扩展的强大分析。

Kibana

Kibana 是一个用户界面,可让你可视化 Elasticsearch 数据并管理 Elastic Stack。

Elastic Agent

Elastic Agent 是一个模块化代理,可让你从端点收集数据或充当从第三方来源(如威胁源)发送数据的工具。端点的 Elastic Security 集成可防止勒索软件和恶意软件、检测高级威胁并为响应者提供重要的调查背景。

Elastic 容器项目

Elastic 容器项目

如上所述,Elastic Stack 是模块化的,这使得它非常灵活,适用于各种用例,但这会增加实施的复杂性。

Elastic Container 项目是一个开源项目,它使用 Docker Compose 来构建一个功能齐全的 Elastic Stack 以供非生产环境使用。该项目不由 Elastic 公司赞助或维护。

简介

Elastic Container Project 包括三个主要组件:

  • Elasticsearch
  • Kibana
  • Elastic Agent

该项目利用 Docker Compose,这是一种用于构建、集成和管理多个 Docker 容器的工具。

为了简化容器的管理,该项目包含一个 shell 脚本,允许暂存、启动、停止和销毁容器。

此外,该项目还在 Elasticsearch 和 Kibana、Kibana 和你的 Web 浏览器、Elastic Agent 和 Elasticsearch 以及 Elastic Agent 和 Kibana 之间使用自签名 TLS 证书。

先决条件

该项目是在 Linux 和 macOS 操作系统上构建和测试的。如果你使用的是 Windows,则无法使用随附的 shell 脚本,但仍可以运行本机 Docker Compose 命令并手动执行部署后步骤。

虽然没有经过彻底测试,但建议你为 Docker 提供 4 个核心和 8 GB 的 RAM。

你只需安装几个软件包:

  • Docker
  • Docker Compose
  • jq
  • Git
  • cURL

macOS

如果你使用的是 macOS,则可以使用 Homebrew 安装必备软件,Homebrew 是 macOS 的开源包管理系统。如果需要,请查看 Homebrew 网站以获取有关安装它的信息。

brew install jq git
brew install --cask docker

Linux

如果你在 Linux 上运行,则可以使用包管理系统 ( DNF 、 Yum 或 APT ) 安装先决条件。

基于 RPM 的发行版

dnf install jq git curl

Ubuntu

apt-get install jq git curl

你还需要 Docker 套件(包括 docker-compose-plugin )。查看适合你操作系统的 Docker 安装说明

克隆项目存储库

Elastic Container 项目存储在 Github 上。只要你安装了 Git,就可以从你选择的 CLI 中收集它。

git clone https://github.com/peasead/elastic-container.git
cd elastic-container

该存储库包含使用单个 shell 脚本启动 Elastic Stack 容器所需的一切.

设置凭据

继续之前,请确保将位于存储库根目录中的 .env 文件中的 Elastic 和 Kibana 帐户的凭据从其默认的 changeme 更新。

.env

# Local Kibana URL
LOCAL_KBN_URL=https://127.0.0.1:5601

# Local ES URL
LOCAL_ES_URL=https://127.0.0.1:9200

# Username for Kibana
ELASTIC_USERNAME=elastic

# Password for the 'elastic' user (at least 6 characters)
ELASTIC_PASSWORD=changeme

# Password for the 'kibana_system' user (at least 6 characters)
KIBANA_PASSWORD=changeme

# Version of Elastic products
STACK_VERSION=8.15.1
# Testing pre-releases? Use the SNAPSHOT option below:
# STACK_VERSION=8.11.0-SNAPSHOT

# Bulk Enable Detection Rules by OS
LinuxDR=0

WindowsDR=0

MacOSDR=0

# Set the cluster name
CLUSTER_NAME=elastic-container-project

# Set to "basic" or "trial" to automatically start the 30-day trial
LICENSE=basic
#LICENSE=trial

# Port to expose Elasticsearch HTTP API to the host
ES_PORT=9200
#ES_PORT=127.0.0.1:9200

# Port to expose Kibana to the host
KIBANA_PORT=5601

# Port to expose Fleet to the host
FLEET_PORT=8220

# Increase or decrease based on the available host memory (in bytes)
MEM_LIMIT=2147483648

特别值得指出的是,我们需要指定 STACK_VERSION 的值以下载及安装我们需要的 Elastic Stack 版本。

Shell 脚本

如上所述,该项目包含一个 shell 脚本,可以简化容器的管理。

$ pwd
/Users/liuxg/docker/elastic-container
$ ls
LICENSE.md           README.md            docker-compose.yml   elastic-container.sh kibana.yml
$ ./elastic-container.sh help
usage: ./elastic-container.sh [-v] (stage|start|stop|restart|status|help)
actions:
  stage     downloads all necessary images to local storage
  start     creates a container network and starts containers
  stop      stops running containers without removing them
  destroy   stops and removes the containers, the network, and volumes created
  restart   restarts all the stack containers
  status    check the status of the stack containers
  clear     clear all documents in logs and metrics indexes
  help      print this message
flags:
  -v        enable verbose output

Stage

此选项从 Elastic Docker 中心下载所有容器。如果你要在不总是有互联网访问的系统上构建项目,这将非常有用。这不是必需的,你可以跳过此选项并直接转到开始选项,这将下载容器。

./elastic-container.sh stage
$ pwd
/Users/liuxg/docker/elastic-container
$ ls
LICENSE.md           README.md            docker-compose.yml   elastic-container.sh kibana.yml
$ ./elastic-container.sh stage
8.15.1: Pulling from elasticsearch/elasticsearch
b14b0d0a7610: Pull complete 
3ace270f12dc: Pull complete 
70ede6162abf: Pull complete 
4ca545ee6d5d: Pull complete 
5947045bb3e1: Pull complete 
7e2b3251dada: Pull complete 
b664fed9a81d: Pull complete 
ffc4c36e106f: Pull complete 
29a7133f2a27: Pull complete 
902484376a72: Pull complete 
Digest: sha256:ca844065f663d0a91fe82b4d540ad1e6f4c4ddc58b354cd1724bf19e56f01409
Status: Downloaded newer image for docker.elastic.co/elasticsearch/elasticsearch:8.15.1
docker.elastic.co/elasticsearch/elasticsearch:8.15.1

What's Next?
  1. Sign in to your Docker account → docker login
  2. View a summary of image vulnerabilities and recommendations → docker scout quickview docker.elastic.co/elasticsearch/elasticsearch:8.15.1
8.15.1: Pulling from kibana/kibana
b14b0d0a7610: Already exists 
9c76979389f6: Pull complete 
eb575f2d268a: Pull complete 
a3ceeb406461: Pull complete 
8fbb4917c8b8: Pull complete 
59c458610001: Pull complete 
4ca545ee6d5d: Pull complete 
cc908d51a9a4: Pull complete 
84fc098c07c0: Pull complete 
0adedd631239: Pull complete 
cab52551c4ae: Pull complete 
58c3419bb885: Pull complete 
40834e327d50: Pull complete 
Digest: sha256:cc95727d74ddf69ee9aa278e60b676249350c7ae50b3707b194a6202aac767ad
Status: Downloaded newer image for docker.elastic.co/kibana/kibana:8.15.1
docker.elastic.co/kibana/kibana:8.15.1

What's Next?
  1. Sign in to your Docker account → docker login
  2. View a summary of image vulnerabilities and recommendations → docker scout quickview docker.elastic.co/kibana/kibana:8.15.1
8.15.1: Pulling from beats/elastic-agent
b14b0d0a7610: Already exists 
8cf8bae1370d: Pull complete 
d58bef810687: Pull complete 
f9f0cd53eee6: Pull complete 
c7e10a2549a7: Pull complete 
f4597cf68ac0: Pull complete 
5e03020a73cc: Pull complete 
ad763c8f7f7b: Pull complete 
0cb997c657a9: Pull complete 
ec1e73c6b8d4: Pull complete 
4ca545ee6d5d: Pull complete 
Digest: sha256:56a1f21d7b4dd97e3c136efb4bb8b2097602455ea68283e2afc5e699ca5d6c59
Status: Downloaded newer image for docker.elastic.co/beats/elastic-agent:8.15.1
docker.elastic.co/beats/elastic-agent:8.15.1

What's Next?
  1. Sign in to your Docker account → docker login
  2. View a summary of image vulnerabilities and recommendations → docker scout quickview docker.elastic.co/beats/elastic-agent:8.15.1

我们可以通过如下的命令来进行查看:

docker images
$ docker images
REPOSITORY                                                    TAG       IMAGE ID       CREATED        SIZE
docker.elastic.co/beats/elastic-agent                         8.15.1    ed404e4e9d06   10 days ago    1.21GB
docker.elastic.co/elasticsearch/elasticsearch                 8.15.1    e7a72ffb675e   10 days ago    818MB
docker.elastic.co/kibana/kibana                               8.15.1    2bedc69902ec   10 days ago    1.2GB
docker.elastic.co/enterprise-search/data-extraction-service   0.3.3     a81a99409aeb   5 months ago   299MB
alpine                                                        latest    ace17d5d883e   7 months ago   7.73M

Start

此操作将创建容器网络、下载所有必需的容器、设置 TLS 证书,并启动和连接 Elasticsearch、Kibana 和 Fleet 服务器容器。此选项是启动和运行 Elastic Stack 的 “quick start”。如果你尚未更改 .env 文件中的默认凭据,则脚本将退出。

$ pwd
/Users/liuxg/docker/elastic-container
$ ls
LICENSE.md           README.md            docker-compose.yml   elastic-container.sh kibana.yml
$ ./elastic-container.sh start
Sorry, looks like you haven't updated the passphrase from the default
Please update the changeme passphrases in the .env file.

我们接下来针对 .env 文件来进行修改。把 changeme 修改为 password 并保存

我们再接着运行上面的命令:

$ ./elastic-container.sh start
Passphrase has been reset. Proceeding.
Starting Elastic Stack network and containers.
[+] Building 0.0s (0/0)                                                               docker:desktop-linux
[+] Running 0/0
 ⠋ Network elastic-container_default  Creating                                                        0.0s 
[+] Running 7/1t of type `volume` should not define `bind` option 
[+] Running 9/9tic-container_default           Created                                                0.0s 
  Network elastic-container_default           Created                                                0.0s 
  Volume "elastic-container_fleetserverdata"  Create...                                              0.0s 
  Volume "elastic-container_certs"            Created                                                0.0s 
  Volume "elastic-container_esdata01"         Created                                                0.0s 
  Volume "elastic-container_kibanadata"       Created                                                0.0s 
  Container ecp-elasticsearch-security-setup  Health...                                              0.0s 
  Container ecp-elasticsearch                 Healthy                                                0.0s 
  Container ecp-kibana                        Healthy                                                0.0s 
  Container ecp-fleet-server                  Started                                                1.6s 

Attempting to enable the Detection Engine and install prebuilt Detection Rules.

Kibana is up. Proceeding.

Detection engine enabled. Installing prepackaged rules.

Prepackaged rules installed!

No detection rules enabled in the .env file, skipping detection rules enablement.

Waiting 40 seconds for Fleet Server setup.

Populating Fleet Settings.

READY SET GO!

Browse to https://localhost:5601
Username: elastic
Passphrase: password

上面显示我们可以使用 elastic/password 来登录我们的 Kibana:

请记得使用 https://localhost:9200。我们使用 https://localhost:5601 来访问 Kibana:

我们可以通过如下的命令来进行查看:

docker ps
$ docker ps
CONTAINER ID   IMAGE                                                  COMMAND                  CREATED         STATUS                   PORTS                              NAMES
656c7746db83   docker.elastic.co/beats/elastic-agent:8.15.1           "/usr/bin/tini -- /u…"   4 minutes ago   Up 3 minutes             0.0.0.0:8220->8220/tcp             ecp-fleet-server
973a25fa0a7b   docker.elastic.co/kibana/kibana:8.15.1                 "/bin/tini -- /usr/l…"   4 minutes ago   Up 3 minutes (healthy)   0.0.0.0:5601->5601/tcp             ecp-kibana
edab96b8f751   docker.elastic.co/elasticsearch/elasticsearch:8.15.1   "/bin/tini -- /usr/l…"   4 minutes ago   Up 4 minutes (healthy)   0.0.0.0:9200->9200/tcp, 9300/tcp   ecp-elasticsearch

我们可以看到 fleet server,Elasticsearch 及 Kibana 都在运行中。我们也可以从 Docker Desktop 中进行查看:

Stop

此选项将停止项目中所有正在运行的容器,但不会删除它们。

./elastic-container.sh stop
$ pwd
/Users/liuxg/docker/elastic-container
$ ./elastic-container.sh stop
Stopping running containers.
[+] Stopping 4/3
  Container ecp-fleet-server                  Stopped                                                1.3s 
  Container ecp-kibana                        Stopped                                                0.2s 
  Container ecp-elasticsearch                 Stopped                                                2.8s 
  Container ecp-elasticsearch-security-setup  Stoppe...                                              0.0s

Destroy

此选项将停止项目中所有正在运行的容器,删除容器网络,删除所有数据卷,并删除所有容器。

./elastic-container.sh destroy
$ ./elastic-container.sh destroy
#####
Stopping and removing the containers, network, and volumes created.
#####
[+] Running 9/9
  Container ecp-fleet-server                  Removed                                                0.0s 
  Container ecp-kibana                        Removed                                                0.0s 
  Container ecp-elasticsearch                 Removed                                                0.0s 
  Container ecp-elasticsearch-security-setup  Remove...                                              0.0s 
  Volume elastic-container_fleetserverdata    Removed                                                0.2s 
  Volume elastic-container_esdata01           Removed                                                0.1s 
  Volume elastic-container_kibanadata         Removed                                                0.1s 
  Volume elastic-container_certs              Removed                                                0.1s 
  Network elastic-container_default           Removed                                                0.1s 

Restart

此选项重新启动所有项目容器。

./elastic-container.sh restart

先前状态必须是 stop 或者是 start 状态。如果是 destroy 状态不会有任何的作用。

$ ./elastic-container.sh stop
Stopping running containers.
[+] Stopping 4/3
  Container ecp-fleet-server                  Stopped                                                1.4s 
  Container ecp-kibana                        Stopped                                                0.2s 
  Container ecp-elasticsearch                 Stopped                                                2.3s 
  Container ecp-elasticsearch-security-setup  Stoppe...                                              0.0s 
$ ./elastic-container.sh restart
#####
Restarting all Elastic Stack components.
#####
[+] Restarting 3/3
  Container ecp-kibana         Started                                                               0.2s 
  Container ecp-fleet-server   Started                                                               0.3s 
  Container ecp-elasticsearch  Started                                                               0.3s 

Status

此选项返回项目容器的状态。

$ ./elastic-container.sh status
NAME                IMAGE                                                  COMMAND                  SERVICE         CREATED          STATUS                    PORTS
ecp-elasticsearch   docker.elastic.co/elasticsearch/elasticsearch:8.15.1   "/bin/tini -- /usr/l…"   elasticsearch   14 minutes ago   Up 28 seconds (healthy)   0.0.0.0:9200->9200/tcp, 9300/tcp
ecp-fleet-server    docker.elastic.co/beats/elastic-agent:8.15.1           "/usr/bin/tini -- /u…"   fleet-server    14 minutes ago   Up 28 seconds             0.0.0.0:8220->8220/tcp
ecp-kibana          docker.elastic.co/kibana/kibana:8.15.1                 "/bin/tini -- /usr/l…"   kibana          14 minutes ago   Up 28 seconds (healthy)   0.0.0.0:5601->5601/tcp

Clear

此选项将清除日志和指标索引中的所有文档。

./elastic-container.sh clear
$ ./elastic-container.sh clear
Successfully cleared logs data stream
Successfully cleared metrics data stream

Help

此选项提供有关使用 shell 脚本的说明。

./elastic-container.sh help
$ ./elastic-container.sh help
usage: ./elastic-container.sh [-v] (stage|start|stop|restart|status|help)
actions:
  stage     downloads all necessary images to local storage
  start     creates a container network and starts containers
  stop      stops running containers without removing them
  destroy   stops and removes the containers, the network, and volumes created
  restart   restarts all the stack containers
  status    check the status of the stack containers
  clear     clear all documents in logs and metrics indexes
  help      print this message
flags:
  -v        enable verbose output

入门

现在我们已经了解了项目概述和 shell 脚本,让我们来看看如何建立自己的堆栈。

更新变量

所有变量都在位于存储库根目录的环境文件 ( .env ) 中控制。你必须更改的唯一内容是 elastic 和 kibana 的默认用户名和密码

使用你最熟悉的任何文本编辑器打开 .env 文件,并将 ELASTIC_PASSWORD 和 KIBANA_PASSWORD 变量从 changeme 更新为安全的内容。如果你没有从 .env 文件中的默认值更新凭据,脚本将退出。

如果你想更改其他变量(例如堆栈版本),你可以在此文件中进行更改。

启动 Elastic Stack

启动项目容器非常简单,只需使用启动选项运行 elastic-container.sh shell 脚本即可。

./elastic-container.sh start

访问 Elastic Stack

容器全部下载并启动后,你将看到一个输出,提示你浏览 https://localhost:5601

注意:你需要接受自签名 TLS 证书。

启用白金功能

启用白金许可证功能完全是可选的。基本许可证中包含安全功能,如反恶意软件、EDR、EPP 等。内存、行为和勒索软件保护是白金许可证功能。如果你想更改许可证,我们可以使用 .env 文件或在 Kibana 中执行此操作。你可以更新到 Elastic Platinum 30 天。

如果你想使用 .env 文件以便在构建堆栈时启用这些功能,请将 LICENSE=basic 更改为 LICENSE=trial,然后正常启动项目。

如果你更喜欢使用 Kibana,请单击汉堡菜单,然后单击 Stack Management

从 Kibana 访问堆栈管理

单击 “License Management”,然后单击 “Start a 30-day trial”。

开始 30 天试用

创建 Fleet 策略

现在我们已经启动并运行了整个 Elastic Stack,我们可以制定 Fleet 策略了。Fleet 是 Elastic Agent 的子程序(它是在运行 shell 脚本中的 start 选项时构建的),它使你能够管理其他 Elastic Agent、策略和集成。

Fleet 在 Kibana 中进行管理,Kibana 是允许你与存储在 Elasticsearch 中的数据进行交互并管理 Elastic Stack 的 UI。如果你有兴趣了解有关 Kibana 的更多信息,请查看免费培训视频

登录你的 Kibana 实例并单击左上角的 “汉堡包” 菜单,然后向下导航到 “Management” 部分下的 “Fleet”。

访问 Fleet

接下来,单击 “Agent policies” 选项卡,然后单击 “Create agent policy” 按钮。

创建 angent policy

为新 policy 命名并添加描述(可选)。通常,我们会取消选中“收集代理日志”和“收集代理指标”选项,因为这些是进入堆栈的额外数据,而对于我们的特定用例,我们通常不需要这些数据。如果你正在进行故障排除或对幕后发生的事情感兴趣,这些数据可以帮助你理解这一点。

定义 agent policy

接下来,点击你的新策略和蓝色的 “Add integration” 按钮。

打开 Fleet policy​
 添加 integration

有数百种集成,但在本博客中我们最感兴趣的是 Elastic Security。

要安装 Elastic Security,只需单击主集成页面上的图块或搜索 “security”。

Endpoint 及 Cloud Security integration

接下来,单击 “Add Endpoint and Cloud Security” 按钮将此集成安装到我们刚刚创建的策略中。

添加 Endpoint 及 Cloud Security

命名集成并单击蓝色的 “Save and continue” 按钮。

将 integration 保存到 policy

虽然 Endpoint 和 Cloud security 及系统集成将收集与安全相关的日志,但如果你在 Windows 主机上使用 Sysmon,则可能需要添加 “Windows” 集成来收集这些日志。

安装集成后,系统会提示你添加更多代理或稍后再添加。选择 “Add Elastic Agent later” 选项,以便我们可以对我们的策略进行一些更改。

之后添加 Elastic Agents

现在我们将返回到我们的策略页面。

我们的政策应该有两个集成:security 和  system-1

审查 Windows 策略

在添加任何代理之前,我们需要将 Elastic Agent 设置为 Detect(以便允许恶意软件完全执行),将 Elastic Agent 注册为受信任的 AV 解决方案(仅限 Windows),并指示 Endpoint 和 Cloud Security 集成从安全事件中收集内存样本。这对于直接注入内存的 “fileless” 恶意软件(如 Cobalt Strike)非常有帮助。

如果你想了解有关从 Elastic Agent 生成的事件中提取恶意软件信标的更多信息,请查看我们的其他出版物存储库

为了允许恶意软件继续执行,请在 “Windows” 策略页面上,单击集成的名称(在我们的示例中为 “security”),将保护级别设置为 “Detect”。

设置保护级别为 Detect

对勒索软件、内存威胁防护和恶意行为部分重复这些步骤。

我们将 Elastic Agent 设置为 Detect,这样我们引爆的恶意软件将完全运行,以便我们能够分析整个执行链。如果你希望阻止恶意软件,可以将其保留为 Prevent 模式。

接下来,滚动到底部并选择 “Register as antivirus” 切换按钮,然后单击 “Show advanced settings” 超链接。

注册为防病毒软件

向下滚动到 windows.advanced.memory_protection.shellcode_collect_sample、windows.advanced.memory_protection.memory_scan_collect_sample 和 windows.advanced.memory_protection.shellcode_enhanced_pe_parsing 选项并将值设置为 true。

启用样本收集

如上所述,这些步骤适用于实验室、沙箱、测试等。这些设置可以生成大量数据,因此为生产设置这些设置需要考虑资源和规模。

如果你要为 Linux 或 macOS 制定策略,请针对正确的操作系统重复这些步骤。

完成所有安装后配置后,我们可以单击蓝色的 “Save integration” 按钮。

启用 Elastic 的预建检测规则

现在我们已经创建了 Fleet 代理策略,我们需要启用与我们将要部署的操作系统或平台(例如 Windows)相关的一组预建检测规则。为此,你需要转到安全(security)应用程序中的 “Alerts” 页面。

单击汉堡菜单并选择 “Security solution” 下的 “Alerts”。

访问 Alerts 部分

接下来,点击蓝色的 “Manage Rules” 按钮。

进入 Manage rules 则界面

进入规则页面后,你可以通过点击 “Update Elastic prebuilt rules” 按钮来更新 Elastic 提供的所有预建规则。首次进入 “Manage rules” 部分时,将启用更新框架,如果 “Update Elastic prebuilt rules” 按钮不存在,请刷新屏幕。

更新 Elastic 预建规则

一旦规则更新完毕,你就可以浏览可用的检测规则,通过多种不同的模式进行搜索,或者简单地通过标签进行过滤,这就是我们在这里通过搜索 Windows 规则所要做的。

过滤 Windows 规则

现在我们可以选择所有的 Windows 规则。

选择所有 Windows 规则

一旦选择了所有规则,我们就可以批量启用它们。

批量启用 Windows 规则

由于 Elastic Container Project 完全在单个 Docker 容器内运行,因此如果启用所有可用规则,可能会注意到性能影响。探索不同的规则,并根据你的基础设施和用例启用或禁用它们。

启用这些规则后,它们将生效,并针对你的终端代理发送到堆栈的数据运行。当触发检测引擎规则时,它们将在安全解决方案中的警报页面中显示。

注册 Elastic Agent

仍然在 Fleet 中,我们有几种方法可以添加 Elastic Agent。最直接的方法是在我们想要注册 Elastic Agent 的策略中注册(否则你必须指定要使用的策略)。使用哪种方法并不重要,但单击 “Actions” 按钮,然后单击 “Add agent” 几乎可以在 Fleet 的任何地方使用。

添加 Elastic Agent

向下滚动并单击要在其上安装 Elastic Agent 的操作系统,然后将说明直接复制/粘贴到要在其上安装代理的主机的终端窗口中。请注意,如果你使用的是 Windows,请使用以具有管理权限的帐户身份(或提升为该帐户)运行的 Powershell CLI。

Powershell 命令添加 Elastic Agent

值得注意的是,由于我们所有的 TLS 证书都是自签名的,因此我们需要附加 –insecure 标志。如果你使用的是受信任的证书,则无需这样做。

.\elastic-agent.exe install --url=https://[stack-ip]:8220 --enrollment-token=[token] --insecure
将 Elastic Agent 注册到 Fleet

回到 Kibana,我们可以看到确认 Elastic Agent 已安装在主机上并且数据正在记录到 Elasticsearch 中。

验证 Elastic Agent 注册

我们可以看到 Elastic Agent 正在向 Fleet 报告并且运行状况良好。

验证 Elastic Agent 健康状况

如果我们进入 Discover 选项卡,我们可以看到各种事件类型报告到 Elasticsearch。我们可以通过在主机上打开 notepad.exe 、 calc.exe 和 ping.exe -t www.elastic.co 来生成一些测试数据。从 Discover 中,我们可以进行一个简单的查询来验证我们是否看到了数据:

process.name.caseless : (notepad.exe or ping.exe or calc.exe)
验证数据是否正在发送到 Elasticsearch

现在我们已经确认我们看到了数据。让我们启动一些恶意软件吧!

测试一些恶意软件

有很多地方可以下载恶意软件,但对于此测试,我们将仅使用行业标准 EICAR 反恶意软件测试文件来检查功能。

EICAR 测试是安全供应商普遍认可的文件,用于测试反恶意软件和平台的运行。它包含单个字符串并且是非恶意的。

在 Windows 主机中,我们将使用 Powershell 下载 EICAR 文件。

Invoke-WebRequest -Uri "https://secure.eicar.org/eicar.com.txt" -OutFile "eicar.txt"

正如预期的那样,该事件立即被 Elastic Agent 的安全集成识别。

Elastic Security 检测到 EICAR 测试文件

几分钟后,事件将记录到 Kibana 中的安全解决方案中。你可以通过单击汉堡菜单然后单击 “Alerts” 部分来访问该部分。

查看安全警报

在这里我们可以看到警报已填充。

安全解决方案中的警报

如果我们点击 Analyzer 按钮,我们可以深入研究该事件以识别生成该事件的过程。

分析器按钮

在我们的示例中,我们可以看到 powershell.exe 生成了事件,其中包括相关的网络事件 - secure.eicar.org ,EICAR 测试文件就是从这里下载的。

分析器视图

总结

在本文章中,我们向你介绍了 Elastic Stack 和一个开源项目,可用于快速安全地建立整个堆栈以进行测试、实验室和安全研究。

Kibana 和安全解决方案是功能强大的工具,由事件响应者、威胁猎手和情报分析师为安全从业者打造。要了解有关如何使用这些工具的更多信息,Elastic 有一些很棒的(免费和付费)培训,可以帮助你学习如何使用 Kibana 进行威胁猎手。

原文:The Elastic Container Project for Security Research — Elastic Security Labs

点赞(0) 打赏

评论列表 共有 0 条评论

暂无评论

微信公众账号

微信扫一扫加关注

发表
评论
返回
顶部