業務用エアコン関連の技術情報、エラーコード、環境問題対策に関する別サイト「エアコンの安全な修理・適切なフロン回収」

ArchLinux : Suricata Elasticsearchで可視化

前提条件

1.Suricata
SURICATA IDS/IPSはネットワーク上の通信を監視し、不審なトラフィックを検知するオープンソースのIDSです。基本的な仕組みはシグネチャ型であるため、あらかじめ設定した不正な通信を検知できます。また、Suricataは検知だけでなく防御も行えることが特徴です。

2.Elastic Stack,Kibana,Filebeat
Elastic Stackをインストール&設定して、Kibana,Filebeatを使用してSURICATAのログを可視化&検索できるようにする

今回はSuricata IDS と ElasticStack を 次のサーバーにインストールします
・1台目サーバー Suricata IDS & Filebeat : ArchLinux IPアドレス(192.168.11.83)
・2台目サーバー ElasticStack & kibana : Debian13.x IPアドレス(192.168.11.85)
今回はrootユーザーで実行します

 1台目サーバー Suricata インストール

1.Suricata のインストールと設定

①Suricata のインストール

➁必要なカーネルモジュールの確認とロード
NFQUEUEを使用するには、カーネルがnfnetlink_queueをサポートしている必要があります。
モジュールの確認:

上記で何も表示されない場合、モジュールをロードする

再度確認

再起動後も有効にする

➂Suricataがネットワークパケットを検査するインターフェースとIPアドレスを決定

④設定ファイルを編集

ディレクトリーの所有権、実行権限を設定

⑤Suricataの起動

⑥Suricataの起動確認

ログを確認

統計情報を確認するには、stats.log ファイルを確認します(デフォルトで8秒ごとに更新)

より高度な出力であるEVE JSONは、以下のコマンドで生成することができる

2.Suricata のテスト

①一時的にnfqueueモードを停止する

➁curl ユーティリティで ping テストを実行

➂指定されたルール番号を使用してログファイルを確認する
Suricataには、デフォルトで有効になっている次の2つのログファイルが付属しています。

/var/log/suricata/fast.log
/var/log/suricata/eve.log
curlリクエストに対応するログエントリーを確認するために、/var/log/suricata/fast.log ログファイルをgrepコマンドを使用してチェックします。2100498 ルール識別子を使用してログエントリーを検索します。(IPv4の場合)

 ④/var/log/suricata/eve.log のイベント確認

jq をインストール

2100498シグネチャを検索して、EVEログのイベントをフィルタリング
2100498の値と一致するsignature_idキーを持つalertオブジェクトを表示

3.Suricata Rulesの設定

①Suricataにパッケージされているルールセットの表示

②ルールセットを提供するソースのインデックス一覧

③ソースを有効にする(tgreen/huntingを有効にする場合)

アップデートを実行

Suricata service再起動

4. SuricataをIPSに設定する

①nfqueueモードに戻す

非SSHポートへのSSHトラフィックをスキャンする以下のカスタム署名を作成し、/var/lib/suricata/rules/local.rulesというファイルにインクルードする(SSHポートを22と仮定)

SURICATA設定ファイルを編集

SURICATAの設定を検証

Suricataを再起動

入ってくるネットワーク・トラフィックをSuricataのNFQUEUEに向ける
Firewalld がインストールされ、有効になっているのでSuricataに必要なルールをFirewalldに追加する(SSHポートを22と仮定)

同様に/etc/ufw/before6.rulesも編集する

SURICATA がトラフィックを正しくドロップしていることを確認
シグネチャのデフォルトアクションをalertやlogからactive dropping trafficに切り替える
/var/lib/suricata/rules/suricata.rulesファイルを開き、sid:2100498に該当するものがあれば コメントアウトする

/var/lib/suricata/rules/local.rulesにsid:2100498として新規作成する

シグネチャを再読み込み

curlを使ってこのルールをテスト

jqを使ってeve.logファイルを調べる

"action": "blocked",になっている

ELK StackとSURICATAの統合

Elastic Stackをインストール&設定して、SURICATAのログをより効率的に可視化&検索できるようにする
本セクションは基本的には2台目のDebian13.xサーバー(Ip 192.168.11.85)で行います
具体的な手順は下記ページを参照してください

Elasticsearchの起動

サービスを起動・有効化

systemctl daemon-reload
systemctl enable --now elasticsearch
systemctl start elasticsearch

動作確認
curlコマンドを使用して、Elasticsearchが動作しているか確認します。
elasticのパスワードを要求されます 

Kibanaインストール

Kibanaをインストール&設定して、SURICATAのログを可視化できるようにする
本セクションは基本的には2台目のDebian13.xサーバー(Ip 192.168.11.85)で行います
kibanaインストールからKibana9 ダッシュボードにアクセスする具体的な手順は下記ページを参照してください

SURICATAサーバにFilebeatをインストール

1.インストール

2. Elasticsearch CA証明書作成
Elasticsearch CA証明書をダウンロードし、任意のディレクトリに保存します(今回は/etc/filebeat/elastic-ca.crtとして保存します)
※第2サーバー(Debian13.x Elasticsearchを導入したサーバー)で9200ポートを開放しておく

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

4. 設定ファイルテスト

5. Filebeatsの組み込みSuricataモジュールを有効にする

上記コマンドにより /etc/filebeat/modules.d/suricata.yml.disabled が/etc/filebeat/modules.d/suricata.yml になりますが内容は変化しませんので以下のように編集します

6. 初期環境をセットアップ
Suricataサービスにpipeline
SIEMダッシュボードをElasticsearchにロードします

7. Filebeatサービスを開始

以降、下記ページを参照してください

タイトルとURLをコピーしました