1. 程式人生 > >ELK Packetbeat配置使用及MySQL抓包審計

ELK Packetbeat配置使用及MySQL抓包審計

一、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 

overview

三、基於packetbeat採集MySQL語句,操作審計

packetbeat通過MySQL監聽埠、即可進行抓包統計,dashboard可以展示以下等資訊:

  • SQL語句執行次數排名
  • SQL執行響應時間排名

mysql

vim /etc/packetbeat/packetbeat.yml

- type: mysql
  ports: [3307, 3346]

配置MySQL監聽埠,重啟即可

四、packetbeat 配置優化

以上基本使用沒有問題,但是預設配置,資料量太大了。幾臺機器一天好幾百G的資料,而且這裡主要做MySQL審計,所以很多地方可以優化、定製一下

1、設定流量捕獲選項

  1. 嗅探選項配置

目前,Packetbeat有多種流量捕獲選項:

  • pcap,它使用libpcap庫並適用於大多數平臺,但它不是最快的選擇。
  • af_packet,它使用記憶體對映嗅探。此選項比libpcap更快,不需要核心模組,但它是特定於Linux的。

af_packet選項也稱為“記憶體對映嗅探”,它使用特定於Linux的 功能。這可能是專用伺服器和Packetbeat部署在現有應用程式伺服器上的最佳嗅探模式。

它的工作方式是核心和使用者空間程式對映相同的記憶體區域,並在此記憶體區域中組織一個簡單的迴圈緩衝區。

af_packet嗅探器可以進一步調整使用,以換取更多的記憶體以提高效能。迴圈緩衝區的大小越大,所需的系統呼叫越少,這意味著消耗的CPU週期越少。緩衝區的預設大小為30 MB

  1. 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