Suricata Host IDS/IPS + Elastic Stackでログの可視化とモニタリング(Ubuntu/Debian)

このページの目的

SuricataをIDSとIPSとして利用し、Elastic StackをSuricataのログの可視化とモニタリングに利用します
構築するイメージは下図の通りで2台のUbuntu 22.04サーバーを用意し、
・1台目のサーバーにSuricata、Auditbeat、Filebeatをインストールする
・2台目のサーバーに、KibanaとElasticsearchをインストールする

それぞれの役割は

Suricata Host IDS/IPS
ホスト侵入検知・防御システムでデフォルトでパッシブIDSとしてインストールされ、単に不審なトラフィックをスキャンし、ホスト上でアラートを生成します。今回はSURICATAをIPSとしても動作するように設定し、定義されたルールに一致する悪意のあるネットワークトラフィックのパケットをドロップして完全にブロックします

Filebeat
ログデータを転送し、一元管理するための軽量なシッパーです

Auditbeat
Linux監査フレームワークのデータを収集し、ファイルの整合性を監視します

Elasticsearch
あらゆる種類のデータを対象とした検索・分析エンジン

Kibana
Elasticsearch にインデックスされたデータの検索とデータ可視化機能を提供します

SURICATAインストールと設定

本作業は1台目のUbuntuサーバーで行う

1. SURICATAインストール

1.1 Open Information Security Foundation(OSIF)のリポジトリを追加

リポジトリを更新

1.2 SURICATAをインストール

1.3 suricata.serviceを起動する

起動確認

Suricataは現在IDS(af-packet)モードで起動している

2. SURICATAの設定

①SURICATAは、IDSモードでのみ有効であり、悪意のあるネットワークトラフィックをドロップあるいはブロックはしません、アラートとログを提供するだけです。SURICATAをIPSとして設定し、悪意のあるネットワークパケットをドロップするようにする
➁JSON出力にコミュニティIDを含めるようにSURICATAを設定する

2.1 デフォルトのネットワーク・インターフェイスを確認

デフォルトのネットワーク・インターフェイス名は"ens33"である

2.2 Suricataの設定ファイル編集

2.3 プロセスを再起動せずにルールセットを再読み込みするようSuricataプロセスに通知し、以Suricataサービスを再起動する

2.4 Suricataルールの更新

SURICATAのすべてのルールセット・プロバイダーを更新
no-check-certificateは、認証局の検証を無視する。

SURICATAのすべてのルールセット・プロバイダーをリストアップ

License: Commercial のルールは有償です。et/openルールをフェッチする

et/openルールセットをロードし、killコマンドを実行して再起動せずにルールを更新する

2.5 Suricataテスト

2.6 SuricataがIDSモード動作確認テスト
TestMyNIDSのウェブサイトを使う

Suricataのログから該当するアラートを確認

GPL ATTACK_RESPONSEアラートをログに記録されています

JSON形式でイベントを記録するとより読みやすい形式でログを提供します。この形式でログを表示するために、jqユーティリティをインストールする

上記の特定のログを検索する

2.7 SuricataをIPSに設定する
悪意のあるネットワーク・トラフィックをドロップするようにSuricataをIPSモードで起動するように設定する

Suricataを再起動

SuricataサービスのステータスでSuricataがIPSモードで動作していることを確認する

2.8 入ってくるネットワーク・トラフィックをSuricataのNFQUEUEに向ける

ファイアウォールを有効にして、先ほど設定した新しいルールをリロードする

2.9 カスタムルールを作成しトラフィックがドロップされるかどうかを確認する
カスタムルール新規作成
ホストへのICMPリクエストをすべてドロップする

カスタムルールをSURICATAの設定ファイルに追加

Suricataのルールを再読み込み

設定をテストする

pingリクエストを実行し、パケットがドロップされることを確認
Windowsマシンから、Suricataホストにpingリクエストを実行する

ログを確認すると下記のようにDropされている

ELK StackとSURICATAの統合

Elastic Stackをインストール&設定して、SURICATAのログをより効率的に可視化&検索できるようにする
本セクションは基本的には2台目のUbuntuサーバーで行います

1. Elasticsearchのインストール

1.1 公開署名キーをダウンロードしてインストール

1.2 リポジトリ定義を/etc/apt/sources.list.d/elastic-8.x.listに保存

1.3 Elasticsearch パッケージをインストール

2. Elasticsearch 設定

2.1 Elasticsearch 設定ファイルを編集

ファイルを保存する

2.2 Elasticsearchサービスを有効にして確認

Elasticsearch バージョン8.11.3が稼働している

2.3 Elasticsearch 設定ファイルを再度編集

ファイルを保存し、 elasticsearch.serviceを再起動

2.4 elasticとkibana_systemのパスワードを作成
elasticユーザとkibana_systemユーザのパスワードは後で使用するので必ずコピーしておく
kibana_systemユーザはKibanaの設定に使用する
elasticユーザはFilebeat、Auditbeatの設定およびKibanaへのログインに使用する
パスワードを忘れた場合は、上記のコマンドを使用してパスワードをリセットできます。

[elastic] userのパスワード作成

[kibana_system]userのパスワード作成

3. Kibana の設定

Kibana は Elasticsearch をインストールした後にインストールする。
Kibana は Elasticsearch と同じマシンにインストールする

3.1 Kibanaインストール

3.2 xpack.security設定と暗号化キーを作成
暗号化キーをコピーしておく

kibana.yml設定ファイルに暗号化キーを追加する

3.3 その他kibana.yml設定ファイル編集

ファイル保存

3.4 Kibanaサービスを開始

Kibana.serviceのステータスを確認

3.5 http,httpsポート開放

4. Kibanaのウェブページ起動確認

ウェブ・ブラウザにアクセスし、Kibanaが正しく起動していることを確認する。"http://192.168.11.101:5601"と入力してKibanaにアクセスしてみる。ただし、5601ポートを開放しておく

Usernameはelastic、Passwordはelastic用に作成したものでログイン

"Add integrations"選択しEnter

elasticスーパーユーザーアカウントを使う必要がないように、新しいユーザーアカウントを作成します。
メインメニューを開き、Stack Management > Users

右上の"Create user"ボタンをクリック

新規ユーザー情報を入力し、Privilegesでkibana_admin、kibana_system、monitoring_user、editorのロールを割り当てる

現在のプロファイルからログアウトし、新しく作成したユーザーアカウントでログインできることを確認する。現在、SURICATAのホストでFilebeatとAuditbeatを設定していないため、Kibanaで表示できるデータがありません。

Filebeat & Auditbeat インストールと設定

本作業はSuricataをインストールした1台目のUbuntuサーバーで作業する

1. Filebeat インストール

1.1 パブリック署名キーをダウンロード

1.2 リポジトリ定義を/etc/apt/sources.list.d/elastic-8.x.listに保存

1.3 Filebeatをインストール

1.4 FilebeatをElasticsearchとKibanaに接続するように設定

FilebeatのSuricataモジュールを有効にしますが、Elasticsearch 8.xでは、モジュールのインポートにバグがあるため、.ymlファイルからSuricataモジュールをインポートします

SURICATAモジュールを強制的に実行

1.5 初期環境をセットアップ
suricata-eve-* が表示されていることを確認

1.6 Filebeatサービスを開始

2. Auditbeatをインストールと設定

2.1 Auditbeatをインストール

2.2 auditbeat.yml設定ファイル編集

ファイル保存

2.3 Auditbeatを開始