ELK日志分析本地环境搭建

记录本地搭建、破解ELK环境的过程和踩的坑

Posted by Ga0weI on June 18, 2024

0x01 简介

搭建一个elk环境,分析日志

准备两个虚拟机:

ubantu 22:搭建elasticsearch、kibana、fleet

windows10:配置elastic_agent采集系统、应用、安全日志,安装sysmon采集日志

0x02 环境搭建及使用

1、操作系统 ubantu

官网下载即可:

这里使用的是22.04版本

https://mirror.nyist.edu.cn/ubuntu-releases/jammy/ubuntu-22.04.4-desktop-amd64.iso

安装好之后,修改下/etc/resolv.conf,配置个dns服务器:

image-20240618171234153

2、elasticsearch 下载安装

linux上下载es:

1
2
3
wget https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-8.7.1-amd64.deb
sudo dpkg -i elasticsearch-8.7.1-amd64.deb

安装成功:

image-20240618165407056

存下密码,或者通过elasticsearch-reset-password去修改密码;

1
ue8zyNPK6BBHh*2ujKVm

启动es:

1
2
3
sudo systemctl daemon-reload
sudo systemctl enable elasticsearch.service
sudo systemctl start elasticsearch.service

此时端口已经开了,默认9200:

image-20240618171522743

3、kibana 下载安装

下载k8s:

1
2
wget https://artifacts.elastic.co/downloads/kibana/kibana-8.7.1-amd64.deb
sudo dpkg -i kibana-8.7.1-amd64.deb

安装成功:

image-20240618165426076

修改配置文件:/etc/kibana/kibana.yml ,server.host改成0.0.0.0就行,文件最后可以把语言可以改成中文:i18n.locale:"zh-CN",默认是en,英文;

image-20240618174208618

image-20240618175527254

并且添加如下内容,设置一个密钥(后期kibana里面建规则需要)

1
xpack.encryptedSavedObjects.encryptionKey: 'fhjskloppd678ehkdfdlliverpoolfcc'

运行服务:

1
systemctl restart kibana

开启成功,默认端口5601

image-20240618174850937

4、ES和kibana联通

访问 kibana,

http://192.168.129.195:5601/

提示需要token:

image-20240618175003071

运行如下命令,从而es拿到token;

1
sudo /usr/share/elasticsearch/bin/elasticsearch-create-enrollment-token -s kibana

image-20240618175118191

填入token ,提示下一步,需要一个校验code:

image-20240618175205267

运行如下命令,从kibana里面拿到校验code:

1
sudo /usr/share/kibana/bin/kibana-verification-code

image-20240618175316517

填入code,下一步输入命令登录即可:

image-20240618175357204

登录后界面:

image-20240618175839726

5、ES破解

参考:https://songxwn.com/Elasticsearch-x-pack-core/

破解环境

破解需要的环境:ubantu装个docker

参考:https://yeasy.gitbook.io/docker_practice/install/ubuntu

ubantu加上国内的源:/etc/apt/source.list

1
2
3
4
5
6
7
8
deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ jammy main restricted universe multiverse
# deb-src https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ jammy main restricted universe multiverse
deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ jammy-updates main restricted universe multiverse
# deb-src https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ jammy-updates main restricted universe multiverse
deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ jammy-backports main restricted universe multiverse
# deb-src https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ jammy-backports main restricted universe multiverse
deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ jammy-security main restricted universe multiverse
# deb-src https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ jammy-security main restricted universe multiverse

更新源,添加相关证书

1
2
3
4
5
6
7
8
sudo apt-get update

sudo apt-get install \
    apt-transport-https \
    ca-certificates \
    curl \
    gnupg \
    lsb-release

加软件源的 GPG 密钥

1
sudo curl -fsSL https://mirrors.aliyun.com/docker-ce/linux/ubuntu/gpg | sudo gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg

sources.list 中添加 Docker 软件源

1
2
3
4
sudo echo \
  "deb [arch=amd64 signed-by=/usr/share/keyrings/docker-archive-keyring.gpg] https://mirrors.aliyun.com/docker-ce/linux/ubuntu \
  $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null

在更新源,并安装docker

1
2
sudo apt-get update
sudo apt-get install docker-ce docker-ce-cli containerd.io

image-20240618183642106

1
sudo usermod -aG docker $USER

给docker配置全局代理

创建如下目录和配置文件,然后设置代理梯子:

1
2
sudo mkdir -p /etc/systemd/system/docker.service.d
sudo touch /etc/systemd/system/docker.service.d/proxy.conf
1
2
3
4
[Service]
Environment="HTTP_PROXY=http://proxy.example.com:8080/"
Environment="HTTPS_PROXY=http://proxy.example.com:8080/"
Environment="NO_PROXY=localhost,127.0.0.1,.example.com"

重启docker

1
2
sudo systemctl daemon-reload
sudo systemctl restart docker

破解:

下载破解zip:

1
wget https://github.com/Songxwn/crack-elasticsearch-by-docker/archive/refs/tags/8.7.1.zip

解压运行:

1
2
3
unzip 8.7.1.zip
version=8.7.1
sudo bash crack.sh $version

image-20240618185544014

进入output目录,用x-pack-core-8.7.1.crack.jar 覆盖/usr/share/elasticsearch/modules/x-pack-core/下的x-pack-core-8.7.1.jar

image-20240618191637251

1
sudo cp ./output/x-pack-core-8.7.1.crack.jar  /usr/share/elasticsearch/modules/x-pack-core/x-pack-core-8.7.1.jar

image-20240618191950356

重启es:

sudo systemctl restart elasticsearch

创建elastic8.json文件

1
2
3
4
5
6
7
8
9
10
11
12
13
{
	"license": {
		"uid": "d177620f-46ef-4389-8694-4f1d1cb232f0",
		"type": "platinum",
		"issue_date_in_millis": 1682640000000,
		"expiry_date_in_millis": 4081372171000,
		"max_nodes": 1000,
		"issued_to": "elastic",
		"issuer": "elastic",
		"signature": "AAAAAwAAAA1Mj/kViFP0DDokihMTAAABmC9ZN0hjZDBGYnVyRXpCOW5Bb3FjZDAxOWpSbTVoMVZwUzRxVk1PSmkxaktJRVl5MUYvUWh3bHZVUTllbXNPbzBUemtnbWpBbmlWRmRZb25KNFlBR2x0TXc2K2p1Y1VtMG1UQU9TRGZVSGRwaEJGUjE3bXd3LzRqZ05iLzRteWFNekdxRGpIYlFwYkJiNUs0U1hTVlJKNVlXekMrSlVUdFIvV0FNeWdOYnlESDc3MWhlY3hSQmdKSjJ2ZTcvYlBFOHhPQlV3ZHdDQ0tHcG5uOElCaDJ4K1hob29xSG85N0kvTWV3THhlQk9NL01VMFRjNDZpZEVXeUtUMXIyMlIveFpJUkk2WUdveEZaME9XWitGUi9WNTZVQW1FMG1DenhZU0ZmeXlZakVEMjZFT2NvOWxpZGlqVmlHNC8rWVVUYzMwRGVySHpIdURzKzFiRDl4TmM1TUp2VTBOUlJZUlAyV0ZVL2kvVk10L0NsbXNFYVZwT3NSU082dFNNa2prQ0ZsclZ4NTltbU1CVE5lR09Bck93V2J1Y3c9PQAAAQB+UgXp8+9jDR7U2Roxj4caOUYvtO3+GEU/AGVgrC7LHZTKDQkD8h36pneSK1Iwh0HTvi9kKmdWmqU6DiSwiOMW/Bu+ouItG5XlG+THiC1vDzVmknWU+MKIr9agGaEz4bsaqv70rO8MaivOLgEsj61cgDbpNL4jfLuCpiHbMB/X8XaftLCl70URcRnNTJ64PhobBFwHg0XV344FLInlRSpOWeQr29Nh94iB5bxBeKsXwhmoP9O1NtKAmPoKJUttBXQ757/BnyzruK8+sxGOv8XVCkC+xjVTqeyd3Lp5WUNw7jm4Bb7XspDWWjjRDYh4Omci94VetP+QtcoQmAiBarKi",
		"start_date_in_millis": 1682640000000
	}
}

在kibana界面 ,Static Management 许可管理导入

image-20240618202130470

可以看到破解完成:

image-20240618202253940

6、部署fleet服务

登录kibana 找到如下集成

image-20240618192426958

简单填写几个名称,下一步

image-20240618192544669

然后添加代理:

image-20240618192705285

添加fleet服务器:

image-20240618192726476

填写名称和url地址,这里地址直接设置生成本地IP的8220端口,记得https,然后点击生成fleet服务器:

image-20240618192826017

得到elastic—agent的安装方法和参数:

image-20240618192947156

1
2
3
4
5
6
7
8
9
$ProgressPreference = 'SilentlyContinue'
Invoke-WebRequest -Uri https://artifacts.elastic.co/downloads/beats/elastic-agent/elastic-agent-8.7.1-windows-x86_64.zip -OutFile elastic-agent-8.7.1-windows-x86_64.zip
Expand-Archive .\elastic-agent-8.7.1-windows-x86_64.zip
cd elastic-agent-8.7.1-windows-x86_64
.\elastic-agent.exe install `
  --fleet-server-es=https://192.168.129.195:9200 `
  --fleet-server-service-token=AAEAAWVsYXN0aWMvZmxlZXQtc2VydmVyL3Rva2VuLTE3MTg3MTAxMzI3NTA6M0tYY2k3XzlScFMzOTFwcWJEelJsUQ `
  --fleet-server-policy=fleet-server-policy `
  --fleet-server-es-ca-trusted-fingerprint=cf09ba240377c1801474dee0bcc4113107bab59e2fe2500d33ee6ce053d39e33

7、安装配置ES_agent

windows机器上,我们运行上面ps代码:

image-20240618193706280

这里我之前是下载过agent了,所以直接用cmd运行最后的安装命令就行:

image-20240618194145574

image-20240618194335766

装好之后,kibana上,看到已连接:

image-20240618194312279

然后进入:kibana界面里面的 Observability —> 基础设施

image-20240618194437937

我们就能看到上来的机器

image-20240618194529184

8、使用ES_agent采集的日志

进入主界面的Discover 看到实时上传的日志

image-20240618194651676

创建数据视图的时候

image-20240618194717045

我们看到右侧多了很多索引,这些都是es的agent采集的,里面也包括了windows里面的系统、安全、应用日志

image-20240618194805068

除此之外还有一些 进程创建、网络连接、内存、文件系统的日志:

image-20240618194943880

9、采集并导入sysmon日志

windows机器上可以安装sysmon,生成的evtx日志,可以直接导入到es里面

安装sysmon:

下载:https://learn.microsoft.com/en-us/sysinternals/downloads/sysmon

配置文件:https://github.com/SwiftOnSecurity/sysmon-config/blob/master/sysmonconfig-export.xml

image-20240618195935170

找到日志位置:

image-20240618200159138

下载evtx2es:https://github.com/sumeshi/evtx2es/releases

运行如下命令,直接导入到es里面:

1
evtx2es.exe Microsoft-Windows-Sysmon%4Operational.evtx --host 192.168.129.195 --login elastic --pwd ue8zyNPK6BBHh*2ujKVm  --scheme https --index testbyg0

如下就是导入完成了

image-20240618200641822

回到kibana里面,通过创建视图,来源会新增一个索引类型的来源:testbyg0

image-20240618200824652

如下是创建视图后看到的sysmon日志:

image-20240618200920864

0x03 总结

记录下本地搭建ELK的过程,里面有的坑都写出来了,这里没有选择直接用docker拉docker-compose容器起环境,准备本地用,虚机快照好操作,可控性强;

有点折磨,就是一些简单的操作,但是就是会出奇奇怪怪的问题,然后写这个文章的时候又重新折磨了一遍,记录下吧,之后或许有用;