• 基于ELK搭建的本地社工库


    简介

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

    ELK是三个开源软件的缩写,分别为:ElasticsearchLogstash以及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环境变量。

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

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

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

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

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

    下载

    ELK官网下载:

    下载 Elastic 产品 | Elastic

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

    运行

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

    下载好ElasticsearchLogstash、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接口进行查询

    声明

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


    结语

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

  • 相关阅读:
    【广州华锐互动】VR技术助力中小学生安全教育,让学生在虚拟世界中学会自我保护!
    面试官:什么是JIT、逃逸分析、锁消除、栈上分配和标量替换?
    线程版服务器实现(pthread_server)
    FPGA工程师职业发展道路
    Java运算符
    瑞吉外卖项目学习笔记01
    ciscn_2019_s_9
    linux网络初探
    【c++】虚函数和虚函数表(多态)
    一行代码解决WINFORM因为系统放大导致的布局混乱
  • 原文地址:https://blog.csdn.net/l1593572468/article/details/127941842