目录
一、Packetbeat 概述
Packetbeat 轻量型网络数据采集器
用于深挖网线上传输的数据,了解应用程序动态。Packetbeat 是一款轻量型网络数据包分析器,能够将数据发送至 Logstash 或 Elasticsearch等。
目前,Packetbeat支持以下协议:
- ICMP (v4 and v6)
- DNS
- HTTP
- AMQP 0.9.1
- Cassandra
- Mysql
- PostgreSQL
- Redis
- Thrift-RPC
- MongoDB
- Memcache
- TLS
二、Packetbeat 安装配置
1、rpm安装:
sudo yum install libpcap
curl -L -O https://artifacts.elastic.co/downloads/beats/packetbeat/packetbeat-6.4.2-x86_64.rpm
sudo rpm -vi packetbeat-6.4.2-x86_64.rpm
2、配置
配置文件/etc/packetbeat/packetbeat.yml
。还有一个完整的示例配置文件,/etc/packetbeat/packetbeat.reference.yml
其中显示了所有未弃用的选项。
vim /etc/packetbeat/packetbeat.yml
配置数据接收端,其他配置先默认即可
#============================== Kibana
setup.kibana:
host: "127.0.0.1:5602" # kibana地址
username: "elastic" # kibanna账户密码,根据场景填写
password: "elastic"
#-------------------------- Elasticsearch output
output.elasticsearch:
hosts: ["127.0.0.1:9200"] # es地址
username: "elastic" # es账户密码,根据场景填写
password: "elastic"
3、配置模板加载
第一次 启动beat前需要在es里load 对应的template
git clone https://github.com/elastic/packetbeat-dashboards
cd packetbeat-dashboards
sh load.sh -url http://你的IP地址:9200/ -user elastic:elastic
如果先启动了packetbeat,需要删掉packetbeat的es索引及Index Patterns
,再加载模块操作。
Loading dashboards to http://你的IP地址:9200/ in .kibana
{"error":"Incorrect HTTP method for uri [//.kibana] and method [PUT], allowed: [POST]","status":405}No handler found for uri [//.kibana/_mapping/search] and method [PUT]Loading search Cache-transactions:
No handler found for uri [//.kibana/search/Cache-transactions] and method [PUT]
Loading search DB-transactions:
No handler found for uri [//.kibana/search/DB-transactions] and method [PUT]
......
这时,kibana上还看不到Dashboard,启动packetbeat后,就可以看的了
/etc/init.d/packetbeat start
三、基于packetbeat采集MySQL语句,操作审计
packetbeat通过MySQL监听端口、即可进行抓包统计,dashboard可以展示以下等信息:
- SQL语句执行次数排名
- SQL执行响应时间排名
vim /etc/packetbeat/packetbeat.yml
- type: mysql
ports: [3307, 3346]
配置MySQL监听端口,重启即可
四、packetbeat 配置优化
以上基本使用没有问题,但是默认配置,数据量太大了。几台机器一天好几百G的数据,而且这里主要做MySQL审计,所以很多地方可以优化、定制一下
1、设置流量捕获选项
- 嗅探选项配置
目前,Packetbeat有多种流量捕获选项:
pcap
,它使用libpcap库并适用于大多数平台,但它不是最快的选择。af_packet
,它使用内存映射嗅探。此选项比libpcap更快,不需要内核模块,但它是特定于Linux的。
该af_packet
选项也称为“内存映射嗅探”,它使用特定于Linux的 功能。这可能是专用服务器和Packetbeat部署在现有应用程序服务器上的最佳嗅探模式。
它的工作方式是内核和用户空间程序映射相同的内存区域,并在此内存区域中组织一个简单的循环缓冲区。
该af_packet
嗅探器可以进一步调整使用,以换取更多的内存以提高性能。循环缓冲区的大小越大,所需的系统调用越少,这意味着消耗的CPU周期越少。缓冲区的默认大小为30 MB
- ignore_outgoing
如果ignore_outgoing
启用该选项,Packetbeat将忽略从运行Packetbeat的服务器发起的所有事务。
当两个Packetbeat实例发布相同的事务时,这很有用。要删除重复项,可以packetbeat.ignore_outgoing
在其中一台服务器上启用该选项。
packetbeat.interfaces.device: any
packetbeat.interfaces.snaplen: 1514
packetbeat.interfaces.type: af_packet
packetbeat.interfaces.buffer_size_mb: 100
packetbeat.ignore_outgoing: true
2、设置流以监控网络流量
要配置流,请使用 配置文件packetbeat.yml
中的packetbeat.flows
选项。默认情况下启用流量。如果配置文件中缺少此部分,则禁用网络流。
packetbeat.flows:
这里不需要,关闭后,数据量减少70倍左右
3、指定要监视的事务协议
先介绍下常用协议选项,以下选项适用于所有协议:
- enabled
启用的设置是布尔设置,用于启用或禁用协议,而无需注释掉配置节。如果设置为false,则禁用协议。 默认值是true。
send_request
如果启用此选项,请求(request
字段)的原始消息将发送到Elasticsearch。默认值为false。当您要索引整个请求时,此选项很有用。请注意,对于HTTP,默认情况下不包括正文,只包含HTTP标头。
send_response
如果启用此选项,则响应(response
字段)的原始消息将发送到Elasticsearch。默认值为false。如果要索引整个响应,此选项很有用。请注意,对于HTTP,默认情况下不包括正文,只包含HTTP标头。
processors
要应用于协议生成的数据的处理器列表。
有关在配置中指定处理器的信息,请参阅 [筛选并增强导出的数据]。
4、过滤并增强导出的数据
您可以在配置中定义处理器,以便在将事件发送到配置的输出之前处理事件。
如果要删除所有成功的事务,可以使用以下配置:
processors:
- drop_event:
when:
equals:
http.response.code: 200
or
该or
运算符接收条件列表。
例如,要配置条件 http.response.code = 304 OR http.response.code = 404
:
or:
- equals:
http.response.code: 304
- equals:
http.response.code: 404
如题,这里做MySQL审计,一般增删改是比较需要的,二查询操作可以先过滤掉,可以如下实现:
- type: mysql
ports: [3307, 3346]
processors:
- drop_event:
when:
or:
- equals:
method: SELECT
- equals:
method: SHOW