コンピュータのパケットをElasticSearchにマッピング


フレキシブルリサーチでパケットを収集し、リアルタイムで保存したいです.
だから私はワイルシャーク指令にtsharkという機能があることに気づいた.
tsarkに関連するコマンドは、このサイトで表示できます.
今回はリアルタイムではなく、サンプルでデータを生成してから挿入するプロセスです.

1.t-sharkコマンドの使用


端末を開き、次のコマンドを入力します.
brew install wireshark
tshark -T ek -j "http tcp ip" -P -c 10> file.json
macos規格であるためbrewコマンドを使用しました.
その後、パケットが収集されている様子を見ることができます.私はまず10個のパケットを集めてテストを行いました.

2.ElasticSearchを開く


まずESを開く
elasticsearch
このように開くとpostmanを実行してインデックス情報を送信します.

3.パケットデータインデックス情報マッピング

http://localhost:9200/_template/packets
{
  "template": "packets-*",
  "mappings": {
      "dynamic": "false",
      "properties": {
        "timestamp": {
          "type": "date"
        },
        "layers": {
          "properties": {
            "frame": {
              "properties": {
                "frame_frame_len": {
                  "type": "long"
                },
                "frame_frame_protocols": {
                  "type": "keyword"
                }
              }
            },
            "ip": {
              "properties": {
                "ip_ip_src": {
                  "type": "ip"
                },
                "ip_ip_dst": {
                  "type": "ip"
                }
              }
            },
            "udp": {
              "properties": {
                "udp_udp_srcport": {
                  "type": "integer"
                },
                "udp_udp_dstport": {
                  "type": "integer"
                }
              }
            }
          }
        }
      }
    }
}
このように、以下の結果を以下に示す.

4.bulkAPIとして挿入


次にbulk APIを使用してデータを挿入してみます.
curl -s -H "Content-Type: application/x-ndjson" -XPOST "localhost:9200/_bulk" --data-binary "@file.json"
しかし、このエラーが発生しました.
{
"index":{
          "_index":"packets-2021-08-12",
          "_type":"doc",
          "_id":"7YJ9OXsBmTkfGvNThnG9",
          "status":400,
          "error":{
          "type":"illegal_argument_exception",
          "reason":"Rejecting mapping update to [packets-2021-08-12] as the final mapping would have more than 1 type: [_doc, doc]"
          }
	}
}
このエラーは以前ES問題についてシュートしたエラーです.7バージョンからタイプは必要ありません(6バージョンからdocのみサポートされ、7バージョンから同じなので消えます).タイププロパティによって競合が発生します.
これで、jsonのデータに変更し、typeフィールドを削除し、bulkAPIを使用する必要があります.
viエディタを開いてjsonデータを次のように変更しました.
{"index":{"_index":"packets-2021-08-12"}}
{"timestamp":"1628716896960","no_":"1","time":"0.000000","source":"X.X.X.X","destination":"X.X.X.X","protocol":"TCP","length":"54","info":"443 → 58739 [ACK] Seq=1 Ack=1 Win=775 Len=0"}
その後、bulk APIを再度使用すると、次の結果が得られます.

5.SearchAPIを使用してデータを検証する


postmanで確認するのは簡単なので、次のようにしました.

その結果,このように入れられた2つのパケットが確認された.

6.Kibanaによるデータ検証


パソコンをmacbookに変えたのに、インストールされていません.できるだけ早くインストールします.
brew install elastic/tap/kibana-full
その後kibanaを実行します.うん.基本的にダッシュボードを設定する内容は1つもないので、macbookを基準にキーボードを設定する内容を個別に位置決めします.
次のポスターで確認しましょう!
  • キー溝または設定
  • ElasticSearchにリアルタイムでデータを収集させる(Beats、Logstashを使用)