HOME> 礼包中心> 基于ELK搭建的本地社工库

基于ELK搭建的本地社工库

简介

ELK原本是一个开源实时日志分析平台。

ELK是三个开源软件的缩写,分别为:Elasticsearch 、 Logstash以及Kibana 。目前又新增了一个Beats,是一个轻量级的日志收集处理工具,Beats占用资源少,适合于在各个服务器上搜集日志后传输给Logstash,官方也推荐此工具。

Elasticsearch是个开源分布式搜索引擎,提供搜集、分析、存储数据三大功能。它的特点有:分布式,零配置,自动发现,索引自动分片,索引副本机制,restful风格接口,多数据源,自动搜索负载等

Logstash 主要是用来日志的搜集、分析、过滤日志的工具,支持大量的数据获取方式。一般工作方式为c/s架构,client端安装在需要收集日志的主机上,server端负责将收到的各节点日志进行过滤、修改等操作在一并发往elasticsearch上去。

Kibana可以为 Logstash 和 ElasticSearch 提供的日志分析友好的 Web 界面,可以帮助汇总、分析和搜索重要数据日志。

Beats在这里是一个轻量级日志采集器,早期的ELK架构中使用Logstash收集、解析日志,但是Logstash对内存、cpu、io等资源消耗比较高。相比 Logstash,Beats所占系统的CPU和内存几乎可以忽略不计。

优点

网上的社工库,大部分是mysql+coreseek+php架构。

coreseek基于sphinx,是一款优秀的全文搜索引擎,缺点是比较轻量级,一旦数据量过数亿,就会有些力不从心,并且搭建集群做分布式性能并不理想。

在ELK中可用全文检索,并且在大数据的查询中的响应几乎都是毫秒级的,速度相当之快!ELK原本用在日志的大数据收集和分析,其可怕的速度作为社工库是不错的选择。

ELK最简单的架构只需要一台机器即可架设。

环境

ELK需要java环境的支持,并配置JAVA_HOME环境变量。

建议直接安装jdk,jdk是包含jre的,下载完记得手动添加安装位置到环境变量。

java默认安装路径:C:\Program Files\Java,里面同时有jre和jdk。

jdk文件夹里面还有一个jre文件夹,新建一个系统变量JAVA_HOME,值为jdk路径

PATH新建添加%JAVA_HOME%\bin;%JAVA_HOME%\jre\bin,就配置好JAVA_HOME环境变量了

通常直接安装默认会自动配置环境变量,不必在手动配置,确认一下即可。

下载

ELK官网下载:

下载 Elastic 产品 | Elastic

点击下载之后根据不同的操作系统选择相应的版本即可

运行

我这里是在本机windows中运行。

下载好Elasticsearch、Logstash、Kibana三个压缩包后分别进行解压

运行脚本文件都在各文件夹下的 bin 目录下,分别为:

bin/logstash.bat

bin/kibana.bat

bin/elasticsearch.bat

首先运行elasticsearch.bat

双击运行后等待一下访问本机9200端口,如下代表成功:

默认为9200端口,可在 config/elasticsearch.yml 文件中进行修改,通常默认即可

#禁用虚拟内存,提高性能

bootstrap.memory_lock: true

#节点名称自定义

cluster.name: elasticsearch

#数据通信端口

http.port: 9200

#监听网卡

ip network.host: 192.168.1.1

#是否是数据节点

node.data: true

#关闭即可

node.ingest: true

#是否是主节点,不定义的话先启动的是主节点

node.master: true

#最大存储节点

node.max_local_storage_nodes: 1

#节点名字自定义

node.name: Win-Master-1

#数据文件路径

path.data: D:\elk\elasticsearch\data path.logs: D:\elk\elasticsearch\logs

#节点间通信端口:

transport.tcp.port: 9300

#节点ip,节点之间要允许ping和9300端口通信

discovery.zen.ping.unicast.hosts: ["192.168.1.1", "192.168.1.2"] #head插件相关:

http.cors.enabled: true http.cors.allow-origin: "*"

# 0.0.0.0 则开启外网访问

network.host=0.0.0.0

然后运行 kibana.bat 等待一下访问本机5601端口

默认为5601端口,可在 config/kibana.yml 文件中进行修改

最后使用 logstash 导入数据

新建一个文件作为数据及导入格式:

input { file{

#输入源文件,注意此处不能使用反斜杠

path=>"C:/Users/ASUS/Desktop/logstash-8.0.1/bin/dic.txt"

start_position=>beginning #定义开头

}

}

filter {

csv{

columns=>["qq","password","mail","地址"] #存储的字段名

separator=>"---" #分隔符

}

mutate{

#移除一些默认的输出信息

remove_field=>["message","path","host","@timestamp","@version","original","event","log"]

}

}

output {

elasticsearch{

hosts=>["127.0.0.1:9200"]

index=>"ling" #导入的库名

document_type=>"qq" #类型名

}

stdout{

codec=>rubydebug

}

}

创建相应的文件

运行命令导入数据

.\logstash.bat -f .\dic.conf

访问http://127.0.0.1:9200/_cat/indices?v可以看到有任务进行

成功后访问http://127.0.0.1:5601/在managerment->ling->可以看到导入的库

点击库可看到数据的大小及数量

新建索引

点击Managerment->Index Pattern

输入信息,与创建的库同名

点击Next step, 然后点击Create index pattern

创建成功后点击Discover查看所有信息

最后搜索信息,点击搜索结果查看信息详情

响应时间非常迅速

后面优化需要配合api接口进行查询

声明

提供的技术仅供学习参考测试,利用本文提供的信息造成的直接或间接损失由使用者自行承担。

结语

别因寒冷放弃前行,要知道冬天的每一道脚印都只会更加清晰。