LAC WATCH

セキュリティとITの最新情報

RSS

株式会社ラック

メールマガジン

サイバーセキュリティや
ラックに関する情報をお届けします。

ラックピープル | 

セキュリティ競技会「Hardening 2024 Convolutions」で最優秀企業賞を獲得した舞台裏

こんにちは、山根です。

先日、サイバーセキュリティの実践的なスキルと知識を競うイベント「Hardening 2024 Convolutions」にスポンサーとして参加し、最優秀企業賞(Most Valuable Vendor:以下、MVV)を受賞しました。このイベントは、仮想環境上に構築されたECサイトに対するサイバー攻撃やシステムの不具合に対して8時間以内に対応しながらチーム対抗で売り上げを競うもので、スポンサー企業は参加チームを支援するサービスを提供します。

このイベントとの出会いは、私のキャリアに大きな影響を与えました。私は元々Webアプリケーションの脆弱性診断をしていましたが、情報システム担当として社内のセキュリティ対策を推進するきっかけになりました。私はイベントに参加して2024年で3年目になりますが、ラックでは世代交代もあり最年長スタッフとなった今回、MVVはぜひとも達成したい目標でした。MVVは、競技中に参加者へ最も価値あるサポートを提供した企業に与えられる賞です。ラックは12年間スポンサーとして関わっていましたが、実はこれまでにMVVを獲得したことはありませんでした。

この記事では、Hardening 2024 ConvolutionsにてMVVを獲得したラックが提供したサービスの、技術的な背景をご紹介します。「そもそもHardening Projectって何?」「昨年度の様子も知りたい!」という方は、以下の記事を参照してください。

提供したサービスの全体像

イベントでは、スポンサー企業それぞれがマーケットプレイス(以下、MP)と呼ばれる競技者をサポートするサービスを提供します。

2023年に参加した際は、外部に公開されているエリアであるDMZ(DeMilitarized Zone:外部と内部の中間に設けられるネットワーク)上のサーバのみを監視対象とする「DMZ見守りサービス」を提供しました。しかし、以下の図のように、MPサーバから内部ネットワークのサーバに直接アクセスできません。

「DMZ見守りサービス」ではMPサーバから内部ネットワークのサーバに直接アクセスできなかった

どうにかできないかと試行錯誤を重ねた結果、今回は内部ネットワーク内のサーバもカバーした「システム見守りサービス」として提供しました。

ラックのサービスの核となるのは、Ansibleを活用した監視基盤の自動構築です。攻撃が始まる前にいち早く監視基盤を構築しつつ、パスワード変更やバックアップの取得といった堅牢化オプションもセットで提供できました。また、Python製Webアプリを用いた死活監視や、ファイアウォールのCONNTRACKを活用したトラフィック監視、Dockerコンテナ内のファイル変更監視といった様々な機能を盛り込みました。

ここからは、ラックのMPを支える技術について詳しくご紹介します。

Ansibleによる監視基盤の自動構築

イベントにおいて、競技者や私たちスタッフが競技環境にアクセスできるのは、競技当日になってからです。そのため、競技環境にある何台ものサーバを一つひとつ手動で設定していては、攻撃が来る前に監視エージェントの導入や堅牢化の設定を終えられません。また、競技中は多くの作業を同時に進める必要があり、焦りからミスが増えるかもしれません。このような状況で、AnsibleのようなIaC(Infrastructure as Code)を用いた迅速かつ正確なサービス提供には大きなニーズがあると考えます。

Ansibleは、Python製のインフラ構築自動化ツールです。設定手順をPlaybookに記述しコード化しておき、それをAnsibleに渡すことで複数のサーバに対して自動で設定を行えます。

日本語ドキュメント (Japanese) | Ansible Documentation

具体的には次のようなPlaybookを作成しました:

  • 監視基盤の構築:監視エージェントをインストールし、監視対象の設定やサービス化を行います
  • パスワードの変更:複数ユーザのパスワードを一括で変更します
  • バックアップの取得:重要なファイルのバックアップを取得します

特にバックアップの取得機能は競技者から好評で、実際にWebサービスの復旧に活用されました。この機能は今回のMVV獲得に大きく貢献したと感じています。

今回工夫した点として、内部ネットワークへの監視対象の拡大が挙げられます。Ansibleが動作するMPサーバからは、内部ネットワークのサーバに直接アクセスできません。このため、これまでは内部ネットワークは監視対象外としていました。しかし、ファイアウォールサーバに踏み台用のアカウントを作成し、その後Ansible側でこの踏み台を経由する設定を行うことで、内部ネットワークのサーバにも自動設定を適用できるようにしました。この構成により、DMZだけでなく内部ネットワークも含めたシステム全体の監視を実現できました。

Ansibleによる自動化に特化したアプローチにより、他社のMPとの明確な差別化を図れたと考えています。

Python製Webアプリによる死活監視

2023年に引き続き、Pythonを用いたWebアプリケーションによるDMZ上サーバの死活監視も提供しました。このサービスを使うと、競技者は複数のサーバにおけるHTTPやDNSの応答状況を即座に確認し、システムの状態を一目で把握できます。

「死活監視は競技者でも対応できるのでは?」と思うかもしれませんが、競技者がアクセスするのは内部ネットワークからであり、外部からアクセスした際のみ発生する異常に気づけない場合があります。私たちのサービスは、外部のサーバから競技者の環境にアクセスし、外形監視を行います。例えばファイアウォールの設定を過度に堅牢化してしまい、外部からサービスにアクセスできなくなっていたといった問題に気づけるようになります。

ファイアウォールのCONNTRACKを用いたトラフィック監視

今回はネットワークの監視の提供もしたいと思っていました。通常、ファイアウォールではルールごとにログを出力し、どの通信が拒否されたのかを確認しますが、このイベントでは次のような課題がありました。

  • 競技者がファイアウォールのルールをリアルタイムで設定するため、MPスタッフがルールを一つずつ確認しログ出力の設定を行うのは手間がかかる。
  • 被害を抑えるため、ブロックされた通信よりも許可された通信に着目し、不審なものがないかを確認する必要がある。

そこで、ファイアウォールのCONNTRACKを利用し、競技環境を通過するすべての通信のログを取得しました。この機能は通常、フォレンジックやトラブルシューティングに使われますが、包括的なトラフィック監視としても使えると考えました。ファイアウォールのルールに依存せずすべてのトラフィックをログに残すことで、外部からの異常通信や内部からの怪しいポートへの接続など、攻撃の兆候を素早く把握できるようにしました。

※ CONNTRACKはログの量が膨大になるため、常時有効にすることは推奨されません。このイベントは8時間の競技で、事前の検証で問題ないことを入念に確認し、オプションとして提供しました。

Dockerコンテナ内のファイル変更監視

また、今回はコンテナ内のファイル監視機能も提供しました。Webサーバの公開コンテンツが格納される、/var/www/htmlといったディレクトリを監視するだけでは気づけない、コンテナ内のバックドアの設置などを検知できるようにしました。

具体的には以下の二つの手法を用いました。

コンテナのボリューム監視

コンテナ側でボリュームが設定されている場合、ボリューム内のファイルの変更はホストに反映されます。この性質を活用し、マウントしているホスト側のディレクトリを監視対象とするよう監視エージェントの設定を追加しました。

docker diffによる監視

ボリューム外に存在するファイルは、コンテナ内の情報を確認する必要があります。docker execを用いてコンテナ内でlsコマンドを実行して確認する方法もありますが、よりスマートに対応するために標準機能のdocker diffを活用しました。このコマンドでファイルの変更情報を取得し、結果をAPI経由で監視基盤に送信するようにしました。

docker diff -- Docker-docs-ja 24.0 ドキュメント

ボリューム内とボリューム外の二つの監視方法を組み合わせることで、簡易的ながら網羅的なコンテナ内のファイル変更監視機能を実現できました。

堅牢化チェックシートの配布

今回ラックは「システム見守りサービス」に加え、二つ目のMPサービスとして「サーバ・ネットワーク堅牢化チェックシート」の無料提供を行いました。

一般的なセキュリティチェックシートの項目数は100を超えることも珍しくなく、すべてを埋めるのはとても大変です。そこでイベント用にチューニングし、項目数は競技中に参照しやすいよう30項目程度に絞り込み、シンプルかつ実用的な内容としました。競技中だけでなく、競技後にも活用できる内容になっています。

おわりに

今回、MVVの副賞として「12年熟成された泡盛・古酒」をいただきました。この12年という数字に見覚えは......、ありますよね?そうです、この数字は奇しくもラックがこのイベントにスポンサーとして関わっていた年数と同じものです!12年という長い熟成期間を経て念願のMVVを獲得でき、非常に感慨深いです。

Hardening 2024 ConvolutionsでMVVを獲得できたのは、チームの努力の成果だと思っています。MPを実現するにあたって協力してくれたメンバーの皆さんに心から感謝しています。今回の経験を糧にさらなる進化を目指し、次回のイベントに向けて準備を進めてまいります。2025年のラックのMPにもぜひご期待ください!

この記事は役に立ちましたか?

はい いいえ