はじめに
NTTビジネスソリューションズの衣川です。
2025年度のハードニング競技会『Hardening 2025 Invisible Divide』に参加したので、体験記を書きたいと思います。
ハードニング競技会は、ECサイトなどのビジネスシステムに潜む脆弱性への堅牢化能力を総合的に競うコンペティションで、Hardening Projectが毎年開催しています。
具体的には、応募した人の中からチームを組み、約20台の脆弱な設定がされたサーバーをサイバー攻撃から守りつつ、ECサイトを正常稼働させ得られた売上や、ミッションというお題をクリアすることで得られるポイントなどで最終的な順位が決まります。
今回参加してきた2025年度版『Hardening 2025 Invisible Divide』の開催概要は以下の公式ページに記載されています。
開催概要/募集要項 – Hardening 2025 Invisible Divide | Hardening Project
対象読者
本記事が想定する対象読者は以下の通りです。
- ハードニング競技会を聞いたことはあり興味もあるが、具体的にどんなことをするのかイメージできない方
- ハードニング競技会に参加予定で、準備やイベント中の段取りの情報収集したい方
背景
以下2つが、今回参加しようと思った動機になります。
- 社内で開催されたMini Hardeningに参加し、得られる学びが多かったことから、より大規模な競技会に興味がわいた
- テクニカルだけでなくビジネス(売上確保や顧客対応など)への対応も求められることが業務にも活かせると考えた
スケジュール
競技会に参加するにあたり、実施したことを以下に記載します。
| 日付 | 実施内容 | 詳細 |
|---|---|---|
| 8/18 | 申し込み締め切り | 応募動機などを記載 |
| 8/22 | 応募結果発表 | 当選連絡とチームメンバー発表 |
| 8/22 - 10/7 | 準備期間 | チームメンバーで準備を進める |
| 10/5 | 競技会資料の公開 | 資料は100ページ越え |
| 10/7 | 沖縄現地入りし、最終調整 | メンバー全員が対面で集合 |
| 10/8 | Hardening Day | 競技会 本番! |
| 10/9 | Analysis Day | 発生したインシデントを整理 |
| 10/10 | Softening Day | 準備期間からHardening Dayまでの取り組みを各チームで発表 |
チームメンバー
全8人のチームメンバーはほぼ全員初対面で、インフラ企業や法律事務所など様々な業界の方に加え、学生の方もおられるなど多様なバックグラウンドをもったチーム構成になりました。
私は普段、IT環境を健全で安全な状態に保つための「衛生管理」であるサイバーハイジーンの実現にむけたお客様の支援をしています。 他のメンバーも基本的にITに関わりのあるメンバーがそろっていましたが、競技経験としては、約10年前のハードニング競技会に参加された方が1名で小規模なハードニング競技会への参加経験者が私を含めて2名という構成でした。 経験者が少なく競技会の準備という観点では大変でしたが、その分フラットな関係で話し合えたことはよかったと感じています。
まず最初にメンバーのやりたいことをもとに準備と当日の役割分担のためにビジネスチームとテクニカルチームに分け、私はテクニカルチームに所属しました。
準備
毎週定例会を実施して、チームメンバーで分担して準備を進めました。 (約1か月半の準備期間で打ち合わせや演習を9回実施していました)
全部で70個以上のタスクをこなしたのですが、以下にビジネスチームとテクニカルチームのそれぞれについて3つ抜粋しています。
■ビジネスチーム
- ECサイトの販売戦略(在庫補充のタイミングなどをチーム内で検討)
- 個人情報漏洩時の対応整理(競技会中に個人情報が漏洩してしまうことを想定)
- 特定商取引法による表記の作成(ECサイトを利用するので)
- Market Placeの製品選定
- 社内規程類の作成
※ Market Place(以下、MP)とは、ハードニング競技会で参加チームがスポンサー企業の製品やサービスを利用できる仕組みです。 MarketPlaceで診断ツールや支援サービスを購入することで、チームは不足する技術やリソースを補えます。
■テクニカルチーム
- 初期パスワードから変更するパスワードの検討(複雑だけれど、すべて同じにしてしまわないように工夫)
- コマンドチートシートの作成(後ほど詳細を説明)
- インシデント対応フロー整理と模擬演習での改善(後ほど詳細を説明)
- ファイアウォールのポリシー検討(ホワイトリストで通すべき通信を選定)
- 脆弱な設定の洗い出し(競技会資料が公開されてから実施)
この中から私がメインで担当した以下の2つを紹介したいと思います。
- コマンドチートシートの作成
- インシデント対応フロー整理と模擬演習での改善
コマンドチートシートの作成
Linuxユーザーのパスワード変更やデータベースバックアップなどのコマンド自体は生成AIで出すことはできるものの、それが正しく動作するか検証し、整理していました。
この検証をしていく中で、Linux・データベース・WordPressなどさまざまなツールのセキュリティ対策を経験でき、良い経験になるとともに、セキュリティは幅広い知識が求められることも再認識しました。
また、「ハードニングファン★リファクタ」に記載されていたLL改ざん検知※も動作確認してみました。 (※LL改ざん検知:Linuxで利用されるLLコマンド(ls -l のエイリアス)を活用したファイルの改ざん検知をする手法) 改ざん検知ができるOSSは導入ミスを考慮して利用せずに、LL改ざん検知を本番で利用させていただきました。
インシデント対応フロー整理と模擬演習での改善
インシデントが起きた時の対応を、メンバーの役割分担から整理しました。
しかし、対応時間が限られていることと、複数のインシデントの同時発生が想定されることから、厳密なフローの整理と迅速で柔軟なインシデント対応の間のトレードオフに悩まされました。
そこで、以下2つの演習を実施して、作成したフローが実運用に使えるかどうかを検証しました。
- 自作したHardening競技環境を活用したチーム内での演習
- インシデント対応のシナリオを作成し、机上演習
自作したHardening競技環境は、WordPressがインストールされたWebサーバー1つを守るハードニング競技で、詳細については本ブログにて後日掲載予定です。
実際に演習を実施していくと、複数のツールを使う余裕がないことや、複数のインシデントが同時に発生した時に全体の状況を確認しづらくなることなどがわかり、フローや報告方法など具体的な手順を改善していきました。
前日
チームメンバー全員が前日入りして最後のミーティングをしました。
特に、競技資料が公開されたのが数日前ということもあり、資料の読み込みや設定値の最終確認などを実施していました
また、当日の段取りや気を付けるべきことなど「経験者でないとわからないこと」を相談員の方に相談していました。 「相談員」は競技参加者をサポートしてくださる方々で、以下に詳細が記載されています。
NECセキュリティブログ - Hardening 2025 Invisible Divide 参加記
Hardening Day
この日が本番の競技会の日で、沖縄空手会館で9時から実施されました。
事前説明のあとに競技が開始されたのですが、競技会中はインシデントの連続でした。 以下に2つ抜粋して紹介したいと思います。
ECサイトが稼働していない
まず、ECサイトが稼働していない時間が多かったです。 下図はすべてのECサイトが起動していない時の画像です。 (Took a Nap(昼寝中)はECサイトが稼働していないことを表現しています)

他のインシデント対応で人手が不足しており対応が遅くなりましたが、振り返ると売上に直結するショップの対応を優先しておくべきでした。
事前にインシデント対応の優先順位づけのルールを決め、お客様影響があるインシデントを最優先しようと決めていたのですが、いざインシデントが起きると十分に意識できなくなってしまいました。
個人情報の漏洩
競技の中盤に、対応が漏れていたサーバーからディレクトリリスティングによって個人情報が漏洩してしまいました。
チームのメンバーの中で対象のサーバーOSに慣れている人がおらず、対応に苦慮しました。 (設定変更をいくつも試したのですが、どれも上手くいきませんでした)
最終的には、WAFで当該ディレクトリへのアクセスを禁止することで何とか対応できましたが、もし現実で起きたら、と思うと恐ろしかったです。
上層部からの呼び出し
競技会の設定として、ある架空の企業の社員として競技会に臨むのですが、その企業の上層部にインシデントの対応状況を聞かれる(詰められる)場面がありました。
私は直接対応しなかったのですが、対応したリーダーのテンションが下がっており、なかなか厳しい状況だったようです。
MP利用時の不手際
MPでWAFの購入権を獲得できたので、さっそく購入しようと思ったのですが、競技会環境への接続に手間取り、結果として導入できたのは11時ごろになってしまいました
しかし、この後に一部メンバーがWordPressなどのCMSの管理画面にアクセスできなくなりました。
最終的には管理画面への通信をWAFでブロックしてしまっていたのですが、WAFの導入前後で正常性確認をすることで、攻撃をうけたのか、自分たちの設定ミスなのか、切り分けできる状態を事前に作るべきでした。 普段の業務なら注意できていることも慌てている時にはおろそかになってしまうことを身をもって体感しました。
ちなみに、別のネットワークからならアクセスできることをチーム内で共有したことで解決の糸口が見つかり、些細な事でも共有する密なコミュニケーションの重要性を再認識させられました。
Analysis Day
この日はHardening Dayで受けた攻撃や自分たちの取り組みを振り返る日として設けられていました。
競技会当日は時間がなく共有できなかった個人の取り組みの共有や、MPで購入したWAFを提供してくださったベンダーの方からどのような攻撃を受けていたのかをログをもとに説明など有意義な振り返りになりました。
Softening Day
最終日に行われたSoftening Dayでは、主に以下4つが行われました。
- 各チームの取り組みの発表
- 運営側からの競技会の説明
- スポンサー賞
- 順位発表
私たちのチームは総合順位が12チーム中7位でしたが、技術点は1位でした。 (技術点が1位でしたが、総合順位が中位だったことは後述します)

技術点が1位だったことをチームメンバーと振り返りをした時に以下2つが挙がりました。
- 初動対応によるPWと権限変更
- ファイアウォールの詳細な設定(ホワイトリストで制御)
特に2つ目のファイアウォールについては設定値の確認も入念に実施していたので、当日効果を発揮してくれていたのであれば嬉しいです。
振り返り
総括として、学んだことや今後に活かしたいことを記載します
よかった点
チームビルディング
ハードニング競技会で最も重要だと感じたのはチームビルディングです。 準備から当日の競技会、最後の振り返りまでチームメンバーとのコミュニケーションが本当に大切でした。
リーダーが率先してチームビルディングに取り組んでくれたことで、定例会でのコミュニケーションのしやすさに加え、チャットへはリアクションをすることや他のメンバーのタスクも一緒に考える、など風通しがよく、準備を進めやすかったです。
私個人としては、競技会中はチームは2つの場所に分かれて作業するのですが、お互いの現状を把握するために走って移動しており、歩数計が約1万歩になっていました。
演習の重要性の再認識
一度作成したインシデント対応フローやチーム内での報告方法を、模擬環境での演習や机上演習で利用することで、明らかになった改善点を多く修正できました。
それでも本番の競技会では、インシデント対応フローが上手く機能していないこともあったので、事前準備の段階で改善していたため本番でも一定の機能を果たせたのだと考えています。
インシデント対応や作業手順などは継続的にテストし、改善していくことが重要だと身をもって実感しました。
啓発点
ビジネスを考慮した判断
競技会では売上を増やすための対応が後手に回った結果、売上が増えず技術点は高いが順位は中位にとどまりました。
私含めてテクニカルチーム側が、インシデント対応のフローの優先順位に則って売上が上がっていないことへの対処を優先できていなかったことが原因だと考えています。
この反省は普段の業務に活かせると考えており、ビジネスとテクニカルが両方ともお互いのことを理解し、自分の取り組みが何につながるのかを把握することがチームの目標達成には重要だと感じました。
技術的スキルの不足
Softening Dayで他のチームの発表を聞いていると、OSSを活用したサーバー一括管理や複数サーバーをたてた模擬環境でのテストなど、技術的に高度な取り組みをしているチームもありました。
今の私ではそこまで手が回らなかった・技術的に本番で使えていたか怪しいと感じ、その差を痛感したことで自分も技術力を高めたいというモチベーションにもつながりました。
おわりに
ここまで記載したとおり本当に多くの学びを得られたのは、実務で滅多に起こりえないセキュリティインシデントを(疑似的に)経験できるイベントだったからこそだと感じています。
今回、このような素晴らしい競技会を企画してくださった運営の皆様はじめ競技会に関わってくださった皆様、そしてチームメンバーに感謝申し上げます。
執筆者
衣川 琢磨(NTTビジネスソリューションズ株式会社 バリューデザイン部)
セキュリティ分野の中でも特にサイバーハイジーンの実現にむけて支援するマネージドサービスの開発と運用に携わっています。
商標
- WordPressは WordPress Foundation の登録商標です。
- Linuxは Linus Torvalds 氏の登録商標です
- NECは 日本電気株式会社(NEC Corporation) の登録商標です。