「『新しいタイプの攻撃』の対策に向けた設計・運用ガイド」を読む

仕事から帰ってきてネットを見ていたら、IPAから新しいセキュリティの資料が出ていることに気づきました。

社内システムとお客様向けシステム、どちらを提案・構築・運用(利用)する立場にとっても、必要な情報が書いてあります。

というわけで、晩ごはんを食べ過ぎたせいで寝落ちしつつも、読んだので、自分用にメモしておきます。

ガイドの対象読者

上記のガイドの対象読者は、次の3パターンのようです。

  1. セキュリティ対策の投資どころを決める経営者
  2. セキュリティ対策担当者に仕事をさせるプロジェクトマネージャ
  3. 実際にセキュリティ対策を実施する人

読み返し用メモ

ドキュメント前半で、「新しいタイプの攻撃」とは何かと、これまでの対策だけではなぜダメかが解説されています。

23ページ以降の「出口対策(設計対策)」を読むと、具体的に何をすべきかを考えることができます。

実際の作業では、自システムのネットワーク環境に合わせて実装設計をします。そこで、付録の「対策要件定義テンプレート」が活用できるそうです(・・・とのことなのですが、読んだものの、上手く活用できる自信がありません。抽象度が高く、粒度が大きい話なのと、自分の知識のなさが原因でしょう)。

# ついでに、勝手に希望を書くと、設計後の検証(試験工程)についての情報が、もうちょっと欲しいなぁ。。。

「新しいタイプの攻撃」について

ポイントが次の3つだとすると・・・

  1. 新しいタイプの攻撃、Advanced Persistent Threats(APT)とは何か
  2. これまでの対策でなぜダメか
  3. 「出口対策」とはどのような概念か

それぞれをざっくり説明すると、こんな感じだと思います。

新しいタイプの攻撃とは
自システムにウイルスとして入り込んだ後に、通常のHTTP通信を使って攻撃者と連絡を取りつつ、そのシステムに適合した攻撃基盤を密かに構築し、内部の重要情報を盗み出す攻撃。
これまでの対策ではなぜダメか
入り込んだ時点で検出できない(対策ソフトの限界)上に、外部との通信が通常のHTTPなので、遮断しにくい。
「出口対策」とはどのような概念か
これまでの「入り口対策」に加えて、たとえ自システムに侵入されても、攻撃基盤の構築や情報の持ち出しを遮断して、実害を防ごう、という考え方。

重要な情報を窃取され、損失を起こさないためにも、ウイルスに感染することを前提とした対策を考える必要があります。ウイルスから攻撃者に送信する情報は、組織のネットワークを通って外に出ます。この組織のネットワークから外に出ないようにする出口の対策が重要になります。出口対策では、ネットワーク設計や運用においての防御が重要です。入口ではどのような攻撃を防ぎ、出口で何を防ぐかということを適切に設計しておく必要があります。

対策の実施

実装上の対策が6つ紹介されているので、つらつらとメモ。


出口対策を考えるには、システムのネットワークフロー設計の視点で対策を考えることになるため、出口対策は設計対策手法で防御する対策となります。

実装項目1: サービス通信経路設計の実装
  • 外向きの通信経路を設計しておき、経路を外れた通信を遮断することで、ウイルスがバックドア通信するのを防ぐ。

具体的には、こんなカンジのようです。

  1. FWで外向き通信の制御をする
    • AWS上のシステムについて考えると、AWSのセキュリティグループは内向き通信しか制御できないので、他のFWを使う必要がありますね。
  2. 外向きアクセスは、プロキシか特定サーバを経由させる(未経由の外向き通信を上記のFWで弾くため)
  3. FWの遮断ログを監視する
実装項目2: ブラウザ通信パターンを模倣するhttp通信検知機能の設計
  • ブラウザにできてウイルスにはできないことの特性を利用して、ウイルスによるhttp通信を検知する。(今後、IPAが実証実験をして、追加情報をくれるらしい)

AWS上のシステムについて考えると……そもそもサーバマシンでブラウザを立ち上げてWeb閲覧できるような設定をしておくなって話なので、そういう愚かなことをしている場合は、その対策が先でしょうか。

実装項目3: 最重要部のインターネット直接接続の分離設計

※実施項目6と連動。

  • 重要なサーバは、インターネットに直接アクセスさせない。管理系セグメントから外部通信する。

重要なサーバから外部へのHTTP、SSLアクセスを遮断してしまう、というもの。バックドアを作らせないためのようです。

実装項目4: SW等でのVLANネットワーク分離設計

※実施項目6と連動。

  • 重要なサーバがあるセグメントと一般のセグメントをVLANで分ける。重要なサーバにアクセスできる人を限定する。ルール違反のアクセスログを監視する。

ウイルスを内部で拡散しないためのようです。

説明の図に、目的ごとのセグメント設計の例が載っていて、参考になります。使用するポート群ごとにセグメントを分けたり(=結果として役割ごとの分割になるのだろうと推察します)、負荷分散用セグメントを分けたりしています。

実装項目5: 容量負荷監視による感染動作の検出
  • 自システムに侵入したウイルスは、そのシステムに合った攻撃基盤を構築するために、外部からファイルをダウンロードする。そのため、データ転送量を監視する。

資料には、L3スイッチを監視する図が入っています。個々のサーバで負荷を監視するところから始めるのが、カンタンかもしれません。

実装項目6: P2P到達範囲の限定設計

※実施項目3、4と連動。

  • ウイルスによってP2P用に仕立てられたクライアントが、情報を外に持ち出す。だから、P2Pの到達範囲を限定しておく。

P2Pの知識が自分は足りないので、調べる必要がありそうです。。。

限定設計は、おそらくホップ数か制限時間で行うのだと思いますが、どのようなP2Pクライアントに仕立てられるかが分からない以上、難しいのでは?と思ってしまいます。汎用的に設定できるものなのでしょうか。

余談

最後に、どうでもいい話。

出口対策のように、「事前に考えたことの不完全さを前提とする」考え方は、現実に即しているし、技術の進歩があるからこそなせる業だと思います。

  • 侵入されたケースを予測して、被害を抑えるための設計をすること
  • 大量のサーバを並列に動かして、ノードの故障を前提に設計すること
  • 絶好調な時を前提とした理想時間で、作業見積もりをしないこと

バラバラですが、考え方がどこか似ていると感じます。これらを重視することで、品質の底上げという価値を出せる点もです。

こういった考え方に基づく方法論は、カテゴリを問わず、個人的に好きです。