如何使用ELK搭建社工库

admin 2024年11月24日21:54:33评论39 views字数 3456阅读11分31秒阅读模式

如何使用ELK搭建社工库

如何使用ELK搭建社工库

   手里有一些平时收集的社工信息,想自己搭建一个小社工裤把数据用起来,考虑到检索速度问题,没有使用传统的数据库+web程序的模式,使用了一个开源的文本检索框架elasticstatic,简单记录一下搭建过程。

      ELK Stack是elasticsearch、logstash、kibana是三个开源软件的组合。Logstash是一款开源的日志收集处理框架,负责数据的采集和格式化,搭建社工库用不到,不用关心。Elasticsearch是一个开源的分布式搜索引擎,用于数据的快速索引存储,用于存储社工库数据,Kibana负责提供web展示功能。

如何使用ELK搭建社工库

如何使用ELK搭建社工库

如何使用ELK搭建社工库

背景

      关于ELK背景以及相关知识介绍可以参考以下几个网站

https://es.xiaoleilu.com/index.html

https://www.gitbook.com/book/looly/elasticsearch-the-definitive-guide-cn/details

https://github.com/13428282016/elasticsearch-CN/wiki

配置

elastic官网 下载最新版本的elasticsearch、kibana,搭建时下载的为elasticsearch5.3和kibana5.3。

如果没有特殊需求,解压下载文件后无需修改配置文件,一切默认即可

elasticsearch5.3需要安装jdk1.8+才能运行,下载后,运行双击binelasticsearch.bat,访问127.0.0.1:9200,服务器返回json结果,启动成功,然后解压kibana5.3,双击binkibana.bat,访问127.0.0.1:5601

如何使用ELK搭建社工库
如何使用ELK搭建社工库

如何使用ELK搭建社工库

如何使用ELK搭建社工库
如何使用ELK搭建社工库

创建社工库

由于开始时没有创建和配置索引,所以访问kibana提示如下:

因此第一步需要创建一个社工库的index,kibana提供了一个elasticsearch rest接口的操作界面,点击左侧的Dev tools,打开rest api的web访问界面,在左侧输入如下命令:

PUT /information/user/1 { "name":"测试", "email":"[email protected]", "tel":"18888888888", "idcard":"130123456789012345", "user_id":"test", "password":"123456", "salt":"0000", "card_no":"6226111100001111", "other":"something", "data_from":"test", "address":"hhhhhhh" }

      以上命令创建了一个名为information的index(相当于数据库)和名为uesr的type(相当于表),并插入了一条id为1的测试数据,type无需事先定义列,会根据插入数据自动生成,每次插入的列的名称和数量均可不同

输入GET /information/user/1?pretty或GET /information/user/_search可查询插入的数据

删除index使用命令DELETE information

删除指定id的数据使用命令DELETE /information/user/1?pretty

插入数据,不指定id

POST /information/user/ { "name":"测试", "email":"[email protected]", "tel":"18888888888", "idcard":"130123456789012345", "user_id":"test", "password":"123456", "salt":"0000", "card_no":"6226111100001111", "other":"something", "data_from":"test" }

创建index后可以对kibana进行配置,返回kibana主页面,配置默认index,在Index name or pattern输入information,将复选框全部取消,点击create, 创建完成,再次点击左侧的Discover,即可进行查询,查询语法可参考

https://segmentfault.com/a/1190000002972420

api查询删除操作

根据条件进行查询,查询data_from中包含test的记录

GET /information/user/_search { "query" : { "match" : { "data_from": "test" } } }

精确查询,查询email为[email protected]的记录

GET /information/user/_search { "query": { "match_phrase":{ "email": "[email protected]" } } }

修改数据

POST /information/user/1/_update?pretty { "doc":{ "email":"[email protected]", "tel":"18877777777" } }

根据查询条件删除数据(不同版本的elasticstatic命令不同)

POST /information/user/_delete_by_query { "query" : { "match" : { "data_from": "YY" } } }

查询所有index

GET /_cat/indices?v

数据批量导入POST /information/user/_bulk?pretty { "index" : { "_index" : "information", "_type" : "user", "_id" : "1" } } {"password": "19790330", "user_id": "qzzzse", "data_from": "test"} { "index" : {} } {"password": "quzhou", "user_id": "[email protected]", "data_from": "test"}

每条数据占两行,第一行指定index type和id,由于路径中已经指定了index和type,且希望id自动生成,因此第一行也已改为{ "index" : {} }

文件批量导入需要使用curl命令 curl -XPOST localhost:9200/_bulk --data-binary @data.json,API 可以是 /_bulk, /{index}/_bulk, 或 /{index}/{type}/_bulk 这三种形式,当索引或类型已经指定后,数据文件中如不明确指定或申明的内容,就会默认使用API中的值从data.json文件使用utf-8编码,内容格式为:

{ "index" : { "_index" : "information", "_type" : "user", "_id" : "1" } } {"password": "19790330", "user_id": "qzzzse", "data_from": "test"} { "index" : {} } {"password": "quzhou", "user_id": "[email protected]", "data_from": "test"}

单个导入文件大小建议为10M左右

优化

     使用单机只有一个node,因此无法创建备份分片,所以index的状态为yellow,可以使用如下命令关闭备份分片

PUT /_settings { "number_of_replicas" : 0 }

    查询结果默认显示_id,_type,_inde,可以在Management-》advanced Setting中,编辑metaFields的值,将除_source的值删除即可

性能

    单个index最多导入20亿条左右的数据,如果数据量大建议创建多个index,为了考虑便捷性,搭建的时候单机部署,且将系统放在了移动硬盘上,机械移动硬盘写入1亿行数据后IO吞吐率会达到将近100%,使用移动固态硬盘,5亿条数据后会出现问题,没有细看是io的问题还是内存,如果数据量超过5亿条,最好还是考虑分布式部署。

如何使用ELK搭建社工库

原文始发于微信公众号(黑客技术家园):如何使用ELK搭建社工库

免责声明:文章中涉及的程序(方法)可能带有攻击性,仅供安全研究与教学之用,读者将其信息做其他用途,由读者承担全部法律及连带责任,本站不承担任何法律及连带责任;如有问题可邮件联系(建议使用企业邮箱或有效邮箱,避免邮件被拦截,联系方式见首页),望知悉。
  • 左青龙
  • 微信扫一扫
  • weinxin
  • 右白虎
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2024年11月24日21:54:33
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                   如何使用ELK搭建社工库https://cn-sec.com/archives/3431540.html
                  免责声明:文章中涉及的程序(方法)可能带有攻击性,仅供安全研究与教学之用,读者将其信息做其他用途,由读者承担全部法律及连带责任,本站不承担任何法律及连带责任;如有问题可邮件联系(建议使用企业邮箱或有效邮箱,避免邮件被拦截,联系方式见首页),望知悉.

发表评论

匿名网友 填写信息