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

Fedora43 : Suricata + Elastic Stackでログの可視化とモニタリング

前提条件

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

 Suricata

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

1.事前準備

①EPEL リポジトリをシステム上で有効化する

②システムのアップデート

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

①Suricata のインストール

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

③設定ファイルを編集

④Suricataのルール更新

⑤Suricataの起動

⑥Suricataの起動確認

ログを確認

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

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

3.Suricata のテスト

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

②ログに記録されたかどうかを調べるため、アラートログを確認

4.Suricata Rulesの設定

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

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

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

アップデートを実行

Suricata service再起動

5.Suricata Custom Rulesの作成

①カスタマールールを含むファイルを作成

②設定ファイルを編集(新しいルールのパスを定義)

 ③設定ファイルのテスト

Suricat service再起動

④Custom Rulesの適用テスト
同一ローカルネットワーク上の別のデバイスでpingを実行し、ログに記録されたかどうかを確認する

JSON形式のログを取得するには、システムにjqをインストールする

下記コマンドを実行し、同一ローカルネットワーク上の別のデバイスでpingを実行する

6. SuricataをIPSに設定する

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

①SURICATAの/etc/sysconfig/suricata設定ファイルを編集する

➁Suricataを再起動

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

SURICATA がトラフィックを正しくドロップしていることを確認
/var/lib/suricata/rules/suricata.rulesにsid:2100498に該当するものがあれば コメントアウトし、/var/lib/suricata/rules/local.rulesにルールを追加

⑤suricataアップデート

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

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

Elastic stack 9.x インストール

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

①Elastic stack 9.xのリポジトリ署名キーをインストール

➁Elastic Stack 9.xのリポジトリをインストール

update

➂Ubuntu 24.04 に Elasticsearch 9.x をインストール

インストール中、デフォルトでセキュリティ機能が有効になります;

認証と認可が有効になっている。
トランスポート層とHTTP層のTLSが有効化され、設定されます。
Elasticスーパーユーザーアカウント(elastic)とそのパスワードが作成されます。

④Ubuntu 上での Elasticsearch 9.x の設定
今回は基本的なシングルノードのクラスタなので、デフォルトの設定を使用します。

Elasticsearch の設定ファイル /etc/elasticsearch/elasticsearch.yml を確認すると、セキュリティの設定が有効になっていることがわかります

⑤Elasticsearch起動

Elasticsearch を起動し、システム起動時に実行できるようにします

ステータスを確認

curlコマンドを使用してESのステータスを確認することもできます。IPは適宜置き換えてください

プロンプトが表示されたら、Elasticsearchのインストール時に生成されたElasticsearchパスワードを入力します
以下のように出力される

また、HTTPポートとトランスポートポートの両方が開いていることを確認する;

⑥Elasticsearch パスワードのリセット
自動生成されたElasticユーザーパスワードが複雑すぎるので、/usr/share/elasticsearch/bin/elasticsearch-reset-passwordコマンドを使ってリセットする
パスワードをリセットするには、コマンドを実行する

⑦Elasticsearch ログ
Elasticsearchは/var/log/elasticsearchパスにログを書き込みます。Elasticsearch インスタンスに問題がある場合に確認する必要があるログは /var/log/elasticsearch/CLUSTER_NAME.log です。

CLUSTER_NAME は elasticsearch.yaml ファイルの cluster.name オプションの値です。もしこの値を変更しなかった場合、デフォルトは elasticsearch となり、ログファイルは /var/log/elasticsearch/elasticsearch.log となります。

ログ

Kibana 9.x インストール

本セクションは基本的には2台目のUbuntu24.04サーバーで行います

①インストール

➁Kibana 9 を設定
Kibana はデフォルトで localhost:5601 で実行されるように設定されている。外部からのアクセスを許可するには、設定ファイルを編集し、server.hostの値をインターフェイスIPに置き換える。

以下のように書き換える

➂Kibana-Elasticsearch Enrollment Token の生成
Kibana インスタンスを、セキュリティ機能が有効になっている既存の Elasticsearch クラスタと通信するように設定するには、登録トークンが必要です。Kibana 用の Enrollment Token は以下のコマンドで生成できる

④Kibana 暗号化キーの生成
Kibana は、Kibana 関連インデックスのデータの暗号化からセッション情報の保存まで、いくつかの領域で暗号化キーを使用する。必要なキーは次のとおりです

  • xpack.encryptedSavedObjects.encryptionKey:ダッシュボードやビジュアライゼーションなどの保存されたオブジェクトを暗号化するために使用されます。
  • xpack.reporting.encryptionKey: 保存されたレポートの暗号化に使用
  • xpack.security.encryptionKey: セッション情報の暗号化に使用

これらは以下のコマンドで生成する

次のように出力される

上記をKibanaの設定ファイルkibana.ymlに挿入する

⑤Kibana の実行
Kibana 9 を起動し、システム起動時に実行できるようにする。

status

出力の最後のほうに以下のように表示される

提供されたKibanaのURL(codeを含む)をコピーしてブラウザで使用し、Kibanaにアクセスしてセットアップを完了する。

同様に、Kibanaのログは/var/log/kibana/kibana.logと/var/log/syslogで利用できる。

⑥Kibana9 ダッシュボードにアクセスする

http://192.168.11.85:5601/?code=446458.にアクセスする
(各自の適切なアドレスをコピー)

UFWが起動している場合は、Kibanaポートを開く

Kibana 9にアクセスすると、ウェルカムページでElasticの設定を求められます。
最初に、生成した登録トークンを入力する。
/usr/share/elasticsearch/bin/elasticsearch-create-enrollment-token -s kibana, コマンドを使用して生成された Kibana トークンをコピーし、ボックスに貼り付ける

http://192.168.11.85:5601/?code=446458にアクセス

トークンをペーストすると、Kibana が自動的に Elasticsearch に接続します。
Configure Elastic をクリックします。設定が保存され、Elasticsearch が設定、再起動されます。

ログインページに移動します。生成されたElasticユーザー認証情報を使用してログインします。
Username : elastic
Password : わかりやすく再生成したパスワード

ウェルカムページで、「Explore on my own」をクリックしてKibana 9.xダッシュボードに進む。

Filebeat 9のインストール

ELKスタックを使用してFedora43からログを収集して監視するには、Filebeatをインストールする必要があります。
本作業は1台目サーバー Fedora43 IPアドレス(192.168.11.83)で行います。

①Elastic Reposをインストールする

RedHatベースのディストリビューションでは、/etc/yum.repos.d/ディレクトリにelasticsearch.repoというファイルを作成し、以下の設定を含めます

# vi /etc/yum.repos.d/elasticsearch.repo

[elasticsearch]
name=Elasticsearch repository for 9.x packages
baseurl=https://artifacts.elastic.co/packages/9.x/yum
gpgcheck=1
gpgkey=https://artifacts.elastic.co/GPG-KEY-elasticsearch
enabled=0
type=rpm-md

インストール

➁Filebeat Loggingの設定

デフォルトのfilebeat設定ファイル/etc/filebeat/filebeat.ymlです
Filebeatがログを独自のログファイルに書き込むようにするには、設定ファイルに以下の設定を入力する


➂Filebeatをデータ処理系に接続する
Filebeatをデータ処理系に接続するように設定します。今回はElasticsearchです。
ログを直接Elasticsearchに送信するには、Filebeat設定ファイルを編集し、出力設定セクションを更新します。

Elasticsearch 9への接続にはSSLと認証が必要です。
Elasticsearchのポート9200/tcpに接続できることを確認する(事前に2台目サーバーの9200ポートを開放しておく)

④Elasticsearch CA証明書作成
Elasticsearch CA証明書をダウンロードし、任意のディレクトリに保存します(今回は/etc/filebeat/elastic-ca.crtとして保存します)

FilebeatがElasticsearchの認証に使用する認証情報を取得します。今回は、デフォルトのスーパー管理者、Elasticユーザの認証情報を使用します。

⑤設定ファイルテスト

⑥Filebeatの出力接続をテスト

⑦FilebeatのSuricataモジュールを有効にする
modules.d/suricata.ymlを下記のように変更する

FilebeatのSuricataモジュールを有効にします

⑧初期環境をセットアップ
SIEMダッシュボードとパイプラインをElasticsearchにロードします
filebeat setupコマンドを実行

⑨Filebeatサービスを開始

⑩Kibanaで確認

Kibanaにログインし直します。http://192.168.11.85:5601にアクセスします。

一番上の検索フィールドに「Suricata Events Overview」と入力し、[Filebeat Suricata]Events Overviewをクリック

過去 15 分間のすべての Suricata イベントが表示されます

悪質なトラフィックのアラートを表示するにはSuricataロゴの横にあるAlertsテキストをクリック

elasticスーパーユーザーアカウントを使う必要がないように、新しいユーザーアカウントを作成します。
左上三本線マークをクリックし、[Management]の[Stack Management] を選択

「security」「Users」選択

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

新規ユーザー情報を入力し、Privilegesでkibana_admin、kibana_system、monitoring_user、editorのロールを割り当て、最後に[Create user]をクリック

現在のプロファイルからログアウトし、新しく作成したユーザーアカウントでログインできることを確認する。

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