序章

このシリーズの以前のチュートリアルでは、Suricataのインストールと構成の方法について説明しました。 また、Filebeatを使用してSuricataサーバーからElastic Stackサーバーにアラートを送信し、組み込みのセキュリティ情報およびイベント管理(SIEM)機能で使用する方法についても説明しました。

このシリーズの最後のチュートリアルでは、カスタムKibanaルールを作成し、KibanaのSIEMダッシュボード内でアラートを生成します。 ルールを設定し、Kibanaを使用してSuricataのログをフィルタリングする場所と方法を理解したら、Kibanaのタイムライン分析ツールを使用してケースを作成および管理する方法を検討します。

このチュートリアルを終了すると、ネットワーク内のすべてのサーバーにわたるセキュリティイベントを追跡および調査するために使用できるSIEMシステムが完成します。

前提条件

このチュートリアルシリーズを実行している場合は、少なくとも4GBのRAMと2つのCPUを備えたサーバーがあり、root以外のユーザーが構成されている必要があります。 このガイドでは、 Ubuntu 20.04 Debian 11 、または Rocky Linux8のいずれかの初期サーバーセットアップガイドに従ってこれをセットアップできます。選択したオペレーティングシステムによって異なります。

また、サーバーにSuricataをインストールして実行する必要があります。 サーバーにSuricataをインストールする必要がある場合は、オペレーティングシステムに応じて、次のいずれかのチュートリアルを使用してインストールできます。

また、Elastic Stackを実行し、FilebeatがSuricataサーバーからElasticsearchにログを送信できるように構成されたサーバーも必要です。 Elastic Stackサーバーを作成する必要がある場合は、オペレーティングシステムに一致する次のリストのチュートリアルのいずれかを使用してください。

ElasticsearchサーバーでKibanaにログインできること、およびさまざまなSuricataアラートおよびイベントダッシュボードにイベントがあることを確認してください。

すべての前提条件が整ったら、KibanaサーバーへのSSHトンネルを開き、前のチュートリアルで生成した資格情報を使用して、ブラウザーでKibanaにログインします。

ステップ1—ElasticsearchでAPIキーを有効にする

Kibanaでルール、アラート、タイムラインを作成する前に、 xpack セキュリティモジュールの設定。

あなたの /etc/elasticsearch/elasticsearch.yml とファイル nano またはお好みのエディター。

  1. sudo nano /etc/elasticsearch/elasticsearch.yml

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

/etc/elasticsearch/elasticsearch.yml
. . .
discovery.type: single-node
xpack.security.enabled: true
xpack.security.authc.api_key.enabled: true

編集が完了したら、ファイルを保存して閉じます。 使用している場合 nano、あなたはそうすることができます CTRL+X、 それから YENTER 確認するために。

次に、Elasticsearchを再起動して、新しい設定を有効にします。

  1. sudo systemctl restart elasticsearch.service

これで、Kibanaでルールを構成し、アラートを調べ、タイムラインとケースを作成する準備が整いました。

ステップ2—Kibanaにルールを追加する

SuricataイベントデータでKibanaのSIEM機能を使用するには、着信イベントに関するアラートを生成するルールを作成する必要があります。 ルールを作成またはインポートするには、Kibanaのセキュリティアプリページのルールダッシュボードにアクセスしてください。

このチュートリアルでは、次のシグニチャを使用して、不一致のポート(SSH、HTTP、およびTLSトラフィック)でサーバーに向けられたトラフィックを検出します。

Suricata署名の例
alert ssh any any -> 203.0.113.5 !22 (msg:"SSH TRAFFIC on non-SSH port"; classtype: misc-attack; target: dest_ip; sid:1000000;)
alert ssh any any -> 2001:DB8::1/32 !22 (msg:"SSH TRAFFIC on non-SSH port"; classtype: misc-attack; target: dest_ip; sid:1000001;)

alert http any any -> 203.0.113.5 !80 (msg:"HTTP REQUEST on non-HTTP port"; classtype:misc-activity; sid:1000002;)
alert http any any -> 2001:DB8::1/32 !80 (msg:"HTTP REQUEST on non-HTTP port"; classtype:misc-activity; sid:1000003;)

alert tls any any -> 203.0.113.5 !443 (msg:"TLS TRAFFIC on non-TLS HTTP port"; classtype:misc-activity; sid:1000004;)
alert tls any any -> 2001:DB8::1/32 !443 (msg:"TLS TRAFFIC on non-TLS HTTP port"; classtype:misc-activity; sid:1000005;)

独自の署名またはルールセットの署名を使用している場合は、アラートを生成できることと、KibanaのデフォルトのSuricataダッシュボードで対応するイベントにアクセスできることを確認してください。

次に、Kibanaのセキュリティアプリ http:// localhost:5601 / app / security / rules/の[ルール]ページにアクセスします。 ページ右上の新しいルールの作成ボタンをクリックします。

カスタムクエリルールタイプカードが選択されていることを確認します。 カスタムクエリ入力フィールドまでスクロールし、以下を貼り付けます。

Kibanaクエリ言語入力
rule.id: "1000000" or rule.id :"1000001"

あなたの rule.id 値はSuricataのものと一致します sid 警告したい1つまたは複数の攻撃の値。

クエリクイックプレビュードロップダウンを先月に変更し、プレビュー結果をクリックします。 Suricataログに一致するイベントがあるとすると、ページは先月のアラートを示すグラフで更新されます。 ページは次のスクリーンショットのようになります。

続行をクリックして、ルール名フィールドに名前を追加します。これは、追加するすべてのルールに必要です。 ルール名フィールドに名前を追加します。 この例では、Suricataルールのメッセージの説明を使用します SSH TRAFFIC on non-SSH port. ルールの説明も追加します。 使用します Check for SSH connection attempts on non-standard ports この例では。

詳細設定セクションを展開して、ルールの詳細を追加することもできます。 たとえば、ルールによって生成されたアラートの処理方法に関する説明を追加したり、特定の攻撃タイプに関するセキュリティ研究者の記事にリンクしたりできます。

ルール名、説明、およびオプションの追加フィールドの追加が完了したら、続行をクリックして、ルール作成のステップ3に進みます。

次のスケジュールルールセクションの設定をデフォルト値のままにして、続行をクリックします。

最後に、 ルールアクションステップ、クリックルールを作成してアクティブ化する

ルールの詳細を示す新しいページにリダイレクトされます。

:アラートデータが最初に入力されるまでに数分かかる場合があります。 この遅延は、ルールのデフォルトのスケジュールが5分ごとに実行されるためです。

アラートが必要な他のSuricataルールがある場合は、上記の手順を繰り返して、署名の代わりに使用します。 sid Kibanaのカスタムクエリに rule.id 分野。

1つまたは複数のルールを設定したら、次のステップに進み、アラートを調べて、アラートを管理するための1つまたは複数のケースを作成します。

KibanaのSIEMアプリでアラートを生成するように構成されたルールができたので、アラートをさらにグループ化して管理する方法が必要になります。 開始するには、Kibanaのアラートダッシュボードhttp://127.0.0.1:5601/app/security/alertsにアクセスしてください。

Suricataシグニチャまたは使用しているシグニチャと一致する無効なトラフィックが生成されていることを確認してください。 たとえば、例をトリガーできます sid:1000000 ローカルマシンから次のようなコマンドを実行することによるSuricataルール:

  1. ssh -p 80 your_server_ip

このコマンドは、デフォルトのポート22ではなくポート80でSSHを使用してサーバーに接続しようとし、アラートをトリガーする必要があります。 アラートはElasticsearchとKibanaで作成したルールによって処理される必要があるため、アラートがKibanaに表示されるまでに数分かかる場合があります。

次に、を追加します comnunity_id ページの下部に表示されるアラートのテーブルへのフィールド。 最初のチュートリアルから、このフィールドはSuricataによって生成され、ネットワークフローに含まれる一意のIPアドレスとポートを表すことを思い出してください。 フィールドボタンをクリックし、ポップアップするモーダルダイアログで次のように入力します。 network.community_id 次に、フィールド名の横にあるチェックボックスをオンにします。

モーダルを閉じると、フィールドがアラートのテーブルに追加されます。 次に、同じアラートにカーソルを合わせます community_id 値を入力し、タイムライン調査に追加アイコンをクリックします。 これにより、共有するすべてのアラートが community_id イベントに追加されたSuricataは、さらに調査するためにタイムラインに追加されます。

次に、ブラウザの左下にある無題のタイムラインリンクをクリックします。 このリンクをクリックすると、Suricataのアラートのみを表示するページに移動します community_id 調査したいフィールド。

タイムラインページには、アラートまたはネットワークフローに関連付けられている個々のパケットに関する詳細が表示されます。 タイムラインを使用して、疑わしいネットワークフローがいつ開始され、どこで発生し、どのくらいの期間続いたかをより正確に把握できます。

ページ右側のすべてのデータソースボタンをクリックし、検出アラートボタンを選択して、保存をクリックします。 このオプションは、Kibanaが生成するアラートのみを表示するようにタイムラインを制限します。 このオプションがないと、Suricataのアラートもタイムラインに含まれます。

新しいタイムラインを保存するには、タイムラインページの左上にある鉛筆アイコンをクリックします。 次のスクリーンショットは、鉛筆アイコンとすべてのデータソースボタンの場所を示しています。

タイムラインに追加する追加情報がある場合は、説明フィールドにテキストを追加できます。 タイムラインの名前と説明の編集が完了したら、モーダルダイアログの右下にある保存ボタンをクリックします。

上記の手順を繰り返して、後でさらに詳しく調べたい他のアラートのタイムラインを作成します。

次のステップでは、イベントのタイムラインビューを使用して、SIEMツールスイートのKibanaのCasesアプリにアラートを添付します。

ステップ4—SIEMケースの作成と管理

前の手順では、Suricataに基づいて個々のアラートとパケットをグループ化するタイムラインを作成しました community_id 分野。 チュートリアルのこのセクションでは、タイムラインのアラートを追跡および管理するためのケースを作成します。

タイムラインから新しいケースを作成するには、ブラウザのタイムラインページが表示されていることを確認してください。 タイムラインページの右上にあるケースに添付ボタンをクリックし、表示されるリストから新しいケースに添付ボタンをクリックします。

調査しているインシデントに関する情報を入力できるページにリダイレクトされます。 次のスクリーンショットの例では、SSH以外のポートアラートでのSSHトラフィックの例を示しています。

わかりやすい名前とオプションの1つまたは複数のタグをフィールドに入力します。 この例では、ケースの名前は次のとおりです。 SSH TRAFFIC on non-SSH port from 203.0.113.5 それが私たちが調査している特定のタイプのトラフィックとホストだからです。 SIEMシステムで調査するイベントが多数あるため、このような名前付けスキームは、名前がKibanaアラート、およびSuricata署名のメッセージフィールドに対応するため、ケース、タイムライン、およびアラートを追跡するのに役立ちます。

ページの一番下までスクロールして、ケースの作成ボタンをクリックします。 保存されたケースを表示するページがブラウザに表示されます。 このページからケースを編集するだけでなく、追加情報を含むマークダウン形式でコメントを追加できます。

次に、説明内のリンクをクリックして、このチュートリアルの前のステップで追加したケースのタイムラインに移動します。

ケースに含めるアラートごとに、アラートのその他のアクションアイコンをクリックします。 既存のケースに追加をクリックします。

ポップアップ表示されるモーダルでケース名をクリックして、アラートをケースに追加します。 調査しているタイムラインとアラートに対応するケースを必ず選択してください。 リスト内の各アラートを既存のケースに繰り返し追加します。

次に、ページの左側にあるナビゲーションメニューを使用して、Kibanaの Cases アプリ]( http:// localhost:5601 / app / security / casinos )にアクセスします。 ケースをクリックして、追加したアラートがケースの詳細にどのように表示されているかを確認します。

ここから、ケースの一番下までスクロールして、必要な追加情報を追加できます。 たとえば、1つまたは複数のアラートを調査するために実行した手順、新しいルールや編集されたルールなどのSuricataの構成変更、別のチームメンバーへのエスカレーション、またはケースに関連するその他のすべての手順。

追跡したいさまざまなタイプのアラートのケースを作成することに慣れたら、KibanaのSIEMツールを使用して、アラートの調査を1か所で整理および調整できます。

結論

このチュートリアルでは、関心のある特定のトラフィックに関するアラートを生成するルールをKibanaに追加することにより、既存のSuricataおよびElasticStackSIEMシステムを構築しました。 また、アラートのセットをグループ化するための1つまたは複数のタイムラインを作成しました。 community_id. 最後に、ケースを作成し、関心のある個々のアラートとともにタイムラインをそれにリンクしました。

このSIEMシステムを導入すると、システム全体のセキュリティイベントをほぼすべての規模で追跡できるようになります。 Suricataに慣れ、Kibana SIEMで生成されるアラートを追跡すると、Suricataアラートと特定のネットワークに合わせて実行するデフォルトのアクションをカスタマイズできるようになります。

KibanaのSIEMツールの詳細については、公式の Elastic SecurityDocumentationにアクセスしてください。 そこでのガイドでは、ルール、アラート、タイムライン、およびケースの使用方法をより詳細に説明しています。

より軽量なSIEMインターフェースについては、 EveBox もお勧めです。これは、すべてのSuricataイベントデータとSIEM機能を1つのページに表示します。