Upgrade to Pro — share decks privately, control downloads, hide ads and more …

パブリッククラウドのセキュリティ監視【MIXI TECH CONFERENCE 2023】

パブリッククラウドのセキュリティ監視【MIXI TECH CONFERENCE 2023】

MIXI TECH CONFERENCE 2023
にてお話した軽部の資料です。

動画:https://youtu.be/wWfaHaqkcec
セッション詳細:https://techcon.mixi.co.jp/2023/d1-10

MIXI ENGINEERS

March 01, 2023
Tweet

Video

More Decks by MIXI ENGINEERS

Other Decks in Technology

Transcript

  1. ©MIXI 自己紹介 軽部 正太 開発本部 セキュリティ室 / 開発本部 CTO室 SREグループ(兼務)

    2018年中途入社 MIXIでやってきたこと ・脆弱性診断 ・サーバー開発 ・クラウド監視 ・インフラ開発 ・SOC ・Android開発 ・mixirt(CSIRT) ・新卒研修 ・などなど 2
  2. ©MIXI 5 セキュリティ室の戦術の紹介 自社サービス アプリ インフラ 関連ツール 等 社内システム 端末

    全社ツール 社内NW オフィス 設備 等 人間 アカウント 運用 脳内の情報 等 アタックサーフェス 対策の主体 事業部門 社内システム部門 各人・各部 セキュリティ室の支援の例 脆弱性診断(外注 / 内製) IaaS監視(AWS / GCP) 新卒エンジニア研修 ゼロトラスト支援(導入 / 啓発) EDRの共同運用、PFW設定見直し IDPの共同運用 パスワードマネージャの共同運用 ゼロトラスト支援(導入 / 啓発) 全職種向け研修 各種啓発や周知(全体朝会等) 業務委託監督の支援(教育資料等) 事故対応 mixirt (CSIRT)
  3. ©MIXI セキュリティ監視概要 監視アカウント • AWS(Amazon Web Services) ◦ 約50アカウント ◦

    ※ 全社対象ではない ◦ ※ 事業部側で監視している部門もある • Google Cloud(GCP) ◦ 4組織 / 100プロジェクト以上 8
  4. ©MIXI AWSの監視設定 • AWS CloudTrail ◦ 監査ログ • AWS CloudTrail

    Insights ◦ 異常なアクティビティの検出 • Amazon GuardDuty ◦ 脅威検出サービス • OSSの設定監視ツール ◦ 各アカウントからRead権限を貰って設定の監視を行うツール セキュリティ監視概要 9
  5. ©MIXI セキュリティ監視概要 Google Cloudの監視設定 • Security Command Center ◦ 設定の監視と脅威の検知

    • 内製のリソース収集ツール ◦ Security Command Centerだけでは不十分な所を補っています ◦ Google Cloud上の各種リソースの設定収集や、BigQueryを使って複数のリ ソースを組み合わせた情報を作っています ◦ 監視システムに送って設定の精査をしてアラートを作ったりしています 12
  6. ©MIXI 監視システムの紹介 既存の課題 既存の運用ではこんな課題がありました。 • 当初はアラートをSlackに通知しているだけだった ◦ プロジェクトも多く、それに比例してアラートも大量にあるため管理がかなり辛 い ◦

    過去の似たような対応を探すのも大分辛い • アラートの通知や、フィルタなどの処理がサービスごとにばらけてる • アラートの調査で時間がかかるので効率的に自動でやりたい 17
  7. ©MIXI 監視システムの紹介 ルールによるアラートの重大度の決定 • アラートに対して、内容に応じて独自で重大度を定義したルールを設定できます ◦ 元のアラートの定義より高くなるものもあれば、低くなるものもあります • 独自で定義することにより実際の運用に合った優先度で対応が行えます •

    多数の似たアラートを抑制してアラート対応の効率化が行えたり、 また逆に、優先的に対応したいアラートが他のアラートに埋もれることなく素 早く対応出来るようになっています • 元のアラートの重大度をそのまま使うことも可能です ◦ そのため、優先して対応したいものや、対応不要なものだけ個別のルールを 設定するだけで済みます 20
  8. ©MIXI 重大度の説明 • 緊急・高・中・低・対応不要の5段階をアラートに対して設定 ◦ 基本的には中以上のアラートを確認しています • 中以上はGitHubのIssueに自動で起票されアラートが管理されます • 緊急や高は優先して対応できるようにPagerDutyと連携

    ◦ 緊急はPagerDutyと連携して24/7/365で対応できる体制 • 低はSlackへの通知のみで指摘内容に目を通すくらいの対応です ◦ 新規に追加したアラートの経過観察時など 監視システムの紹介 22
  9. ©MIXI アラートのIssue管理 • 中以上のアラートは自動的にGitHub Issueに起票され管理されます ◦ アラートをIssueにすることで、対応が必要なアラートの可視化や対応記録を 残せるようにしています ◦ Issueにはアラートの情報も自動で記録されるため、基本的にサービスのコン

    ソールを見に行く必要がありません • 同一のアラートは同じIssueで管理されます ◦ 過去の対応が記録されているので、アラートの状況把握が簡単に出来るよう になっています 監視システムの紹介 23
  10. ©MIXI リソースの設定に対してのルール • リソースの設定に対してのルールは、既存の検知で上がってこないものを追加で 定義しています ◦ 例えば/3などの広範囲に公開しているFirewallの設定 ▪ 過去に/32で設定しようとした場合に誤って/3になっていたなどのケース があった

    ▪ 0.0.0.0/0ではないので既存のアラートでは上がらない ◦ Cloud Runなどサービスのアラートで見れないもの ▪ 非公開にすべきコンテンツを公開されてしまった等のインシデントの検出 監視システムの紹介 29
  11. ©MIXI アラートの自動調査 - 例① • SecurityGroupやFirewallの公開設定のアラートはルールに該当しているインスタ ンスやIPを一覧化してチェックしています ◦ TCPでコネクションの試行 ▪

    接続ができれば追加でHTTPやSSHなどでの試行も行う ◦ 稼働しているサービスがHTTPの場合は画面キャプチャを取得 ▪ どんなWebサービスが動いているか一目でわかって便利 ◦ ルール自体は許可されてる場合もあるため、一定間隔で公開してはいけない リソースが作られていないか自動でチェックしています ▪ 前回から差分があった場合のみIssueにはコメントされる 監視システムの紹介 32
  12. ©MIXI アラートの自動調査 - 例② • IPやドメインなどが危険なものでないか調査する ◦ 例えば監査ログのコール元がTorなどの不審なものでないか調査してIssueに 自動でコメント ◦

    侵害検知のアラートの場合、Actorにどういった脅威があるかを調査して Issueに自動でコメント • 他にもアラートやリソースに応じて色々チェックしています 監視システムの紹介 34
  13. ©MIXI 監視システムの紹介 ドメインクローリング機能 監視下のドメインを一定時間ごとにクローリングしてキャプチャする機能もあります。 以下の検出を目的としており、この機能で問題のある設定を多数発見できています。こ の機能はAWSとGoogle Cloud以外も対象にしています。 • 管理画面など公開してはいけないサイトの公開の検知 ◦

    外部のサービスのリソースにドメインが紐づいているのを検出したケースもあ ります ▪ 既存のアラートでは検知できないパターン • サイトの改竄 • 消し忘れレコード ◦ 管理外のIPに紐づいてしまうケースを多数検出しています 38
  14. ©MIXI • インフラ ◦ AWS (Lambda / DynamoDB / S3

    / SQSなど) ◦ リソースはCloudFormationで管理 ◦ Production環境とStaging環境の2つの環境が存在 • アプリケーション ◦ 全てLambdaで動かしている ◦ 言語はGoと一部にPython ◦ 管理画面のフロントでJS(TS / Next.js) • CICD環境 ◦ GitHub Actions / CodePipeline / CodeBuild 監視システムの構成 47
  15. ©MIXI 設計のコンセプト アプリケーション/インフラ含め設計時に考えてたのは主に以下の3つ • なるべく低コストで運用 ◦ 設計~運用が一人だったのでなるべく負荷を下げたかった • アラートは見逃さないように ◦

    バグやエラーなどで必要なアラートがなくならないように • 汎用的にする ◦ AWSとGoogle Cloud特有の処理をなるべくなくす ◦ AWSとGoogle Cloud以外でも使えるように ◦ 簡単にシステムに乗せられるように 監視システムの構成 49
  16. ©MIXI 低コストで運用する • サーバー管理はしない • マネージドに寄せる。設定もシンプルなものを採用 ◦ ほぼこれに尽きる ◦ LambdaやDynamoDBを駆使している

    ▪ アプリケーションは全てLambda ▪ 管理画面もALB + Lambda ▪ 色々制約はある...が今のところ対応できている ◦ アラートの管理はGitHubのIssueを採用 ▪ コード管理でも使っているため環境の準備が不要 監視システムの構成 50
  17. ©MIXI アラートは見逃さないようにする • SQSでメッセージのエラー管理(再送/DLQ) ◦ Lambdaがエラーになってもメッセージが消えないように ▪ 一定回数失敗するとDLQに入る ◦ LambdaとSQSのコンボはかなり便利でお気に入りです

    • エラーの検知と通知を充実させる ◦ アプリケーションエラーや障害など ◦ DLQにキューが残っている場合 ◦ エラー時にはSlackにメンション付きで飛ばしている 監視システムの構成 51
  18. ©MIXI アラートは見逃さないようにする • アラートはS3に保存して、S3イベントをトリガーにする ◦ 万が一メッセージが消えた場合でもファイルとして残っているためアラートの 復元が容易 • Staging環境で検証できるように ◦

    検証してからProductionに反映することでミスを減らせるので必須 ◦ Stagingも実際のアラートの発報で検証できるようにしている • テストコードも充実させている ◦ アラートが期待通りに発砲するかなど 監視システムの構成 52