SIEM on Amazon OpenSearch Serviceによるセキュリティログの可視化について

はじめに

株式会社セガ ゲームコンテンツ&サービス事業本部技術本部開発IT支援部の長谷川と申します。今回はセキュリティログの活用法の一例としてSIEMを用いた可視化方法を紹介します。

目次

背景

昨今セキュリティ対策不足によるデータの抽出やサービス操作される被害が発生しており、ログからユーザの行動を抽出し、可視化するまでを一括管理できるものが求められていました。さまざまなサービスの中でSIEM on Amazon OpenSearch Serviceにてログ情報からユーザの行動を可視化・検索により原因を改善するができるため、利用し始めました。 セキュリティログをgrepやAthena利用して調査を行ってきましたが、可視化を行うまでは進んでおらず全体的なセキュリティを確認するまで相当な時間がかかっていました。上記のサービスを利用することで、原因特定までの時間が軽減されました。

Opensearch(Elasticsearch)とは

  • 大容量データを処理することを想定した全文検索エンジン
  • 複数のノードにデータ分散して保存する分散設計
  • システムログの可視化・検知やユーザへのレコメンドや分析など多種多様な範囲で利用可能

SIEMとは

  • SIEM は Security Information and Event Management の略で、セキュリティ機器、ネットワーク機器、その他のあらゆる機器のデータを収集及び一元管理をして、相関分析によって脅威検出とインシデントレスポンスをサポートするためのソリューションです。Amazon OpenSearch Service は、OpenSearch と OpenSearch Dashboards を大規模かつ簡単でコスト効率の良い方法を使用してデプロイ、保護、実行する完全マネージド型サービスです。Amazon OpenSearch Service の環境に SIEM として必要な機能を実装したのが SIEM on Amazon ES です。

github.com

Cognitoとは

大きくユーザプールとIDプールに分けて認証・認可を行うシステムです

ユーザプールとは

  • ユーザの作成、管理及び認証を行うユーザディレクトリです
  • アプリからの多数の承認フローが利用可能です
  • サインイン後に発行されるトークンを用いて、認証されたサービスへアクセスを行います

IDプールとは

  • ユーザプールにて認証されたユーザがどのリソースへのアクセスに対してユーザの権限を管理します
  • 未承認のユーザに対して、一時的なリソースへのアクセス権を付与することができます
  • ユーザのアクセス権をルールベースおよびアクセスベースでの制御が可能です

アーキテクチャ

設定方法

※今回はセキュリティ面を考慮しまして、VPC内でOpenSearchを構築いたします

  1. SIEMの設定方法は下記より構築しています SIEM構築
  2. ECS on Fargate,SecretsManager,Cognito,ELB,Route53サービスの作成します
    1. terraformにより作成(作成方法については割愛します)
  3. Cognito設定を一部抜粋して紹介します
    1. ユーザプールの作成

      1. 該当のユーザプールのサインインエクスペリエンス欄より、多機能認証を必須設定する
      2. アプリケーション総合よりアプリケーションクライアントの作成をします
        1. 認証フローについては該当の項目を選択します

          Note If you don't specify a value for ExplicitAuthFlows, your user client supports ALLOW_REFRESH_TOKEN_AUTH, ALLOW_USER_SRP_AUTH, and ALLOW_CUSTOM_AUTH. docs.aws.amazon.com

        2. コールバックURL,サインアウトURLを記入します
    2. IDプールを作成します

      1. ユーザアクセス欄より認証されたユーザに対するロールを作成します
  4. nginxプロキシによるCognitio認証設定します
    1. https://repost.aws/ja/knowledge-center/opensearch-outside-vpc-nginx
    2. セキュリティの観点より環境情報などをSecretsManagerより値を取得し、nginxに取得した環境変数を渡します ※下記はタスク定義の設定を抜粋して記載しています
{
    "containerDefinitions": [
    { ------ 中略 ------
        "secrets": [
            {
                "name": "opensearch_domain",
                "valueFrom": <secretsmanager_arn>:<opensearch_domain_key>::
            },
            {
                "name": "cognito_domain",
                "valueFrom": <secretsmanager_arn>:<cognito_domain_key>::
            }
        ]
    }
}

Cognitoによるログイン

  • SIEMのURLにアクセスすることでCognito認証によるログインを行います
  • MFA設定されている場合は次にTOTPよりコードを入力します

セキュリティログの可視化

  • Discover画面にて特定のインデックスで取り込んだログを表示が可能になります

    • フィルターやSearch欄でクエリで絞り込むことで特定ログ・項目の絞り込みが可能になります
  • DashBoardにおいても特定フィルター、特定アカウント、特定ACLの絞り込みにより必要なデータの可視化が可能になります


    クロスアカウントのCloudTrailログの可視化


WAFログの可視化

補足

※今回はアカウント間のデータを一括収集を行い、データの可視化を行う例となっております。

  • 特定の条件(特定のIP、国、UAからDDosアタック)が発生した場合にOpensearchのアラート通知を送るなどでシステム改善の気づきを与えます
  • セキュリティログに限らずアクセスログも収集しているため、Athenaに頼らずに検索や可視化までが一括して可能になるため汎用的な調査が可能になります
  • アクセスログ(CloudFront,ELB,WAF,VPCFlowログなど)の可視化により不要に開放しているセキュリティグループやパスを改善する手がかりを得られ、システム改善にも貢献します
  • 他のメンバーにも確認しやすいDashBoardになっているため、インフラ面の改善に限らずアプリケーション側の改善やBotなどの防ぐべき対象を可視化することができます

まとめ

  • セキュリティログの一元管理および可視化としてSIEMを利用しました
  • 一括管理することで、情報が整理されて必要な条件下でのセキュリティの対策を包括的に行うことが可能になります
  • S3のトリガー経由でログの取り込みが行われるため、同一アカウント・クロスアカウントに限らず様々なサービスログを取り込むことも可能になります

※まずは、セキュリティに不安がある方や様々なサービスを用いて通知疲れになっている方はSIEMを用いて一元管理して可視化してみると効率的な監視の手がかりがつかめると思います。

セガで働くことにご興味を持たれましたら下記サイトにアクセスお願いします。 www.sega.co.jp (C)SEGA

参考

Powered by はてなブログ