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
三、基於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