この記事はアピリッツの技術ブログ「DoRuby」から移行した記事です。情報が古い可能性がありますのでご注意ください。
Micro Hardeningの記念すべき第一回開催に参加して全13チーム中 4位だったのでHardeningをダイレクトマーケティングしていきたい。
TL; DR
Micro Hardeningは楽しいので参加しよう。
ハードニングって?
Hardening ProjectはWASForum主催のセキュリティに関する実践対応力を総合的に競うコンペだ。参加者は架空のECサイト運用者となって延々と押し寄せるインシデントに対応する。つまり、攻撃者が様々な方向から攻撃し、複数のサーバがダウンし、各種のプロセスは停止し、トップページは改竄され『Hacked 🙂 』とか書かれ、帯域はサチり、顧客からの問い合わせメールが山と積もる。
参加者はチームとなってこれに対応し、攻撃を検知し、対応策を講じて、改竄されたページを発見しては戻し、ダウンしたサーバを復旧させ、いつの間にか入ったウィルスにも負けず、有料セキュリティソフトの導入を検討し、障害の報告書を書いて提出し、記者会見を開いて状況を説明しなければならない。ちなみにどれも本当にやる。
Micro Hardening
自分が今回参加しに行ったハードニングはMicro、つまりフルのハードニングに対するミニ・ミニ版だ。フルのハードニングは二日間ほどフル日程で競技を行うが、それより小規模なMini Hardeningは3-4時間ほど。そして更に小さいMicro Hardeningは1時間未満で終わる。ちなみにMicroは今回が初の開催らしい。
もちろん、せっかく土日にやってきて1時間だけで終わるのは寂しいので繰り返し何度も行う。なお、攻撃パターンは毎回同じなので敵が出てくるパターンを死にながら覚えるタイプのアクションゲームと大体同じだ。
また、競技時間の短さ以外の特徴としてMicro Hardeningでは技術以外の対応はしなくてもいい。つまり、他のハードニングとは違って障害報告書を書いたり顧客のメールに返信したり記者会見はしなくていい。こういうところでも参加するハードルは非常に低い競技だといえる。(我々は障害報告書のテンプレートを見るだけで色々思い出して複雑に気持ちになれる)
さて、実際にどんなことをやるのかというと、まず構築済みの環境がぽいっと渡されるのでポートフォワーディングなどしながらSSH接続する。
それぞれの環境ではECサイトが稼働しており、このECサイトへボットが定期的にアクセスして何かしらを買っていく。そして、この受注金額がスコアとして加算されていくので我々はボット様がお買い物に不自由されないよう保守していればいい。
しかし順調だったグラフの伸びも突然止まる。ページ改竄、DoSアタック、SQLインジェクション。プロセスは落ちるわ、不思議な力(脆弱性)によって見知らぬファイルが作られるわで忙しい。時間こそ僅かに45分だが、この間に5,6回ものの攻撃を受けるのでその度に対処して復旧しなければならない。
なお仮に購入操作に問題はなくとも復旧までの間はボットも買い物をしない。Hacked 🙂 と書かれたトップページのECサイトで買い物をする豪の者はいないのだ。
面白いところ
まず、この競技の良いところは「理解/把握したらすぐ次のセットで対応を試せる、改善できる」ところだ。普通のハードニングでは「あぁ〜あの時こうしていればぁ!」と悔しい思いをしてもすぐにリトライはできないがMicro Hardeningならすぐにリトライ出来る。
スコアが常に可視化されてスクスクと伸びていくのを見るのも楽しい。何故か止まったらすぐに原因を調べて対処だ。あまり他の参加者と競う雰囲気ではなく、前回の自分たちのスコアを乗り越えられるかどうかという達成感に重点が置かれる。
ひとくちレポート
チームは会場入りした順番にランダムで決定され初対面のメンバー同士だったものの、Slackや口頭で適宜コミュニケーションを取って各自が得意な部分を受け持ちながら競技を進められた。ISUCONなど高速化系の競技でMySQLやアクセスログ周りがいくらか明るくなったのでもっぱらその辺をやっていた。
結果は序文にも書いた通り13チーム中の4位とまぁまぁの高得点を達成。特に最終セットでは全てのインシデントをきっちり対応しきったつもりだったが、いくつかのボーナス得点を獲得できていなかったらしくトップとはいくらか差の付いた結果になった。
とまぁ残念ながらインシデントや他の参加者について詳細なことは書けないが、とりあえずMicro Hardeningはハードニングの雰囲気をつかむにはとても良い入り口なので是非みんなも参加してみてほしい。