低予算で始めるArkimeによるOT IDS運用 - 実践ガイド

セキュリティ監視に関心がある方へ向けて、OSSの通信監視・分析ツールであるArkime(発音 /ɑːrkɪˈmi/ アーキミ-)の環境構築手順を紹介します。パッとArkimeを試してみたい方には使える内容かと思います。 Arkimeの雰囲気を知らない方へOT環境を題材にOT IDSがわりに使った雰囲気も書きました。

はじめに

サイバーディフェンス研究所の安井です。長年制御システムを開発してきた経験から制御システムセキュリティ向上に取り組んでいます。
OT IDSは、運用している環境に影響を与えたく無いという組織への現実解であり、この種のツールに触れる方が増えればなぁと常々思っています。が、現実には様々な事情で手が出ない方が多い気もしています。昨年公開したOTネットワークセキュリティ監視の資産管理と振る舞い検知が手軽に試せた - 元有償のパッシブ型監視ツールを適用した模擬制御システムを攻撃 -で紹介したIDSツールの無償公開も終わってしまっているようです。そんな中、OSSな通信監視・解析ツールであるArkimeがOT環境におけるIDS体験のはじめの一歩になりそうと気づきました。

なお、Arkimeのトップページに「Arkime is not meant to replace Intrusion Detection Systems (IDS) but instead provides more visibility.」と記載しているとおり、Arkimeが丸ごとIDSの代わりになるものではありません。とはいえ、触ってみると「OSSでここまでやってくれるのか!しかも、そこらに転がっていそうなPCだけで!」と感動を覚えるレベルにはあるとは思います。

保証はしませんが、今読み始めてから半日後には通信監視が始められている ぐらいの記述精度を目指しました。

Arkimeに興味が湧いた方は、OT環境にかかわらずぜひためしてみてください。

OTに関わる方へ

2024年2月7日JPCERT/CC開催の制御システムセキュリティカンファレンス2024において「攻撃者視点から見たOT環境の通信監視スモールスタートから始めてみよう」というタイトルで講演を行う予定です。 弊社が保有する模擬制御システム環境に対してサイバー攻撃の探索活動を行い、Arkimeで通信監視した結果を紹介し、OTにおけるセキュリティ対策として通信監視が相性がよく「こんなやり方をすれば簡単に試せます。皆さんも試してみてください!」という話しをする予定です。 

とはいえ、Arkimeをインストールできなければ試せるわけもなく、講演でインストール手順を説明するわけにもいかず。Arkimeのサイトのinstallの項を参照すればインストールはできるのでしょうが、インストールに苦労する人もいると思います。というのも当初苦労したのは自分だったりします。例えばOSSツールに慣れた方でもElastickSearchを最新のバージョンにしようとしたりOpenSearchに置き換えようと思ったりなど、セキュリティだラインセンスだと考え始めるとハマり出しそうです。 手っ取り早く、実際に、すぐ試したいと思った方への手助けとなればと思い、具体的な環境構築手順を先行して公開するものです。ちなみに2023年12月7日点で動作確認した内容です。

対象読者

パケットキャプチャによる通信監視に興味がある方

できること

オープンソースのネットワーク監視・分析ツールであるArkime の環境構築方法とOT IDSとしての基礎的な使い方を知れる。

Arkime環境構築手順

ここからArkimeの環境構築手順を説明します。 実際作業する時にじっくり見返していただくとして、とりあえずざっとスクロールして、ああこんなぐらいでできるんだねと思ったら、後半のArkimeの使い方へ進んでください。

  • 前提知識

    • Linuxの操作経験あり
    • Linuxをインストールする知識あり
  • 前提条件

    • 物理NICを1つ以上持つPCを用意済

Ubuntu Desktop 22.04.3 LTS 環境構築

「ubuntu 22.04 desktop インストール」のキーワードで探せばインターネット上にubuntu22.04の環境構築情報はたくさんあるので、好みの方法でPCにUbuntu Desktop 22.04.3 LTSをインストールしてください。(詳細手順説明省略)

インストール自体は、問題なく終わると思いますが、デスクトップログインしてterminalが開けなくて、いきなり心がおられる人が続出するかと思います。そんな方は、ubuntu(virtual box)でターミナルが起動しないときの対処の記事を参照すると解決できるでしょう。

ここまで終わったらrootユーザになり、インストールしたユーザに、sudo権限をつけて再起動してください。

# gpasswd -a ユーザ名 sudo
# reboot

Ubuntu 最新状態にupdate

Ubuntuを最新状態にupdateします。

$ sudo apt-get update
$ sudo apt-get upgrade -y

ここまでは、通信環境やlinuxインストールの慣れにもよりますが1,2時間で終わったと思います。残り作業も1,2時間です。

curl,java,inotify-tools,wiresharkのインストール

Arkimeに必要な各種ツールをインストールします。

$ sudo apt-get install curl -y
$ sudo apt-get install openjdk-11-jdk -y
$ sudo apt-get install inotify-tools -y
$ sudo apt-get install wireshark -y

補足:上記のうちArkimeに必須なのはcurlとopenjdk-11-jdkのみです。 本稿では、pcapファイルをarkimeに取り込む使い方を紹介しており、pcapファイルが生成された事をチェックするためにinotify-toolsを使用しています。wiresharkはArkimeとは直接関係はありませんが、pcapファイルを参照する際に便利なためインストールしています。また、以降で出てくるdumpcapコマンドはwiresharkに含まれるコマンドです。

Arkime環境構築

ここからが、Arkime本体のインストールと設定手順です。なお、以降、キャプチャするパケットを取り込む有線LANのNIC(network interface card)は、enp0s8として説明します。

Arkime ダウンロードとインストール

Arkimeをダウンロードしインストールします。

$ wget https://s3.amazonaws.com/files.molo.ch/builds/ubuntu-22.04/arkime_4.6.0-1_amd64.deb
$ sudo apt-get update
$ sudo apt-get install ./arkime_4.6.0-1_amd64.deb -y

Elastic Search ダウンロードとインストール

Arkimeは、内部データベースとしてElastic Searchを使うためElastic Searchのダウンロードとインストールを行います。

$ wget -qO - https://artifacts.elastic.co/GPG-KEY-elasticsearch | gpg --dearmor | sudo tee /usr/share/keyrings/elastic-archive-keyring.gpg >/dev/null
$ echo "deb [signed-by=/usr/share/keyrings/elastic-archive-keyring.gpg] https://artifacts.elastic.co/packages/7.x/apt stable main" | sudo tee /etc/apt/sources.list.d/elastic-7.x.list
$ sudo apt-get update
$ sudo apt-get install elasticsearch -y

Elastic Searchで使用するメモリ設定

/etc/elasticsearch/jvm.options.d/heap.optionsにメモリ設定を行います。PCのメモリ全体の半分を目安としてください。

$ echo -e '# Xms represents the initial size of total heap space\n# Xmx represents the maximum size of total heap space\n\n-Xms512m\n-Xmx512m' | sudo tee /etc/elasticsearch/jvm.options.d/heap.options

Arkime設定

Arkimeの初期設定を行います。パケットを取り込むNICはenp0s8、Passwordはchangemeとして記載してあるのでご自身の環境にあわせてください。

$ sudo /opt/arkime/bin/Configure
Found interfaces: lo;enp0s8
Semicolon ';' seperated list of interfaces to monitor [eth1] enp0s8
Install Elasticsearch server locally for demo, must have at least 3G of memory, NOT recommended for production use (yes or no) [no] no
Elasticsearch server URL [http://localhost:9200]
Password to encrypt S2S and other things, don't use spaces [no-default] changeme
Arkime - Creating configuration files
Installing sample /opt/arkime/etc/config.ini
Arkime - Installing /etc/security/limits.d/99-arkime.conf to make core and memlock unlimited
Download GEO files? You'll need a MaxMind account https://arkime.com/faq#maxmind (yes or no) [yes] yes
Arkime - Downloading GEO files
2023-10-18 09:08:37 URL:https://www.iana.org/assignments/ipv4-address-space/ipv4-address-space.csv [23329/23329] -> "/tmp/tmp.0sK5HV8Ocj" [1]
2023-10-18 09:08:37 URL:https://raw.githubusercontent.com/wireshark/wireshark/release-4.0/manuf [2176984/2176984] -> "/tmp/tmp.kOi8F6T7Ta" [1]

Arkime - Configured - Now continue with step 4 in /opt/arkime/README.txt

 4) The Configure script can install OpenSearch/Elasticsearch for you or you can install yourself
 5) Initialize/Upgrade OpenSearch/Elasticsearch Arkime configuration
  a) If this is the first install, or want to delete all data
      /opt/arkime/db/db.pl http://ESHOST:9200 init
  b) If this is an update to an Arkime package
      /opt/arkime/db/db.pl http://ESHOST:9200 upgrade
 6) Add an admin user if a new install or after an init
      /opt/arkime/bin/arkime_add_user.sh admin "Admin User" THEPASSWORD --admin
 7) Start everything
      systemctl start arkimecapture.service
      systemctl start arkimeviewer.service
 8) Look at log files for errors
      /opt/arkime/logs/viewer.log
      /opt/arkime/logs/capture.log
 9) Visit http://arkimeHOST:8005 with your favorite browser.
      user: admin
      password: THEPASSWORD from step #6

If you want IP -> Geo/ASN to work, you need to setup a maxmind account and the geoipupdate program.
See https://arkime.com/faq#maxmind

Any configuration changes can be made to /opt/arkime/etc/config.ini
See https://arkime.com/faq#arkime-is-not-working for issues

Additional information can be found at:
  * https://arkime.com/faq
  * https://arkime.com/settings

Elastic Searchの設定

ここでは、Elastic Searchへ、Arkimeの初期情報を登録していきます。

OS起動時に自動でElasticsearchサービスが起動するように設定するとともに起動を行います。

$ sudo systemctl enable --now elasticsearch

Elasticsearchが起動したことを確認します。

$ curl http://localhost:9200
{
  "name" : "arkime",
  "cluster_name" : "elasticsearch",
  "cluster_uuid" : "A9hhRihNSIa11JnLF-AmNw",
  "version" : {
    "number" : "7.17.14",
    "build_flavor" : "default",
    "build_type" : "deb",
    "build_hash" : "774e3bfa4d52e2834e4d9d8d669d77e4e5c1017f",
    "build_date" : "2023-10-05T22:17:33.780167078Z",
    "build_snapshot" : false,
    "lucene_version" : "8.11.1",
    "minimum_wire_compatibility_version" : "6.8.0",
    "minimum_index_compatibility_version" : "6.0.0-beta1"
  },
  "tagline" : "You Know, for Search"
}

このように表示すればOKです。

ElasticsearchへArkimeの情報を初期登録します。

$ sudo /opt/arkime/db/db.pl http://localhost:9200 init

Arkime Adminユーザアカウント生成

ArkimeのAdminユーザアカウントを生成します。以下で、chnagemeとしているところは、Arkime設定時に自身で設定したPasswordにしてください。

$ sudo /opt/arkime/bin/arkime_add_user.sh admin "SuperAdmin" changeme --admin

arkimeviewerサービス起動設定

OS起動時に自動でarkimeviewerサービスが起動するように設定するとともに起動を行います。

S sudo systemctl enable --now arkimeviewer

Arkimeが起動したことを確認します。

$ sudo systemctl status arkimeviewer

結果出力のActive:がactive(running)となっていることを確認できればOKです。

arkimeviewerがElasticsearchの後に起動するように設定します。

$ sudo sed -i 's/network.target/network.target elasticsearch.service/' /etc/systemd/system/arkimeviewer.service
$ sudo sed -i '/After=/a Requires=network.target elasticsearch.service' /etc/systemd/system/arkimeviewer.service
$ sudo systemctl daemon-reload

世界地図上にIPをマッピングさせる(Installing MaxMind Geo free database files )設定

Arkimeには、通信先地域を世界地図上で識別する機能があり、geoipという仕組みを使用して実現しています。この項は、この機能が必要な方のみ実施してください。

geoipupdateをインストールします。

$ sudo apt-get install geoipupdate

Maxmindのサイトで、アカウント作成し、GeoIP.confをダウンロードし、/etc/にコピーしておきます。(詳細手順説明省略)

GeoIPをアップデートします。

$ sudo geoipupdate

Arkimeの初期動作確認

ブラウザで以下を開きます。

http://localhost:8005

ユーザ、パスワードは、admin/changeme(インストール時に設定したもの)でログインし、Arkimeの画面が表示することを確認できればOKです。この時点では、まだパケットをキャプチャしていない状態です。

必要なパケットのみPCAPに保存してArkimeに取り込み監視する設定

ここでは、Arkimeを使ったことがない人向けに、一旦dumpcapツールでキャプチャしたパケットをPCAPファイルに保存してから、Arkimeに取り込む方法に関する設定の手順を紹介します。 なお、この手順ではなく、Arkimeの機能を使ってパケットキャプチャからパケット取り込みまで行いたい場合は、次の項の「参考:Arkimeに慣れた方へ」を参照してください。

enp0s8のNICに到着する全てのパケットをリアルタイムでarkimeに取り込むと、計算機のリソースを圧迫して使えない可能性があるため、とりこみたくない通信プロトコルはキャプチャ対象から除き、一定周期毎に分割してpcapファイルに保存します。 ここでは、以下の内容における手順を示します。

項目 内容
pcapファイル保存ディレクトリ /data/
キャプチャ対象外 multicast,broadcast,ip6,icmp
キャプチャ周期 600秒
保存期間 7日

なお、pcapファイル保存ディレクトリ、何をキャプチャ対象外とするか、どの周期でキャプチャするか、何日分のデータを残すか は自身の環境にあわせて決めてください。

/data/ディレクトリを作成します。

$ sudo mkdir /data

エディタで以下内容の/data/arkime-import.shファイルを作成します。

#!/bin/bash

# 不要なパケットは対象外として600秒周期でキャプチャする。
dumpcap -i enp0s8 -f "not broadcast and not multicast and not ip6 and not icmp" -b duration:600 -w /data/cap.pcap &

# 新規ファイルが生成されていればArkimeに取り込む。
CAPTURE_DIR="/data"
ARKIME_BIN="/opt/arkime/bin/capture"
inotifywait -m -e close_write --format "%w%f" $CAPTURE_DIR |while read FILE
do
  $ARKIME_BIN -r $FILE
done

上記で作成したコマンドをサービスとして登録するために、エディタで以下内容の、/etc/systemd/system/arkime-import.serviceファイルを作成します。

[Unit]
Description=Arkime Import Script
After=network.target

[Service]
Type=simple
Restart=on-failure
ExecStart=/bin/bash /data/arkime-import.sh

[Install]
WantedBy=multi-user.target

OS起動時に自動でarkime-importサービスが起動するように設定するとともに、起動をおこないます。

$ sudo systemctl enable --now arkime-import

毎日午前0時に、7日前より古いpcapファイルおよびArkimeに取り込んだデータを消去するようにcronに以下内容を設定します。(cronの設定手順の説明は省略)

0 0 * * * find /data -name "*.pcap" -type f -mtime +7 -exec rm {} \;
0 0 * * * /opt/arkime/db/db.pl http://localhost:9200 expire daily 7

参考:Arkimeに慣れた方へ

上記の「必要なパケットのみPCAPに保存してArkimeに取り込み監視する設定」は、dumpcapコマンドで生成したpcapファイルをcaptureコマンドを使ってarkimeに取り込む方法を用いていますが、一般的には、pcapをcaptureコマンドで取り込む方法でなく、Arkimeの設定ファイルである/opt/arkime/etc/config.iniを設定して使用する方が大半とは思います。慣れた方は、config.iniを設定する方法と、pcapファイルを取り込む方法の両方を試して違いを確認してみるとよいと思います。では、ここからconfig.iniを設定する方法の説明です。

例えば、multicast,broadcast,icmp,icmp6,ip6を対象外とし、600秒毎にセッション情報を書き出し、pcapファイルを10分周期で保存したい場合、config.iniに以下のパラメータを設定することで実現できます。

dontSaveBPFs=multicast:0; broadcast:0; icmp:0; ip6:0
tcpSaveTimeout=600
maxFileTimeM=10

dontSaveBPFsは、キャプチャしないパケットをフィルタするための設定です。例えばmulticast:0という設定は、multicastのパケットは全くキャプチャしないという意味です。:0の部分が:10とした場合、当該セッション(10分)については、10パケットしかとりこまないという意味になります。フィルタする条件を工夫することで計算機のリソースに応じてキャプチャするパケットを制限してください。

config.iniの詳細は、以下を確認してください。

https://arkime.com/settings

arkimecaptureサービス起動設定

「必要なパケットのみPCAPに保存してArkimeに取り込み監視する設定」の手順では、captureコマンドでArkimeにpcapファイルをとりこんでいましたが、一般的には、config.iniの設定内容に従ってarkimecaptureサービスでNICに流れるパケットを常時Arkimeに取り込みます。ここでは、arkimecaptureサービスの設定を説明します。

OS起動時に自動でarkimecaptureサービスが起動するように設定するとともに起動を行います。

S sudo systemctl enable --now arkimecapture

arkimecaptureが起動したことを確認します。

$ sudo systemctl status arkimecapture

結果出力のActive:がactive(running)となっていることを確認できればOKです。

なお、古いpcapは自動的に消去されますが、ElasticSearch内の古いデータは、config.iniの設定では自動消去はされないため、cronに以下を登録して消去するようにしてください。(cronの設定手順の説明は省略)

0 0 * * * /opt/arkime/db/db.pl http://localhost:9200 expire daily 7

インストール設定完了後の後始末

本項は、必要と思う方のみ実施してください。

この後ArkimeをインストールしたPCを監視したいシステムのネットワークに接続した際に、システム側へパケットを送信することが無いように、また、ネットワーク経由で本PCに攻撃をうけ侵入されることを防ぐためパケットをキャプチャするNICであるenp0s8のIPアドレスを未設定とします。

# 設定を戻したい時のために、現在の設定を事前バックアップ
$ sudo cp -p /etc/netplan/01-network-manager-all.yaml /etc/netplan/01-network-manager-all.yaml.bak
# 設定を書き換え
$ echo -e "network:\n  version: 2\n  ethernets:\n    enp0s8:\n      dhcp4: false\n      dhcp6: false\n      optional: true" | sudo tee /etc/netplan/01-network-manager-all.yaml
# 変更を適用
$ sudo netplan apply

以上で環境設定は完了です。

実際のシステムのネットワークへArkimeのPCを接続して使ってみましょう。

本稿では、リアルタイムでLANに流れているパケットをキャプチャして利用する方法を説明します。なお、後述の参考の項に記載したとおり事前に取得済みのpcapファイルをArkimeに取り込むことも可能です。

キャプチャしたいネットワークのスイッチにミラーポートを設定して、ミラーポートとArkimeをインストールしたPCのNIC(enp0s8)をLANケーブルで繋いでください。 ミラーポートの設定方法はスイッチの機種毎に異なるため、ご自身で調べてください。

pcap保存ディレクトリにpcapファイルが生成されていれば、正しくパケットキャプチャが行われているということになります。

なお、どこに流れるパケットをキャプチャして監視すべきかは、基本的に以下の順の優先度で考えることが良いと思います。

  1. 外部ネットワークとの境界部分。
  2. 重要な機器の通信
  3. 人間が操作する機器の通信

とはいえ、コストも考慮しながら考え出すと奥が深い世界ですので、まずは、どこかに適用してどのような情報が見れるのかを試してみることをお勧めします。 常時監視しなくても、現状の資産把握や通信状況把握をするために様々な箇所を順番にキャプチャして見るという使い方もありだと思います。 頭で考えるよりは、まずは経験してみた方が、どこをキャプチャすべきかの勘所が見えてくるのではないでしょうか。

Arkime使い方

ここでは、OTシステムネットワークで試す方向けに、最低限の基礎的な使い方を紹介します。 なお、Arkimeの一般的な使い方をさっと知りたい方は、 パケット収集ツール「Moloch」で収集したパケットを分析してみよう という記事が分かりやすいと思います。MolochはArkimeの旧名称です。しっかり調べたい方は、Arkime公式ページ で確認してください。

ブラウザでアクセス

Ubuntuにログインして、画面上からブラウザで以下URLにアクセスします。パスワードはArkimeインストール時に設定したものを使用します。

http://localhost:8005
admin/changeme

Connections画面

Connectionsタブをクリックすると、ネットワークトポロジ図が表示します。

この画面で、あやしい通信が発生していないか直感的に確認することができます。

見たい期間をStart, Endで指定します。
Boundingは、DatabaseかSession Overlapsを選びます。マニュアルを読んでも両者の実質的な違いがわかりにくいと思いますが、まずはリアルタイム性重視ならセッションの途中でも情報を表示してくれるが不完全性がありえるSession Overlapsを選択し、時間おいてから解析する際に確定情報で見たいと場合は、セッション完了後にならないと情報を表示してくれないがデータベースに書き込み済みで正確な情報を表示してくれるDatabaseを選択するという理解で選べば良いと思います。
Query Sizeは、最大値を選択します。各種検索条件で絞り込んだセッションのうち、ここに設定したセッション数を上限に表示対象とされるのですが、どのセッションが表示対象となるかの優先度はArkime実装次第なので最大としておくのが無難という意味です。表示漏れがあるようなら期間などの検索条件で絞り込むのがよいでしょう。ちなみに、セッションの概念を雑に説明すると、TCPの場合だとコネクション確立からコネクション切れるまでが1セッションというものですが、Arkimeのconfig.iniの設定次第でコネクション確立中でも設定時間でセッションを細かく分けるなどもできます。
最新状態を見たいときは、ブラウザを表示更新してください。 Arkimeは、自動表示更新ではありません。

これらの概念を理解できていないと、最初使い始めた時に、パケットキャプチャできているのに思った通りに表示してくれていないな?とストレスを覚えるかもしれません。実は、これがArkime設定の際に、慣れていない始めた使う方向けに「 必要なパケットのみPCAPに保存してArkimeに取り込み監視する設定」を最初に紹介した理由です。この中でおこなっているように独自処理を組み込んでpcapに落としてからcaptureで取り込むと、pcap単位で別セッションとして扱うので上記のストレスがなくなると思ったからです。上記の概念が理解できていれば、「 必要なパケットのみPCAPに保存してArkimeに取り込み監視する設定」などせずに、Arkimeがconfig.iniに細かいところに手が届くように使いこなせないぐらい多種多様な設定パラメータを用意してくれていますのでconfig.iniで設定した方が楽ですし便利です。

その他のパラメータは以下としてください。

Src: Src IP
Dst: Dst IP:Dst Port
Src & Dst Min.Connections 1
Node/Link Weight Sessions
Baseline 1 week
ここでは、送信元IPアドレスと、送信先IPアドレス・ポートでネットワークトポロジ表示を構成し、セッション数が多いものを大きく太く表示させ、過去と見たい期間の変化を比較するための過去情報期間(ベースライン)を1週間としてます。

同じ図を再掲します。

図をみると、見たい期間の以前一週間分と比較して、新たに出現したノードに星マークが表示されています。
この図には出現していませんが、見たい期間の以前一週間分と比較して、消えたノードには侵入禁止マークが表示されます。
黒いノードは送信元。緑のノードは、送信先です。

この画面により、以前一週間分にはなかった通信ルートが、見たい期間に新たに出現していたら、「あやしい通信先だな、何か攻撃兆候が発生したのか?」という発見ができます。 発見したあやしい通信の詳細を確認したい場合は、事項に示すSessions画面で確認ができます。

Sessions画面

Sessionsタブをクリックすると、Session一覧が表示します。

右上に、世界地図が表示しており、インターネット上のグローバルIPアドレスと通信しているSessionがある場合は、世界地図上でどの国と通信しているのかを見ることができます。 普段インターネットと通信を行わない制御システムで、海外のサイトとの通信がみつかったら、あやしそうと気づけると思います。 海外との通信にかかわらず管理対象外のアドレスやポート、想定時間外の通信、想定より多量の通信などがあやしそうです。 Connections画面で、あやしいと思ったSessionを選択して詳細を見てみます。

制御システムの運用と関係ない通信や、誰も保守作業をしていないはずの時間帯に発生している保守作業用の通信などが行われており、Databyes/Bytesのカラムで情報がやりとりされていることが分かった場合は、さらにあやしさは強まります。 /data/arkime-import.shスクリプトにてdumpcapでpcapを一旦ファイルにおとしてからcaptureコマンドでArkimeにとりこんでいる場合は、キャプチャした生データであるpcapファイルのフルパスも表示しているので、wiresharkなどでpcapの内容詳細を確認してみたり更なる調査を行うことを検討してください。

基礎的な使い方の説明は以上とします。 

参考情報

Arkimeをはじめて使う方が最低限知っておくと便利なコマンドをいくつか記載しておきます。

dumpcapでの特定のIPアドレス・ポートをフィルタする方法

dumpcapで、特定の送信元IPアドレス192.168.10.5、送信先IPアドレス192.168.10.204、送信先ポート502を除外するときのBPF(Berkley Paket Filter)指定方法例です。

dumpcap -i <インターフェース名> -f "not (src host 192.168.10.5 and dst host 192.168.10.204 and dst port 502)"

pcapファイルをArkimeに取り込む方法

すでにキャプチャ済みのpcapファイル(/tmp/system1-lan1.pcap)を取り込んで調査する方法です。

$ sudo /opt/arkime/bin/capture -r /tmp/system1-lan1.pcap

Arkimeに取り込んだデータを全て消去する方法

Arkimeのデータベース内のキャプチャしたデータを全て消去する方法です。

$ sudo /opt/arkime/db/db.pl http://localhost:9200 wipe

まとめ

Arkimeの環境構築手順と、OTネットワーク環境における基礎的な使い方を紹介しました。

ぜひ自ら試してみてください。

注意事項

ツールが準備できれば、すぐに運用環境での監視が始められるというものでもないと思います。そのあたりのことも軽くOTネットワークセキュリティ監視の資産管理と振る舞い検知が手軽に試せた - 元有償のパッシブ型監視ツールを適用した模擬制御システムを攻撃 -に書いていますのでよろしければご覧ください。

本稿で記載した手順は、ArkimeをインストールしたPCには悪意を持った人がアクセスできないことを前提として、初心者が簡単に自身が管理する環境で利用できるようになることに重点をおいて記載しました。そのため、Arkime自体のセキュリティについては言及していません。たとえばPCに簡単なパスワードを設定してあるところへ出来心をもった従業員が認証突破して保存された通信パケットをごっそり盗んだりしたら大変ですよね。とか、実際に運用しようとし出すと考えることはいろいろあるとは思いますが、Arkime自信のセキュリティ対策に触れ出すと話しが発散しそうなので言及しませんという意味です。

というわけで、本稿に記載されている情報を参照して発生した事象に対して、なにかを保証するものではありませんので、ご利用の際は自己責任でご活用ください。 という免責の言葉で締めさせていただきます。

© 2016 - 2024 DARK MATTER / Built with Hugo / Theme Stack designed by Jimmy