CIDR表記でIPアドレスを検索する方法
はじめに
Kibanaにおいて、IPアドレスをCIDR表記を用いて検索する方法を書きます。
利用環境
product | version |
---|---|
Kibana | 6.5.4 |
Elasticsearch | 6.5.4 |
Winlogbeat | 6.5.4 |
Sysmon | 8.04 |
前提
Sysmonによって出力されたSysmon EventID 3のNetwork connectionログを利用します。
Windowsイベントログとして出力されたSysmonログをWinlogbeatでElasticsearchに取り込み、KibanaでCIDR表記の検索をします。
Kibanaとは
Elasticsearchを開発しオープンソースとして提供しているElastic社のBIツールになります。
Elasticsearchに格納されているデータをWebブラウザで検索したり、グラフで可視化したりするためのツールです。
【参考URL】
・Kibanaとは
datatypeをipに設定する
Elasticsearchは事前にスキーマ定義が必要ないスキーマレスアーキテクチャになります。
スキーマを定義せずにLogstashやBeatsでログを取り込むと多くのフィールドは文字列データ(textやkeyword)
として取り込まれます。
今回検索に利用するフィールドはevent_data.DestinationIp
となります。
値としてIPv4やIPv6が入りますが、WinlogbeatのIndex Templateではdatatype
がstring(keyword)
として取り込まれCIDR表記で検索できません。
GET /winlogbeat-6.5.4-2018.12.29/_mapping/doc/field/event_data.DestinationIp
{
"winlogbeat-6.5.4-2018.12.29" : {
"mappings" : {
"doc" : {
"event_data.DestinationIp" : {
"full_name" : "event_data.DestinationIp",
"mapping" : {
"DestinationIp" : {
"type" : "keyword" ←ここの値
}
}
}
}
}
}
}
event_data.DestinationIp
フィールドのIPアドレス件数を集計した表グラフにおいて
"172.217.0.0/16"
と検索してもNo results found
となってしまいます。
一度取り込んだデータのdatatype
は変更出来ないようです。
Index Templateを更新して新たに取り込むデータにおいて、datatype
がip
となるようにします。
PUT _template/winlogbeat-6.5.4
{
"index_patterns" : [
"winlogbeat-6.5.4-*"
],
"settings" : {
"index" : {
"mapping" : {
"total_fields" : {
"limit" : "10000"
}
},
"refresh_interval" : "5s",
"number_of_routing_shards" : "30",
"number_of_shards" : "1"
}
},
"mappings" : {
"doc" : {
"_meta" : {
"version" : "6.5.4"
},
"date_detection" : false,
(中略・・・)
"event_data" : {
"type" : "object",
"properties" : { ←追記(179行目)
"DestinationIp" : { ←追記(180行目)
"type" : "ip" ←追記(181行目)
}
}
},
CIDR表記で検索する
2019年01月13日(月)のログを新しいIndex Templateを利用して取り込みます。
新たに生成されたIndexであるwinlogbeat-6.5.4-2019.01.13
において、datatype
がip
となっていることを確認します。
GET /winlogbeat-6.5.4-2019.01.13/_mapping/doc/field/event_data.DestinationIp
{
"winlogbeat-6.5.4-2019.01.13" : {
"mappings" : {
"doc" : {
"event_data.DestinationIp" : {
"full_name" : "event_data.DestinationIp",
"mapping" : {
"DestinationIp" : {
"type" : "ip" ←ここの値
}
}
}
}
}
}
}
対象期間を2019/01/13に変更します。
今度は"172.217.0.0/16"
と検索すると該当するIPアドレスのみが表示されるようになりました。
検索バー下にあるAdd a filter
ではOR条件の検索はできませんが、"172.217.0.0/16" OR "13.107.0.0/16"
と検索すれば複数のセグメントを対象にログ検索することも可能です。
意外と便利ですね。
まとめ
いかがでしたでしょうか。
アクセスログやセキュリティログの分析において、送信元や宛先のIPアドレスをレンジで検索したいことは多分にあると思います。
ネットワークエンジニアであれば、CIDR表記でセグメント単位で絞り込むケースもあると思いますので、是非活用してみてはいかがでしょうか。
不明な点、誤植などありましたら、コメントをお願いします!!
参考
Author And Source
この問題について(CIDR表記でIPアドレスを検索する方法), 我々は、より多くの情報をここで見つけました https://qiita.com/hssh2_bin/items/6217068a45c87355fbfd著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Content is automatically searched and collected through network algorithms . If there is a violation . Please contact us . We will adjust (correct author information ,or delete content ) as soon as possible .