网络分析利器wireshark命令版4tshark结合ES

tshark是网络分析工具wireshark下的一个工具,主要用于命令行环境进行抓包、分析,尤其对协议深层解析时,tcpdump难以胜任的场景中。本系列文章将整理介绍tshark相关内容。本文将介绍与tshark相关的流量解决方案。 利用tshark,不仅可以对现有的pcap文件进行分析,由于可以输出其他格式,也就可以结合ES的强大搜索能力,达到对数据报文进行记录、分析处理的能力,可以实现回溯分析,结合kibana可视化工具,甚至达到实时可视化监控。 tshark + elastic stackelastic stack全家桶性能一直被诟病,后来另起炉灶,针对采集使用golang构建出一套beats,用于不同的采集场景。其中针对网络流量,开发出packetbeat。 packetbeat的优势是定制了elasticsearch的mapping、kibana一系列可视化图表,可以满足一般对tcp、dns、udp等常规报文的分析。基本达到开箱即用程度。 但packetbeat也有不足,对报文的分析采用会话分析,没有一个个报文单独分析,倾向于应用层,对网络层面分析不足(尤其是故障排查时),此外,支持的协议有限,仅常见协议与tshark的2000多种存在明显差距,当遇到不支持时,需要等待支持或手动写插件,难度极高。 离线导入elasticsearchtshark支持将pcap报文分析后生成json文件导入elasticsearch,同时支持elasticsearch的批量导入接口_bulk的格式,命令如下: tshark -r test_trace.pcap -T ek > test_trace.pcap.json之后可以将json文件通过curl导入。 curl -s -H "Content-Type: application/x-ndjson" -XPOST "localhost:9200/foo/_bulk" --data-binary "@/Users/test-elastic/test_trace.pcap.json"注: 导入时可能存在导入失败,由于_bulk接口对post的文件大小有限制,尽量不要超过15MB,最好在10MB以内。如果超过,建议使用tshark的输出条件生成多个json文件,使用curl依次导入。如果导入失败,可以在curl加-v查看提示信息。默认索引名为类似 packets-2019-04-23(报文记录的日期),可以导入后重新索引可以使用类似以下命令查看导入情况: curl 'http://127.0.0.1:9200/packets-2019-04-23/_search/?size=10&pretty=true'实时监控方案主要思路使用tshark实时抓取报文,并启用过滤策略使用tshark解析捕获的报文,提取指定的字段并写入csv文件中,或者使用json格式在下一步进行ETL writes captured wireless packets as .csv.使用filebeat持续检测csv文件,并发个logstash用于字段过滤之类(如无需过滤可以跳过logstash直接发给elastsearch)logstash对字段进行过滤,格式转化等,之后发到elasticsearch使用kibana进行数据可视化,对报文统计分析简单实现1. tshark部分tshark -a duration:600 -i phy0.mon -t ad -t ad -lT fields -E separator=, -E quote=d -e _ws.col.Time -e wlan.fc.type -e wlan.fc.type_subtype -e radiotap.dbm_antsignal -e frame.len -e radiotap.datarate > tshark.csv2. filebeat简单filebeat.yml配置文件 ...

May 1, 2019 · 2 min · jiezi

1Filebeat-环境搭建

Mac OS# 解压即用$ tar -zxvf ~/dev/doc/filebeat-6.7.1-darwin-x86_64.tar.gz -C ~/dev/tools/# 下面是个人习惯$ ln -s ~/dev/tools/filebeat-6.7.1-darwin-x86_64/ ~/dev/tools/filebeat$ vim ~/.bash_profile export FILEBEAT_HOME=/Users/baozi/dev/tools/filebeat export PATH=$PATH:$FILEBEAT_HOME$ source ~/.bash_profile$ filebeat -version

April 27, 2019 · 1 min · jiezi

2Filebeat-概述

Filebeat 简介Filebeat是一个轻量级的,用于转发与集中日志文件的数据采集程序。<br/>Filebeat监控日志文件或者你指定的目录,然后收集日志事件(数据),转发到Logstash或者Elasticsearch。<br/> Filebeat 工作原理Filebeat启动后,会启动一个或多个Input,查找指定的日志文件的位置。对于找到的每一个日志文件,都会启动一个Harvester。Harvester会将数据发送到libbeat。libbeat聚合事件(数据)并将数据发送到指定的输出。

April 27, 2019 · 1 min · jiezi

1Beats-概述

介绍Beats用于采集数据,然后发送到Elasticsearch或者Logstash,最后可以由Kibana进行数据可视化。 官方BeatsAuditbeat<br/>Filebeat<br/>Functionbeat<br/>Heartbeat<br/>Journalbeat<br/>Metricbeat<br/>Packetbeat<br/>Winlogbeat<br/> 社区Beats社区开源Beats<br/>Elastic并不对社区开源的Beats提供保证或支持。

April 27, 2019 · 1 min · jiezi

2Beats-配置文件格式

概述Beats配置文件采用YAML格式。 同级(同一个父级)的配置缩进级别相同。字典,格式为key: value,:后面加个空格。person: name: Baozi age: 22列表,以-开头,后面加个空格。colors: - Red - Green - Blue缩写的列表和字典类似JSON,{}表示字典,[]表示列表。person: {name: "Baozi", age: 22}colors: ["Red", "Green", "Blue"]Beats配置由字典和列表组成,一个Filebeat配置示例,为了帮助理解,我把几种形式都写了出来:filebeat: inputs: - type: log paths: - /var/log/*.log multiline: pattern: '^[' match: afterfilebeat.inputs:- type: log paths: ["/var/log/*.log"] multiline.pattern: '^[' multiline.match: afterfilebeat.inputs:- type: log paths: - /var/log/system.log - /var/log/wifi.log- type: log paths: - "/var/log/apache2/*" fields: apache: true fields_under_root: true命名空间官网解释有点拗口,按我的理解简单解释下:读配置文件时,根据配置全路径,解析成命名空间,为折叠格式。<br/> 直接看示例:output: elasticsearch: index: 'beat-%{[beat.version]}-%{+yyyy.MM.dd}'会被解析成:output.elasticsearch.index: 'beat-%{[beat.version]}-%{+yyyy.MM.dd}',这就是所谓的命名空间、折叠格式啦。<br/> 解析列表时,下标从0开始:filebeat: inputs: - type: log会被解析成: filebeat.inputs.0.type: log。 ...

April 27, 2019 · 1 min · jiezi