快捷搜索:  汽车  科技

开源威胁情报系统(基于ELK的日志监控)

开源威胁情报系统(基于ELK的日志监控)3、Kibana:用于分析和可视化日志的 Web可视化平台2、Logstash:Logstash是一个开源的数据收集引擎,可以采集不同数据源的数据发送给ElasticsearchELK Stack即以前的Elastic Stack,Elk Stack是Elastic公司专门为集中化日志管理设计的免费开源软件组合。它允许搜索、分析和可视化来自不同来源的日志。如在ubuntu上安装配置ELK Stack,需要如下先决条件:1、Elasticsearch:Elasticsearch是一个基于Apache Lucene(TM)的开源搜索引擎,使用RESTful API,可以存储、检索数据。

本文首发于“合天智汇”公众号

开源威胁情报系统(基于ELK的日志监控)(1)

实验推荐-本文涉及实操知识点练习

狙剑软件使用实验

https://www.hetianlab.com/expc.do?ec=5e8b5d22-88eb-4061-a07f-80bd791f0b8d&pk_campaign=toutiao-wemedia

通过本实验的学习,你能够了解主机安全软件监控原理,学会如何利用主机安全软件狙剑监控可疑进程,学会如何利用狙剑软件对本机进行注册表和文件的管理。

0x0、概述!

ELK Stack即以前的Elastic Stack,Elk Stack是Elastic公司专门为集中化日志管理设计的免费开源软件组合。它允许搜索、分析和可视化来自不同来源的日志。

如在ubuntu上安装配置ELK Stack,需要如下先决条件:

  • Ubuntu 20.04
  • 最好使用Root 权限进行配置
  • 0x1 内容目录
  • ELK Stack 组成部分
  • 安装 Java 和所有依赖项
  • 安装和配置 Elasticsearch
  • 安装和配置 Logstash
  • 安装和配置 Kibana
  • 安装和配置 nginx
  • 安装和配置 Filebeat
  • 配置 Linux 日志到 Elasticsearch
  • 在Kibana中创建日志仪表板
  • 监控 SSH 事件
  • 0x2 ELK Stack 组成

    1、Elasticsearch:Elasticsearch是一个基于Apache Lucene(TM)的开源搜索引擎,使用RESTful API,可以存储、检索数据。

    2、Logstash:Logstash是一个开源的数据收集引擎,可以采集不同数据源的数据发送给Elasticsearch

    3、Kibana:用于分析和可视化日志的 Web可视化平台

    4、Filebeat:轻量级的日志收集和转发器,可以把数据收集后转发到Logstash或Elasticsearch

    开源威胁情报系统(基于ELK的日志监控)(2)

    0x3 安装 Java 和所有依赖项

    Elasticsearch是Java编写的程序,所以需要安装JDK,可以使用如下命令安装OpenJDK和其他一些所需的软件包。

    wget-qO-https://artifacts.elastic.co/GPG-KEY-elasticsearch|sudoapt-keyadd-

    开源威胁情报系统(基于ELK的日志监控)(3)

    然后导入Elasticsearch的公钥,添加apt软件源

    wget-qO-https://artifacts.elastic.co/GPG-KEY-elasticsearch|sudoapt-keyadd-

    开源威胁情报系统(基于ELK的日志监控)(4)

    添加软件源

    开源威胁情报系统(基于ELK的日志监控)(5)

    0x4 安装和配置Elasticsearch

    更新软件源

    sudoaptupdate

    开源威胁情报系统(基于ELK的日志监控)(6)

    然后安装(国内安装比较慢,请耐心等待)

    sudoapt-getinstallelasticsearch

    开源威胁情报系统(基于ELK的日志监控)(7)

    安装完后,开始配置Elasticsearch

    Elasticsearh默认监听9200端口。为了安全,需要设置一下限制外网访问。使外部网络无法通过REST API访问数据和elastic集群。Elasticsearch的配置文件是elasticsearch.yml。修改它就行。

    打开配置文件

    sudogedit/etc/elasticsearch/elasticsearch.yml

    找到监听接口和端口进行修改

    开源威胁情报系统(基于ELK的日志监控)(8)

    删掉前面的注释符号#改成如下的样子:

    开源威胁情报系统(基于ELK的日志监控)(9)

    保存,然后启动Elasticsearch服务

    sudosystemctlstartelasticsearch

    开源威胁情报系统(基于ELK的日志监控)(10)

    查看服务状态和验证是否已经启动

    sudosystemctlstatuselasticsearch

    开源威胁情报系统(基于ELK的日志监控)(11)

    curl-XGETlocalhost:9200

    开源威胁情报系统(基于ELK的日志监控)(12)

    看到这个,就说明Elasticsearch启动成功了。

    你也可以在浏览器里面访问https://localhost:9200查看

    开源威胁情报系统(基于ELK的日志监控)(13)

    0x5 安装和配置Logstash

    首先确保系统里面有openssl,然后安装Logstash

    opensslversion-a sudoaptinstalllogstash-y

    开源威胁情报系统(基于ELK的日志监控)(14)

    开源威胁情报系统(基于ELK的日志监控)(15)

    创建一个SSL证书用于保证Rsyslog 和Filebeat传输数据给Logstash时的安全性。

    在Logstash的配置文件目录下创建一个ssl的目录,然后生成证书

    sudomkdir-p/etc/logstash/ssl cd/etc/logstash sudoopensslreq-subj'/CN=elkmaster/'-x509-days3650-batch-nodes-newkeyrsa:2048-keyoutssl/logstash-forwarder.key-outssl/logstash-forwarder.crt

    开源威胁情报系统(基于ELK的日志监控)(16)

    开源威胁情报系统(基于ELK的日志监控)(17)

    开源威胁情报系统(基于ELK的日志监控)(18)

    为了方便后续配置,我们可以修改一下/etc/hosts文件。把主机的ip配置一个主机名

    开源威胁情报系统(基于ELK的日志监控)(19)

    然后我们需要配置三个文件,分别是用于从filebeat接收数据的filebeat-input.conf,用于过滤系统日志的过滤器配置文件syslog-filter.conf,以及用于输出数据到elasticsearch的output-elasticsearch.conf。

    在logstash配置目录创建filebeat-input.conf文件

    cd/etc/logstash/ sudogeditconf.d/filebeat-input.conf

    开源威胁情报系统(基于ELK的日志监控)(20)

    添加如下内容:

    input{ beats{ port=>5443 type=>syslog ssl=>true ssl_certificate=>"/etc/logstash/ssl/logstash-forwarder.crt" ssl_key=>"/etc/logstash/ssl/logstash-forwarder.key" } }

    开源威胁情报系统(基于ELK的日志监控)(21)

    然后创建过滤器配置文件syslog-filter.conf并采用grok过滤器,这个的作用就是让Logstash根据给出的规则提取数据。

    sudogeditconf.d/syslog-filter.conf

    输入如下内容:

    filter{ if[type]=="syslog"{ grok{ match=>{"message"=>"%{SYSLOGTIMESTAMP:syslog_timestamp}%{SYSLOGHOST:syslog_hostname}%{DATA:syslog_program}(?:\[%{POSINT:syslog_pid}\])?:%{GREEDYDATA:syslog_message}"} add_field=>["received_at" "%{@timestamp}"] add_field=>["received_from" "%{host}"] } date{ match=>["syslog_timestamp" "MMMdHH:mm:ss" "MMMddHH:mm:ss"] } } }

    然后创建一个output-elasticsearch.conf配置文件用于将数据传输给elasticsearch。

    sudogeditconf.d/output-elasticsearch.conf

    内容如下:

    output{ elasticsearch{hosts=>["localhost:9200"] hosts=>"localhost:9200" manage_template=>false index=>"%{[@metadata][beat]}-%{ YYYY.MM.dd}" document_type=>"%{[@metadata][type]}" } }

    配置文件弄好之后,启动logstash服务看是否正常。

    sudosystemctlstartlogstash sudosystemctlstatuslogstash

    开源威胁情报系统(基于ELK的日志监控)(22)

    没有报错,说明服务正常启动了。

    0x6 安装和配置Kibana

    安装Kibana也是通过apt即可完成

    sudoaptinstallkibana

    安装完成之后,我们设置一下kibana的配置文件

    sudogedit/etc/kibana/kibana.yml

    主要是修改监听端口和地址,以及elasticsearch的地址

    开源威胁情报系统(基于ELK的日志监控)(23)

    保存,然后启动kibana服务

    开源威胁情报系统(基于ELK的日志监控)(24)

    然后你可以直接在浏览器中访问它

    开源威胁情报系统(基于ELK的日志监控)(25)

    0x7 安装和配置Nginx

    安装这个主要是给Kibana做反向代理的。

    首先安装Nginx和Apache2-utlis

    sudoaptinstallnginxapache2-utils-y

    安装完成之后,创建kibana虚拟主机配置文件

    sudogedit/etc/nginx/sites-available/kibana

    内容如下:

    server{ listen80; server_namelocalhost; auth_basic"RestrictedAccess"; auth_basic_user_file/etc/nginx/.kibana-user; location/{ proxy_passhttps://localhost:5601; proxy_http_version1.1; proxy_set_headerUpgrade$http_upgrade; proxy_set_headerConnection'upgrade'; proxy_set_headerHost$host; proxy_cache_bypass$http_upgrade; } }

    给配置文件创建一个连接

    sudoln-s/etc/nginx/sites-available/kibana/etc/nginx/sites-enabled/

    然后给访问Kibana Dashboard配置一个基础身份认证

    sudohtpasswd-c/etc/nginx/.kibana-userelastic

    开源威胁情报系统(基于ELK的日志监控)(26)

    然后测试Nginx配置文件并启动服务

    sudonginx-t sudosystemctlrestartnginx

    开源威胁情报系统(基于ELK的日志监控)(27)

    0x8 安装和配置Filebeat

    下载filebeat然后安装

    下载地址:https://www.elastic.co/cn/downloads/beats/filebeat

    开源威胁情报系统(基于ELK的日志监控)(28)

    可以按照自己的需求进行下载

    我们这里是安装在Ubuntu上,所以选择DEB版本下载。当然也可以直接用apt安装,前提是你在之前添加了Elastic的软件源。可以看官方指南进行添加软件源:https://www.elastic.co/guide/en/beats/filebeat/7.10/setup-repositories.html#_apt

    sudoaptinstallfilebeat-y

    开源威胁情报系统(基于ELK的日志监控)(29)

    然后编辑filebeat的配置,配置文件的路径:

    /etc/filebeat/filebeat.yml

    首先把input部分改为true

    开源威胁情报系统(基于ELK的日志监控)(30)

    然后修改Elasticsearch output部分

    开源威胁情报系统(基于ELK的日志监控)(31)

    修改成如下配置:(根据你的实际情况进行设置)

    开源威胁情报系统(基于ELK的日志监控)(32)

    修改Kibana配置部分:

    开源威胁情报系统(基于ELK的日志监控)(33)

    修改完后保存。

    然后初始化filebeat

    sudofilebeatsetup

    开源威胁情报系统(基于ELK的日志监控)(34)

    复制之前生成的logstash-forwarder.crt证书到/etc/filebeat目录中

    sudocp/etc/logstash/ssl/logstash-forwarder.crt/etc/filebeat/

    然后启动filebeat服务

    sudosystemctlstartfilebeat 0x9 配置 Linux 日志到 Elasticsearch

    配置rsyslog到Logstash,然后这些日志会自动传输到Elasticsearch

    在配置日志到Logstash之前,我们首先需要配置Logstash到Elasticsearch之间的日志转发。

    在/etc/logstash/conf.d目录下创建一个配置文件来设置到Elasticsearch之间的日志转发。

    cd/etc/logstash/conf.d/ sudogeditlogstash.conf

    配置文件的内容如下:

    input{ udp{ host=>"127.0.0.1" port=>10514 codec=>"json" type=>"rsyslog" } } #TheFilterpipelinestaysemptyhere noformattingisdone. filter{} #EverysinglelogwillbeforwardedtoElasticSearch.Ifyouareusinganotherport youshouldspecifyithere. output{ if[type]=="rsyslog"{ elasticsearch{ hosts=>["localhost:9200"] } } }

    配置文件主要由三部分组成,input部分:定义日志从哪儿来,filter部分:日志过滤器,output部分:日志传输到什么地址。

    然后我们重启一下logstash服务

    sudosystemctlrestartlogstash

    然后配置从rsyslog到Logstash日志转发,rsyslog可以使用模板转换日志然后进行转发。

    为了让 rsyslog 转发日志,需要在/etc/rsylog.d目录中创建一个70-output.conf的配置文件。

    cd/etc/rsyslog.d/ sudogedit70-output.conf

    添加如下内容:

    *.*@127.0.0.1:10514;json-template

    意思是所有日志发送到127.0.0.1:10514并使用json格式的模板进行转换

    我们需要创建一个json格式的模板文件

    sudogedit01-json-template.conf

    内容如下:

    template(name="json-template" type="list"){ constant(value="{") constant(value="\"@timestamp\":\"")property(name="timereported"dateFormat="rfc3339") constant(value="\" \"@version\":\"1") constant(value="\" \"message\":\"")property(name="msg"format="json") constant(value="\" \"sysloghost\":\"")property(name="hostname") constant(value="\" \"severity\":\"")property(name="syslogseverity-text") constant(value="\" \"facility\":\"")property(name="syslogfacility-text") constant(value="\" \"programname\":\"")property(name="programname") constant(value="\" \"procid\":\"")property(name="procid") constant(value="\"}\n") }

    然后启动rsyslog服务

    sudosystemctlstartrsyslog

    检查logstash监听端口是否正常:

    ss-na|grep10514

    开源威胁情报系统(基于ELK的日志监控)(35)

    如果监听没成功,并且在日志中看到以下报错信息:

    开源威胁情报系统(基于ELK的日志监控)(36)

    是因为配置文件里面存在语法错误,ELK软件对配置文件的语法要求比较严格,请仔细检查。

    0x10 在Kibana中创建日志仪表板

    在浏览器中打开Kibana界面

    首先需要创建一个索引模式

    然后找到Stack Management---Kibana中的Index Patterns

    开源威胁情报系统(基于ELK的日志监控)(37)

    然后点击Create index pattern

    开源威胁情报系统(基于ELK的日志监控)(38)

    输入logstash-*,然后点击Next step

    开源威胁情报系统(基于ELK的日志监控)(39)

    然后时间过滤器我们选择@timestamp

    开源威胁情报系统(基于ELK的日志监控)(40)

    然后点击Create index pattern

    开源威胁情报系统(基于ELK的日志监控)(41)

    添加成功后是这样的:

    开源威胁情报系统(基于ELK的日志监控)(42)

    点击回到Kibana的Discover中,在这里可以查询搜索你的数据

    开源威胁情报系统(基于ELK的日志监控)(43)

    开源威胁情报系统(基于ELK的日志监控)(44)

    0x11 监控 SSH 事件

    在过滤条件中,我们设置过滤条件为programename:sshd*

    开源威胁情报系统(基于ELK的日志监控)(45)

    这样就可以看到sshd程序相关事件了。

    0x12 更多参考资料

    配置 SSL、TLS 以及 HTTPS 来确保 Elasticsearch、Kibana、Beats 和 Logstash 的安全 | Elastic Blog

    https://www.elastic.co/cn/blog/configuring-ssl-tls-and-https-to-secure-elasticsearch-kibana-beats-and-logstash

    如何使用 Elastic Stack 监测 Nginx Web 服务器 | Elastic Bloghttps://www.elastic.co/cn/blog/how-to-monitor-nginx-web-servers-with-the-elastic-stack

    猜您喜欢: