Hardening 2020 H3DXから学ぶ「インシデント対応訓練」の重要性

こんにちは。SRE部の横田・秋田です。普段はZOZOTOWNのリプレイスや運用に携わっています。

私たちは2020年11月13日から14日にかけてフル・オンラインで開催されたHardening 2020 H3DXに参加しました。本記事では、過去にオフライン開催のHardening Projectに参加経験のある秋田と、今回が初のHardening Project参加となった横田の体験を振り返り、「サービスを守る訓練」の重要性を再確認してみます。

Hardening 2020 H3DXについて

WASForum Hardening Projectにより開催されたイベントです。

Hardening 2020 H3DXは技術競技会であるHardening Dayが1日、全参加チームの施策発表などを聴講形式で進行するSoftening Dayが1日という、合計2日の2部構成で開催されました。

それぞれ、以下のような特徴があります。

Hardening Day

  • 各チームに同じ条件で守るべきEコマースサイトなどのシステム環境(20台程度のサーバー)が提供される
  • 競技中に次々と発生するサイバー攻撃やインシデントに対してチームで速やかに対応する
  • マーケットプレイスからセキュリティ機器の購入や人員の増援なども各チームの判断で行える
  • 技術面だけでは無くビジネスの売上、顧客対応など様々な観点から得点を競い合う
  • 競技時間は8時間、振り返りや順位発表などは2日目のSoftening Dayで実施される

Softening Day

  • 全チームがHardening開催当日までの取り組みや、実際に行った当日の施策などを発表
  • 運営側の攻撃チームなどからの解説、振り返り
  • 優勝チームや協賛社が選ぶMVPチームなどの結果発表

過去の開催は沖縄などの地域で競技が行われていましたが、昨今の状況もあり今回はフル・オンラインでの開催となりました。

体験レポート

開催1か月前から当日までの動きを紹介します。

開催前日までの動き

開催の約1か月前に当日のチームメンバーが発表されました。

チーム名やチーム内での役職(CEOなどいくつかの役職が必須指定される)を期日までに運営へ報告する必要がありますが、基本的には各チームの裁量で必要に応じてMTGや事前準備などを実施します。

私たち2名は参加申し込み時に希望した通りの同じチームでの参加となり、合計10名のチーム編成となりました。ただし、必ず希望が通るわけではないようです。

多くのメンバーがほぼ面識の無い状態から始まりましたが、私たちはチーム発表当日に他のチームメンバーがコミュニケーションの場を提供してくれました。

開催当日までは以下のツールでコミュニケーションを行い徐々に打ち解けていくことができました。

  • Discordによるテキストチャットコミュニケーション
  • ZoomやDiscordによるボイスチャンネルを活用したオンラインコミュニケーション

過去のHardening Project経験者のリードや過去のSoftening DayのYouTube映像を参考に以下のような事前準備が行われました。

  • スキルマップシートを作成してチームメンバーの経験などを相互に把握する
  • 当日の役割分担を決める
    • 役職以外にもLinux担当/Windows担当/カスタマーサポート対応担当
  • 当日の連携手段を決める
  • マーケットプレイスで何を購入するのかを決める
  • 稟議書など必要になる可能性がある文面の雛形を作成する
  • 当日利用できそうなスクリプトなどを各自用意する
  • Googleドライブを活用しチーム内の資料やツールを共有管理する

タスク管理のツールを検討する際にはTrelloMiroなどが案として上がりましたが、ほとんどのメンバーがTrelloやMiroといったツールを利用したことがありませんでした。そこで、チームメンバー全員が利用経験のあるGoogleスプレッドシートを活用することにしました。

Hardening Day前日

前日に発表される資料があるので、その資料の読み込みと当日のタスク対応順序や連携方法などの詳細についての最終確認をチームで行いました。各担当ごとの事前に決めたタスクの内容をいくつか紹介します。

Linux担当

  • 各Linuxサーバーにてアカウントの初期パスワード変更
  • 各CMSの初期パスワード変更
  • Webアプリケーションのバックアップ
  • crontabの確認

Windows担当

  • ローカルアカウントの初期パスワード変更
  • タスクスケジューラの確認
  • サービスの確認
  • Windowsファイアウォールの確認

カスタマーサポート対応担当

  • メールの送受信確認
  • マーケットプレイス用稟議書の準備
  • 在庫の確認
  • Webページの正常性の確認

Hardening Day当日

いよいよ当日となりました。例年の開催では現地会場に参加者全員が集まり競技をしますが、Hardening 2020 H3DXはフル・オンラインでの開催のためDiscordで集合が確認できたチームからZoom会場へと向います。

オープニングを経て、実際に競技が始まります。今回は競技環境への接続はApache Guacamoleというツールを介して行いました。

次々に仕掛けられる攻撃

競技開始後から衛るべきサイトや様々な環境に対して次々に攻撃が仕掛けられてきます。

具体的にどのような攻撃が発生していたかについては、今後の参加者の楽しみを奪ってしまうことになるため割愛しますが、とにかく次々と問題が発生します。

あらかじめ決めておいた作業を実施することや、発生している問題に対して対応を進めることも重要なのですが、状況を共有しあうことがHardeningにとっては非常に大切です。

やらなくてはいけないことは技術的なことだけではない

システムに対して手を加えていくことは当然必要なのですが、Hardening Dayはその他にもやらなければいけないことが多々存在しました。全てを記載できないのですが、例えば以下のような内容です。

  • 発生してしまったインシデントに対する各方面への報告
  • メールを利用した顧客対応
  • サイトの売り上げ向上につなげるミッション

事前にある程度役割を決めていても、その担当者だけでは手が回らなくなってしまうこともありました。その際にはチームメンバーとコミュニケーションを取り、優先順位をつけて対応します。時には早急な復旧を不要と判断してシステムを放置する、という決断も行いました。

リモートならではのチーム内の工夫

オフライン開催では近くにチームメンバーがいますが、今回はリモート開催です。情報共有を円滑にするために今回チームで以下のような工夫をしました。

各役割ごとにDiscordのボイスチャンネルを作成しメンバーは自分の役割のボイスチャンネルに常駐する

10人全員が1つのボイスチャンネルに入っていると、なかなか全員で会話することが難しくなるため、今回は事前に決めておいた役割ごとに数人程度のボイスチャンネルを用意しました。

各役割ごとのテキストチャットチャンネルも作成して作業記録はそこに残す

テキストチャットを追えば今どのような流れで対応がされているのかを後から参加したメンバーも確認できます。

これらの工夫をしていたため、当日はコミュニケーションについては特に不自由さを感じませんでした。

8時間という競技時間中、迫りくる攻撃やその他の対応により全員かなり疲れていましたが、離脱者も出ずになんとかHardening Dayを終えることができました。

Softening Day

前述の通り、前日の振り返りを行い、各チームがその内容を発表しました。

そして、表彰セッションです。

チームの結果は

総合優勝には手が届きませんでしたが技術点と対応点が1位でした。

result1

この結果は、チームの全員がそれぞれの役割を果たしてくれておかげだと思います。しかし、売り上げが伴わなかったことはとても残念なことだったので、次回以降の教訓として活かしていければと思います。

Hardening 2020 H3DXに参加して

今回、横田はHardening Projectに初参加、秋田はオンライン形式には初参加でした。

普段はZOZOTOWNのSREエンジニアとして業務を行っていますが、Hardeningを通じて経営的な判断をすることの難しさや、実際の顧客対応の大変さなどが擬似的とはいえ体験できたことはとても良かったです。様々な問題に対して行ったアクション全てが正解だったとは言えませんが、競技だからこそ恐れずに失敗することができたとも言えます。

また競技中にチームで行っていたコミュニケーション手段の工夫などは実際に業務の中でトラブルが発生した際にも活かせるシーンが非常に多いと感じました。

コミュニケーションツールなどのインシデント対応をする際の環境やフローを整備する重要性、それらを全員が合意して認識していることの重要性を改めて認識しました。また、実際のインシデントが発生する前に訓練によって擬似的に体験しながら自分が行うべき行動を考えたり、チームで役割分担の再確認をする重要性も感じました。今後も積極的にHardening Projectに参加していきたいと思います。皆さんも是非Hardening Projectに参加し、起こりうるインシデントに備えましょう!

ZOZOテクノロジーズでは、一緒にサービスを作り上げてくれる仲間を募集中です。ご興味のある方は、以下のリンクからぜひご応募ください!

https://tech.zozo.com/recruit/tech.zozo.com

カテゴリー