🏡

OSSを組み合わせてWi-Fiの無線を可視化する③ Elasticsearch構築編

に公開

前回の投稿はこちら。kismetの構築を行いました。
https://zenn.dev/labathome/articles/188ad7d25fb4a0

kismet+ElasticsearchでWi-Fiサーベイツールを作る。
今回はElasticsearchの構築部分について説明します。

Elasticsearchをインストールする。

今回必要となるElasticsearchはElasticsearch本体、Logstash、Kibanaの3つのコンポーネントをインストールする必要があります。
今回ははkismetとはkismetとは別ホストにインストールします。

Elasticsearch本体のインストール

基本的には公式に従いインストールを進めましょう。
https://www.elastic.co/guide/en/elasticsearch/reference/8.18/deb.html

注意点としてはインストール途中にパスワードが出力されているので控えておいて

export ELASTIC_PASSWORD="your_password"

こちらに入力することでしょうか。
sudo systemctl start elasticsearch.serviceまでできれば一旦インストールは出来ました。

シングルノード起動

今回はクラスタ構成ではなくシングルノードでよいですから、その設定をしておきます。
また、外部ノードからのアクセスを許容する設定とセキュリティ無効の設定をします。(ローカルな検証環境のため)

$ sudo vim /etc/elasticsearch/elasticsearch.yml


#--------------------------------- Discovery ----------------------------------
# Pass an initial list of hosts to perform discovery when this node is started:
# The default list of hosts is ["127.0.0.1", "[::1]"]
#
#discovery.seed_hosts: ["host1", "host2"]
#
# Bootstrap the cluster using an initial set of master-eligible nodes:
#
#cluster.initial_master_nodes: ["node-1", "node-2"]
#
# For more information, consult the discovery and cluster formation module documentation.
#
discovery.type: "single-node"

# Allow HTTP API connections from anywhere
# Connections are encrypted and require user authentication
http.host: 0.0.0.0

#----------------------- BEGIN SECURITY AUTO CONFIGURATION -----------------------
#
# The following settings, TLS certificates, and keys have been automatically
# generated to configure Elasticsearch security features on 22-06-2025 06:36:58
#
# --------------------------------------------------------------------------------

# Enable security features
xpack.security.enabled: false

以下の三点が変更点です。
discovery.type: "single-node"
http.host: 0.0.0.0
xpack.security.enabled: false → trueをfalseに変更

$ sudo systemctl restart elasticsearch.service

Elasticsearchを再起動しておきます。

logstashのインストール

こちらも基本的には公式を参考にインストールします。
https://www.elastic.co/docs/reference/logstash/installing-logstash#_apt
インストール完了したら起動しましょう。

$ sudo /usr/share/logstash/bin/logstash -f /etc/logstash/conf.d/logstash.conf 

Kibanaのインストール

こちらも基本的には公式を参考にインストールします。
https://www.elastic.co/docs/deploy-manage/deploy/self-managed/install-kibana-with-debian-package

3つのパッケージともに永続化したい場合はsystemctl enableしておきます。

これでElasticsearchのインストールは完了です。

kismetとのデータ連携 Kibanaへの可視化

KismetのAPIを使ってLogstashに取り込んでKibanaで可視化する設定までが公開されていますので
こちらに従って設定していきます。一部補足します。
https://github.com/developingchase/wawkelk

Kismet APIへのアクセスファイルを編集

https://github.com/developingchase/wawkelk/blob/main/logstash_kismet_device_activity.conf
このファイルを/etc/logstash/conf.d/に置きます。

 url => "http://192.168.0.100:2501/devices/last-time/-305/devices.ekjson"

IPアドレスはkismetのIPアドレスに変更します。

body => 'json={"fields":["kismet.device.base.type","kismet.device.base.location","kismet.device.base.tags","kismet.device.base.manuf","kismet.device.base.num_alerts","kismet.device.base.server_uuid","kismet.device.base.last_time","kismet.device.base.frequency","kismet.device.base.channel","kismet.device.base.crypt","kismet.device.base.commonname","kismet.device.base.name","kismet.device.base.phyname","kismet.device.base.macaddr","kismet.device.base.key","kismet.device.base.key","kismet.device.base.packets.rx","kismet.device.base.packets.tx","kismet.device.base.signal"]}'

ここを編集することで取得できる内容が変わりますが、Kismet APIの項目に準じますのでAPIの理解が必要です。

Elasticsearchのインデックス作成

https://github.com/developingchase/wawkelk/blob/main/mappings.md
Kismet Device Activityの項目をコピーしてDev Toolsに貼り付けます。


貼り付け後再生ボタンを押す。(画像は既に作成済みで同じインデックスを作成しようとしているためにBad Requestになっている。)

補足情報

PUT kismet_device_activity/_settings
{
  "index.mapping.total_fields.limit": 1000000
}

追加でこちらもDev Toolに張り付付けてください。アイテムの保存数が拡張されます。
(Defaultでは1,000アイテム)

Data viewsの作成

メニューのStack Management→Data Views


indexは先ほど作成したkismet_device_activity
Timestampはkismetdtgを選択してSave dataする。

Configを選んでLogstashを起動する

/usr/share/logstash/bin/logstash -f /etc/logstash/conf.d/logstash_kismet_device_activity.conf

実行するとターミナル上にログが出てきます。こんな感じ

ここまでできれば完成間近!!

取得データの確認

Analytics→Discoverを開く。データ取得ができていればこのように取得データが一覧で表示されます。

Dashboardsの作成

あとは好きなようにダッシュボードを構成すればOK


Create Visualizationを押して表示したいデータを選択します。



見れるWi-Fiデータは無数にあるので可視化したいIEEE802.11のフレーム情報を選んで試行錯誤してみてください!

Discussion