序章

このシリーズの以前のチュートリアルでは、侵入検知(IDS)および侵入防止(IPS)システムとしてのSuricataのインストール、構成、および実行について説明しました。 また、Suricataのルールと独自のルールの作成方法についても学びました。

このチュートリアルでは、SuricataをElasticsearch、Kibana、およびFilebeatと統合して、ElasticスタックとCentOS 8 Streamを使用して独自のセキュリティ情報およびイベント管理(SIEM)ツールの作成を開始する方法について説明します。 SIEMツールは、イベントデータを収集、集約、保存、および分析して、ネットワークとサーバー上のセキュリティの脅威と疑わしいアクティビティを検索するために使用されます。

独自のSIEMを構築するために使用するコンポーネントは次のとおりです。

  • Elasticsearch は、Suricataサーバーからのセキュリティイベントを保存、インデックス作成、関連付け、検索します。
  • Kibana を使用して、Elasticsearchに保存されているセキュリティイベントログを表示およびナビゲートします。
  • Filebeat を使用して、Suricataのeve.jsonログファイルを解析し、各イベントをElasticsearchに送信して処理します。
  • Suricata は、ネットワークトラフィックをスキャンして疑わしいイベントを検出し、無効なパケットをログに記録するかドロップします。

まず、ElasticsearchとKibanaをインストールして、特定の認証設定で構成します。 次に、FilebeatをSuricataシステムに追加して、eve.jsonログをElasticsearchに送信します。

最後に、SSHとWebブラウザーを使用してKibanaに接続し、Suricataのイベントとアラートを表示するKibanaダッシュボードをロードして操作する方法を学習します。

前提条件

このチュートリアルシリーズをフォローしている場合は、CentOS8StreamサーバーでSuricataを実行しているはずです。 このサーバーは、Suricataサーバーと呼ばれます。

  • それでもSuricataをインストールする必要がある場合は、 CentOS 8StreamにSuricataをインストールする方法を説明するこのチュートリアルに従うことができます。

ElasticsearchとKibanaをホストするための2番目のサーバーも必要になります。 このサーバーは、Elasticsearchサーバーと呼ばれます。 これは、次の機能を備えたCentOS8ストリームサーバーである必要があります。

  • ルート以外のsudoユーザーでセットアップされた4GBのRAMと2つのCPU。 これを実現するには、 CentOS8を使用したサーバーの初期設定に従います。

このチュートリアルでは、両方のサーバーがプライベートIPアドレスを使用して通信できる必要があります。 WireGuard などのVPNを使用してサーバーを接続するか、ホスト間にプライベートネットワークを備えたクラウドプロバイダーを使用できます。 実験のために、Elasticsearch、Kibana、Filebeat、およびSuricataを同じサーバーで実行することもできます。

ステップ1—ElasticsearchとKibanaをインストールする

このチュートリアルの最初のステップは、ElasticsearchサーバーにElasticsearchとKibanaをインストールすることです。 開始するには、次のコマンドを使用してElasticGPGキーをサーバーに追加します。

  1. sudo rpm --import https://artifacts.elastic.co/GPG-KEY-elasticsearch

次に、viまたはお好みのエディタを使用して、/etc/yum/yum.repos.dディレクトリに次の内容のelasticsearch.repoファイルを作成します。 これにより、yumを介して新しいパッケージをインストールするときに、アップストリームのElasticsearchリポジトリが使用されるようになります。

  1. sudo vi /etc/yum.repos.d/elasticsearch.repo
/etc/yum.repos.d/elasticsearch.repo
[elasticsearch]
name=Elasticsearch repository for 7.x packages
baseurl=https://artifacts.elastic.co/packages/7.x/yum
gpgcheck=1
gpgkey=https://artifacts.elastic.co/GPG-KEY-elasticsearch
enabled=0
autorefresh=1
type=rpm-md

viを使用している場合は、変更が終了したら、ESC:xの順に押して、ファイルに変更を書き込んで終了します。

次に、dnfコマンドを使用してElasticsearchとKibanaをインストールします。 Yを押して、GPGキーフィンガープリントに関するプロンプトを受け入れます。

  1. sudo dnf install --enablerepo=elasticsearch elasticsearch kibana

--enablerepoオプションは、/etc/yum.repos.d/elasticsearch.repoファイルのデフォルトの無効設定を上書きするために使用されます。 このアプローチにより、サーバーに他のパッケージ更新をインストールするときに、ElasticsearchパッケージとKibanaパッケージが誤ってアップグレードされないようにします。

パッケージのインストールが完了したら、ip address showコマンドを使用して、サーバーのプライベートIPアドレスを見つけて記録します。

  1. ip -brief address show

次のような出力が表示されます。

Output
lo UNKNOWN 127.0.0.1/8 ::1/128 eth0 UP 159.89.122.115/20 10.20.0.8/16 2604:a880:cad:d0::e56:8001/64 fe80::b832:69ff:fe46:7e5d/64 eth1 UP 10.137.0.5/16 fe80::b883:5bff:fe19:43f3/64

この出力のプライベートネットワークインターフェイスは、強調表示されたeth1デバイスであり、IPv4アドレス10.137.0.5が付いています。 デバイス名とIPアドレスは異なります。 デバイス名とプライベートIPアドレスに関係なく、アドレスは次の予約済みブロックからのものになります。

  • 10.0.0.0から10.255.255.255(10/8プレフィックス)
  • 172.16.0.0から172.31.255.255(172.16 / 12プレフィックス)
  • 192.168.0.0から192.168.255.255(192.168 / 16プレフィックス)

これらのブロックがどのように割り当てられるかについて詳しく知りたい場合は、 RFC 1918仕様をご覧ください)

ElasticsearchサーバーのプライベートIPアドレス(この場合は10.137.0.5)を記録します。 このチュートリアルの残りの部分では、このアドレスをyour_private_ipと呼びます。 ネットワークインターフェイスの名前(この場合はeth1)にも注意してください。 このチュートリアルの次のパートでは、SuricataサーバーからのプライベートIPアドレスで接続をリッスンするようにElasticsearchとKibanaを構成します。

ステップ2—Elasticsearchを設定する

Elasticsearchは、デフォルトでローカル接続のみを受け入れるように構成されています。 さらに、認証が有効になっていないため、Filebeatなどのツールはログを送信できません。 チュートリアルのこのセクションでは、Elasticsearchのネットワーク設定を構成してから、Elasticsearchの組み込みのxpackセキュリティモジュールを有効にします。

Elasticsearchネットワーキングの設定

ElasticsearchサーバーとSuricataサーバーは分離しているため、プライベートネットワークインターフェイスで接続をリッスンするようにElasticsearchを構成する必要があります。

viまたはお好みのエディターを使用して、/etc/elasticsearch/elasticsearch.ymlファイルを開きます。

  1. sudo vi /etc/elasticsearch/elasticsearch.yml

以下に強調表示されているように、50〜60行目の間にコメントアウトされた#network.host: 192.168.0.1行を見つけ、その後にnetwork.bind_host設定を構成する新しい行を追加します。

# By default Elasticsearch is only accessible on localhost. Set a different
# address here to expose this node on the network:
#
#network.host: 192.168.0.1
network.bind_host: ["127.0.0.1", "your_private_ip"]
#
# By default Elasticsearch listens for HTTP traffic on the first free port it
# finds starting at 9200. Set a specific HTTP port here:

your_private_ipアドレスの代わりにプライベートIPを使用してください。 この行により、Elasticsearchがローカルアドレスで引き続き利用可能になり、Kibanaがアクセスできるようになります。また、サーバーのプライベートIPアドレスでも使用できるようになります。

次に、viショートカットSHIFT+Gを使用してファイルの最後に移動します。

次の強調表示された行をファイルの最後に追加します。

. . .
discovery.type: single-node
xpack.security.enabled: true

discovery.type設定により、Elasticsearchは、他のElasticsearchサーバーのクラスターではなく、単一のノードとして実行できます。 xpack.security.enabled設定は、Elasticsearchに含まれているセキュリティ機能の一部をオンにします。

編集が完了したら、ファイルを保存して閉じます。

最後に、ファイアウォールルールを追加して、Elasticsearchサーバーがプライベートネットワークインターフェースで到達可能であることを確認します。 前提条件のチュートリアルに従い、firewalldを使用している場合は、次のコマンドを実行します。

  1. sudo firewall-cmd --permanent --zone=internal --change-interface=eth1
  2. sudo firewall-cmd --permanent --zone=internal --add-service=elasticsearch
  3. sudo firewall-cmd --permanent --zone=internal --add-service=kibana
  4. sudo systemctl reload firewalld.service

異なる場合は、最初のコマンドでeth1の代わりにプライベートネットワークインターフェイス名を使用してください。 このコマンドは、internalファイアウォールゾーンを使用するようにインターフェイスルールを変更します。これは、デフォルトのpublicゾーンよりも許容度が高くなります。

次のコマンドは、ポート9601でのKibanaトラフィックとともに、ポート9200および9300でのElasticsearchトラフィックを許可するルールを追加します。

最後のコマンドは、新しいパーマネントルールを設定してFirewalldサービスをリロードします。

次に、Elasticsearchデーモンを起動し、xpackセキュリティモジュールで使用するパスワードを設定します。

Elasticsearchを開始する

Elasticsearchのネットワークとxpackセキュリティ設定を構成したので、変更を有効にするためにネットワークを開始する必要があります。

次のsystemctlコマンドを実行して、Elasticsearchを開始します。

  1. sudo systemctl start elasticsearch.service

Elasticsearchの起動が終了したら、このチュートリアルの次のセクションに進み、Elasticsearchに組み込まれているデフォルトユーザーのパスワードを生成します。

Elasticsearchパスワードの設定

xpack.security.enabled設定を有効にしたので、デフォルトのElasticsearchユーザーのパスワードを生成する必要があります。 Elasticsearchの/usr/share/elasticsearch/binディレクトリには、これらのユーザーのランダムなパスワードを自動的に生成できるユーティリティが含まれています。

次のコマンドを実行してディレクトリにcdし、すべてのデフォルトユーザーのランダムパスワードを生成します。

  1. cd /usr/share/elasticsearch/bin
  2. sudo ./elasticsearch-setup-passwords auto

次のような出力が表示されます。 続行するように求められたら、yを押してから、RETURNまたはENTERを押します。

Initiating the setup of passwords for reserved users elastic,apm_system,kibana,kibana_system,logstash_system,beats_system,remote_monitoring_user.
The passwords will be randomly generated and printed to the console.
Please confirm that you would like to continue [y/N]y


Changed password for user apm_system
PASSWORD apm_system = eWqzd0asAmxZ0gcJpOvn

Changed password for user kibana_system
PASSWORD kibana_system = 1HLVxfqZMd7aFQS6Uabl

Changed password for user kibana
PASSWORD kibana = 1HLVxfqZMd7aFQS6Uabl

Changed password for user logstash_system
PASSWORD logstash_system = wUjY59H91WGvGaN8uFLc

Changed password for user beats_system
PASSWORD beats_system = 2p81hIdAzWKknhzA992m

Changed password for user remote_monitoring_user
PASSWORD remote_monitoring_user = 85HF85Fl6cPslJlA8wPG

Changed password for user elastic
PASSWORD elastic = 6kNbsxQGYZ2EQJiqJpgl

ユーティリティを再度実行することはできなくなりますので、これらのパスワードは安全な場所に記録してください。 このチュートリアルの次のセクションではkibana_systemユーザーのパスワードを使用し、このチュートリアルのFilebeatの構成ステップではelasticユーザーのパスワードを使用する必要があります。

チュートリアルのこの時点で、Elasticsearchの構成は完了です。 次のセクションでは、Kibanaのネットワーク設定とそのxpackセキュリティモジュールを構成する方法について説明します。

ステップ3—Kibanaの設定

このチュートリアルの前のセクションでは、ElasticsearchサーバーのプライベートIPアドレスで接続をリッスンするようにElasticsearchを構成しました。 Suricataサーバー上のFilebeatsがKibanaに到達できるように、Kibanaについても同じことを行う必要があります。

まず、KibanaがElasticsearchにデータを保存するために使用するいくつかのシークレットを生成することにより、Kibanaのxpackセキュリティ機能を有効にします。 次に、Elasticsearchに接続するためにKibanaのネットワーク設定と認証の詳細を構成します。

Kibanaでxpack.securityを有効にする

Kibanaでxpackのセキュリティ設定を開始するには、いくつかの暗号化キーを生成する必要があります。 Kibanaはこれらのキーを使用して、セッションデータ(Cookieなど)、および保存されているさまざまなダッシュボードとデータのビューをElasticsearchに保存します。

/usr/share/kibana/binディレクトリに含まれているkibana-encryption-keysユーティリティを使用して、必要な暗号化キーを生成できます。 ディレクトリに対してcdに対して以下を実行し、キーを生成します。

  1. cd /usr/share/kibana/bin/
  2. sudo ./kibana-encryption-keys generate -q --force

-qフラグはツールの指示を抑制し、--forceフラグは新しいキーを作成することを保証します。 次のような出力を受け取るはずです。

Output
xpack.encryptedSavedObjects.encryptionKey: 66fbd85ceb3cba51c0e939fb2526f585 xpack.reporting.encryptionKey: 9358f4bc7189ae0ade1b8deeec7f38ef xpack.security.encryptionKey: 8f847a594e4a813c4187fa93c884e92b

これらの3つのキーを安全な場所にコピーします。 次に、それらをKibanaの/etc/kibana/kibana.yml構成ファイルに追加します。

viまたはお好みのエディターを使用してファイルを開きます。

  1. sudo vi /etc/kibana/kibana.yml

viショートカットSHIFT+Gを使用してファイルの最後に移動します。 コピーした3行のxpack行をファイルの最後に貼り付けます。

/etc/kibana/kibana.yml
. . .

# Specifies locale to be used for all localizable strings, dates and number formats.
# Supported languages are the following: English - en , by default , Chinese - zh-CN .
#i18n.locale: "en"

xpack.encryptedSavedObjects.encryptionKey: 66fbd85ceb3cba51c0e939fb2526f585
xpack.reporting.encryptionKey: 9358f4bc7189ae0ade1b8deeec7f38ef
xpack.security.encryptionKey: 8f847a594e4a813c4187fa93c884e92b

ファイルを開いたままにして、Kibanaのネットワーク設定を構成する次のセクションに進みます。

Kibanaネットワークの構成

ElasticsearchサーバーのプライベートIPアドレスで使用できるようにKibanaのネットワークを構成するには、/etc/kibana/kibana.ymlのコメントアウトされた#server.host: "localhost"行を見つけます。 行はファイルの先頭近くにあります。 以下で強調表示されているように、サーバーのプライベートIPアドレスを使用して新しい行を追加します。

/etc/kibana/kibana.yml
# Kibana is served by a back end server. This setting specifies the port to use.
#server.port: 5601

# Specifies the address to which the Kibana server will bind. IP addresses and host names are both valid values.
# The default is 'localhost', which usually means remote machines will not be able to connect.
# To allow connections from remote users, set this parameter to a non-loopback address.
#server.host: "localhost"
server.host: "your_private_ip"

your_private_ipアドレスの代わりにプライベートIPを使用してください。

編集が完了したら、ファイルを保存して閉じます。 次に、KibanaがElasticsearchへの接続に使用するユーザー名とパスワードを構成する必要があります。

Kibanaクレデンシャルの設定

KibanaがElasticsearchへの認証に使用するユーザー名とパスワードを設定する方法は2つあります。 1つ目は、/etc/kibana/kibana.yml構成ファイルを編集し、そこに値を追加することです。 2番目の方法は、Kibanaの keystore に値を保存することです。これは、Kibanaがシークレットを保存するために使用できる難読化されたファイルです。

このチュートリアルでは、Kibanaの構成ファイルを直接編集する必要がないため、キーストア方式を使用します。

代わりにファイルを編集する場合は、ファイルで構成する設定はelasticsearch.usernameelasticsearch.passwordです。

構成ファイルを編集する場合は、このセクションの残りの手順をスキップしてください。

kibana-keystoreユーティリティを使用してキーストアにシークレットを追加するには、最初にcd/usr/share/kibana/binディレクトリに追加します。 次に、次のコマンドを実行してKibanaのユーザー名を設定します。

  1. cd /usr/share/kibana/bin
  2. sudo ./kibana-keystore add elasticsearch.username

次のようなプロンプトが表示されます。

ユーザー名エントリ
Enter value for elasticsearch.username: *************

プロンプトが表示されたら、コピーして貼り付けるか、ユーザー名を慎重に入力して、kibana_systemと入力します。 入力する各文字は、*アスタリスク文字でマスクされます。 ユーザー名の入力が完了したら、ENTERまたはRETURNを押します。

ここで、このプロセスを繰り返して、今度はパスワードを保存します。 このチュートリアルの前のセクションで生成したkibana_systemユーザーのパスワードを必ずコピーしてください。 参考までに、このチュートリアルでは、パスワードの例は1HLVxfqZMd7aFQS6Uablです。

次のコマンドを実行して、パスワードを設定します。

  1. sudo ./kibana-keystore add elasticsearch.password

プロンプトが表示されたら、パスワードを貼り付けて、転記エラーを回避します。

パスワード入力
Enter value for elasticsearch.password: ********************

Kibanaを開始する

Kibanaのネットワークとxpackセキュリティ設定を構成し、キーストアにクレデンシャルを追加したので、変更を有効にするためにそれを開始する必要があります。

次のsystemctlコマンドを実行して、Kibanaを再起動します。

  1. sudo systemctl start kibana.service

Kibanaが起動したら、このチュートリアルの次のセクションに進むことができます。ここでは、ログをElasticsearchに送信するようにSuricataサーバーでFilebeatを構成します。

ステップ4—Filebeatのインストール

ElasticsearchとKibanaプロセスが正しいネットワークと認証設定で構成されたので、次のステップはSuricataサーバーにFilebeatをインストールしてセットアップすることです。

Filebeatのインストールを開始するには、次のコマンドを使用してElasticGPGキーをSuricataサーバーに追加します。

  1. sudo rpm --import https://artifacts.elastic.co/GPG-KEY-elasticsearch

次に、viまたはお好みのエディタを使用して、/etc/yum/yum.repos.dディレクトリに次の内容のelasticsearch.repoファイルを作成します。

  1. sudo vi /etc/yum.repos.d/elasticsearch.repo
/etc/yum.repos.d/elasticsearch.repo
[elasticsearch]
name=Elasticsearch repository for 7.x packages
baseurl=https://artifacts.elastic.co/packages/7.x/yum
gpgcheck=1
gpgkey=https://artifacts.elastic.co/GPG-KEY-elasticsearch
enabled=0
autorefresh=1
type=rpm-md

変更が完了したら、ファイルを保存して終了します。 次に、dnfコマンドを使用してFilebeatパッケージをインストールします。

  1. sudo dnf install --enablerepo=elasticsearch filebeat

次に、ElasticsearchとKibanaの両方に接続するようにFilebeatを構成する必要があります。 viまたはお好みのエディターを使用して、/etc/filebeat/filebeat.yml構成ファイルを開きます。

  1. sudo vi /etc/filebeat/filebeat.yml

100行目あたりのファイルのKibanaセクションを見つけます。 コメントアウトされた#host: "localhost:5601"行の後に、KibanaインスタンスのプライベートIPアドレスとポートを指す行を追加します。

/etc/filebeat/filebeat.yml
. . .
# Starting with Beats version 6.0.0, the dashboards are loaded via the Kibana API.
# This requires a Kibana endpoint configuration.
setup.kibana:

  # Kibana Host
  # Scheme and port can be left out and will be set to the default (http and 5601)
  # In case you specify and additional path, the scheme is required: http://localhost:5601/path
  # IPv6 addresses should always be defined as: https://[2001:db8::1]:5601
  #host: "localhost:5601"
  host: "your_private_ip:5601"

. . .

この変更により、FilebeatがKibanaに接続して、ElasticsearchでさまざまなSIEMインデックス、ダッシュボード、および処理パイプラインを作成し、Suricataログを処理できるようになります。

次に、130行目あたりのファイルのElasticsearch Outputセクションを見つけ、Elasticsearchサーバーの値と一致するようにhostsusername、およびpassword設定を編集します:

output.elasticsearch:
  # Array of hosts to connect to.
  hosts: ["your_private_ip:9200"]

  # Protocol - either `http` (default) or `https`.
  #protocol: "https"

  # Authentication credentials - either API key or username/password.
  #api_key: "id:api_key"
  username: "elastic"
  password: "6kNbsxQGYZ2EQJiqJpgl"

. . .

hosts行でElasticsearchサーバーのプライベートIPアドレスに置き換えます。 usernameフィールドのコメントを解除し、elasticユーザーに設定したままにします。 passwordフィールドをchangemeから、このチュートリアルの ElasticsearchPasswordsセクションで生成したelasticユーザーのパスワードに変更します。

編集が完了したら、ファイルを保存して閉じます。 次に、次のコマンドを使用してFilebeatsの組み込みSuricataモジュールを有効にします。

  1. sudo filebeat modules enable suricata

FilebeatがElasticsearchとKibanaに接続するように構成され、Suricataモジュールが有効になったら、次のステップはSIEMダッシュボードとパイプラインをElasticsearchにロードすることです。

filebeat setupコマンドを実行します。 すべてをロードするのに数分かかる場合があります。

  1. sudo filebeat setup

コマンドが終了すると、次のような出力が表示されます。

Output
Overwriting ILM policy is disabled. Set `setup.ilm.overwrite: true` for enabling. Index setup finished. Loading dashboards (Kibana must be running and reachable) Loaded dashboards Setting up ML using setup --machine-learning is going to be removed in 8.0.0. Please use the ML app instead. See more: https://www.elastic.co/guide/en/machine-learning/current/index.html It is not possble to load ML jobs into an Elasticsearch 8.0.0 or newer using the Beat. Loaded machine learning job configurations Loaded Ingest pipelines

エラーがない場合は、systemctlコマンドでFilebeatを起動してください。 実行されると、Suricataのeve.jsonログからElasticsearchへのイベントの送信が開始されます。

  1. sudo systemctl start filebeat.service

Suricataログを処理するようにFilebeat、Kibana、Elasticsearchを構成したので、このチュートリアルの最後のステップは、Kibanaに接続してSIEMダッシュボードを探索することです。

ステップ5—KibanaのSIEMダッシュボードをナビゲートする

Kibanaは、Elasticスタックのグラフィカルコンポーネントです。 ブラウザでKibanaを使用して、Suricataのイベントとアラートデータを探索します。 ElasticsearchサーバーのプライベートIPアドレスを介してのみ利用できるようにKibanaを構成したため、Kibanaに接続するにはSSHトンネルを使用する必要があります。

SSHでKibanaに接続する

SSHには、サーバー上のリモートIPアドレスとポートへの接続を介してローカルポート上のネットワークトラフィックを転送できるオプション-Lがあります。 このオプションを使用して、ブラウザからKibanaインスタンスにトラフィックを転送します。

Linux、macOS、およびWindows 10以降の更新バージョンでは、組み込みのSSHクライアントを使用してトンネルを作成できます。 Kibanaに接続するたびに、このコマンドを使用します。 この接続はいつでも閉じてから、SSHコマンドを再度実行してトンネルを再確立できます。

ローカルデスクトップまたはラップトップコンピューターのターミナルで次のコマンドを実行して、KibanaへのSSHトンネルを作成します。

  1. ssh -L 5601:your_private_ip:5601 [email protected]203.0.113.5 -N

SSHに対するさまざまな引数は次のとおりです。

  • -Lフラグは、ポート5601でローカルシステムへのトラフィックをリモートサーバーに転送します。
  • コマンドのyour_private_ip:5601の部分は、トラフィックが転送されるElasticsearchサーバー上のサービスを指定します。 この場合、そのサービスはKibanaです。 your_private_ipの代わりにElasticsearchサーバーのプライベートIPアドレスを使用してください。
  • 203.0.113.5アドレスは、サーバーへの接続とサーバーの管理に使用するパブリックIPアドレスです。 代わりにElasticsearchサーバーのパブリックIPアドレスを使用してください。
  • -Nフラグは、SSHにではなくインタラクティブな/bin/bashシェルのようなコマンドを実行し、代わりに接続を開いたままにするように指示します。 これは通常、この例のようにポートを転送するときに使用されます。

いつでもトンネルを閉鎖したい場合は、CTRL+Cを押してください。

Windowsでは、端末は次のスクリーンショットのようになります。

注:SSHキーを使用していない場合は、パスワードの入力を求められる場合があります。 プロンプトに入力または貼り付けて、ENTERまたはRETURNを押します。

Screenshot of Windows Command Prompt Showing SSH Command to Port Forward to Kibana

macOSおよびLinuxでは、端末は次のスクリーンショットのようになります。

Screenshot of Windows Command Prompt Showing SSH Command to Port Forward to Kibana

ポートフォワードを設定してSSH経由でElasticsearchサーバーに接続したら、ブラウザを開いてhttp://127.0.0.1:5601にアクセスします。 Kibanaのログインページにリダイレクトされます。

Screenshot of a Browser on Kibana's Login Page

ブラウザがKibanaに接続できない場合は、端末に次のようなメッセージが表示されます。

Output
channel 3: open failed: connect failed: No route to host

このエラーは、SSHトンネルがサーバー上のKibanaサービスに到達できないことを示しています。 Elasticsearchサーバーに正しいプライベートIPアドレスを指定していることを確認し、ブラウザでページをリロードします。

ユーザー名にelasticを使用し、ユーザー用にこのチュートリアルの前半でコピーしたパスワードを使用して、Kibanaサーバーにログインします。

KibanaSIEMダッシュボードの閲覧

Kibanaにログインすると、Filebeatが構成したSuricataダッシュボードを探索できます。

Kibanaウェルカムページの上部にある検索フィールドに、検索語type:dashboard suricataを入力します。 この検索では、次のスクリーンショットに従って、SuricataイベントダッシュボードとSuricataアラートダッシュボードの2つの結果が返されます。

Screenshot of a Browser Using Kibana's Global Search Box to Locate Suricata Dashboards

[Filebeat Suricata] Events Overviewの結果をクリックして、ログに記録されたすべてのSuricataイベントの概要を表示するKibanaダッシュボードにアクセスします。

Screenshot of a Browser on Kibana's Suricata Events Dashboard

Suricata Alertsダッシュボードにアクセスするには、検索を繰り返すか、イベントダッシュボードに含まれているAlertsリンクをクリックします。 ページは次のスクリーンショットのようになります。

Screenshot of a Browser on Kibana's Suricata Alerts Dashboard

各ダッシュボードに表示されるイベントとアラートを確認する場合は、ページの一番下までスクロールして、各イベントとアラートを一覧表示する表を見つけます。 各エントリを展開して、Suricataからの元のログエントリを表示し、アラートの送信元IPと宛先IP、攻撃の種類、SuricataシグニチャIDなどのさまざまなフィールドを詳細に調べることができます。

Kibanaには、ブラウザウィンドウの左側にあるメニューを使用してアクセスできるセキュリティダッシュボードのセットも組み込まれています。 ネットワークダッシュボードに移動して、マップに表示されるイベントの概要と、ネットワーク上のイベントに関する集計データを確認します。 ダッシュボードは次のスクリーンショットのようになります。

Screenshot of a Browser on Kibana's Security -> Network Dashboard

ネットワークダッシュボードの一番下までスクロールして、指定した検索時間枠に一致するすべてのイベントを一覧表示するテーブルを表示できます。 また、各イベントを詳細に調べたり、イベントを選択してKibanaタイムラインを生成したりして、特定のトラフィックフロー、アラート、またはコミュニティIDを調査するために使用することもできます。

結論

このチュートリアルでは、ElasticsearchとKibanaをスタンドアロンサーバーにインストールして構成しました。 プライベートIPアドレスで使用できるように両方のツールを構成しました。 また、各ツールに含まれているxpackセキュリティモジュールを使用して、ElasticsearchとKibanaの認証設定を構成しました。

ElasticsearchとKibanaの設定手順を完了した後、SuricataサーバーにFilebeatをインストールして設定しました。 Filebeatを使用してKibanaのダッシュボードにデータを入力し、ElasticsearchへのSuricataログの送信を開始しました。

最後に、ElasticsearchサーバーへのSSHトンネルを作成し、Kibanaにログインしました。 新しいSuricataイベントとアラートダッシュボード、およびネットワークダッシュボードを見つけました。

このシリーズの最後のチュートリアルでは、KibanaのSIEM機能を使用してSuricataアラートを処理する方法について説明します。 その中で、特定のアラートを追跡するケース、ネットワークフローを相互に関連付けるタイムライン、および追跡または分析する特定のSuricataイベントに一致するルールを作成する方法について説明します。