おれさまラボ

実際に手を動かして理解を深めるブログ。

Zero Trust Networks (1/10)

Chapter 1 Zero Trust Fundamentals

忙しい人のための3行サマリ

  • 多くのホストがインターネットと接続する現代においては、従来の境界モデルだけでは悪意のある他者からの攻撃を防ぎ切ることはできない。
  • この文脈においては、ネットワークを信頼しない、ゼロトラストモデルの考え方が重要である。
  • ゼロトラストモデルには、コントロールプレーンとデータプレーンが必要とされるが、既存の技術の組み合わせと自動化の仕組みがあれば実現可能である。

ゼロトラストの基礎

ネットワークトラフィックが盗聴されていないと言い切れるでしょうか。

エドワード・スノーデンやマーク・クラインが、これまで安全と思われてきたデータセンターの内側で情報が摂取されていたことを告発したように、これまで安全だと思われてきたネットワークは、もはや信頼できないものとなりました。

優れた暗号技術や自動化技術が発達した今、これまでの「境界モデル」から「ゼロトラストモデル」へ移行することが求められています。

ゼロトラストとは何か

ゼロトラストは、5つの基本的な考え方に基づいて構築されています。

  • ネットワークは、常に敵意にさらされていると見なす
  • ネットワークには、常に外部と内部の脅威が存在する
  • ローカルネットワークであることは、ネットワークを信頼する為の条件として不十分である
  • すべてのデバイス、ユーザー、およびネットワークフローが認証および承認されていること
  • ポリシーは動的で、できるだけ多くのデータソースから決定されているべき

従来型のセキュリティは、多層防御を基本としていますが、これは多くの問題をはらんでいます。たとえば、内部ネットワークの検証が不十分だったり、ホストの配置が物理的/論理的な柔軟性を持たなかったり、単一障害点(Single Point of Failure: SPOF)が存在したりということです。

一方で、ゼロトラストモデルは、ネットワークに依存しない考え方です。ネットワークの場所の要件が無くなると、VPNでさえその必要性を失います。ある種、バックドアが作られることと同義だからです。

主要なOSでホスト型のステートフルファイアウォールが実装され、クライアント端末側で高度な制御が可能となった今こそ、ゼロトラストモデルを採用すべき時と言えます。

コントロールプレーンとデータプレーン

ゼロトラストモデルを実現するためのシステムは、コントロールプレーンとデータプレーンに分けられます。保護されたリソースへのアクセス要求は、最初にコントロールプレーンを介して行われ、デバイス、ユーザーの両者の情報をもって認証および認可される必要があります。認証/認可は、できるだけ多くのデータソースから決定されるべきです。

コントロールプレーンは、アクセス要求を許可すると、そのクライアントからのトラフィックを受け入れられるように、データプレーンを動的に構成します。また、クライアントとデータリソースの間に暗号化されたトンネルを構成します。ゼロトラストモデルでは、これらをリアルタイムで行うべきとし、一度認証/認可したからといって信頼せず、あくまで一時的な許可を与えるに留めます。

境界モデルの歴史

従来型のセキュリティモデルである「境界モデル」は、現代においてもはや有効な対策とは言えません。なぜ、有効な対策と言えないのか、歴史を紐解きながら確認してみましょう。

プライベートアドレス空間の誕生

IPアドレスはその性質上、世界で唯一無二であることが保証されていなければなりません。そのため、誰かしらがIPアドレスを管理し、アドレスレンジの重複がないことを保証する必要があります。インターネット黎明期においてはIPアドレスの割当管理を個人が行っていましたが、現代においてはIANA (Internet Assigned Numbers Authority) がその責務を負っています。

初期のインターネットは接続ホストが少なく、IPアドレス管理は順調でした。しかし、1980年代後半から1990年代初頭にかけて、IPネットワークの採用が活発化します。それに伴い、利用されるIPアドレスも増えていきました。

ここで、ひとつの問題が生まれます。インターネットに接続しないホストの問題です。当時のIPアドレス管理の常識は、「今はインターネットに接続する予定はないけれど、将来接続するかもしれないから登録する」というものでしたが、インターネットに接続しないままとなっているホストが多数存在しました。これは、IPアドレス枯渇の観点からすると非効率的な状態です。そこで、1994年、RFC1597 において、プライベートアドレスが定義されました。みなさん、よくご存知の以下に示すアドレスレンジのことです。

  • 10.0.0.0/8
  • 172.16.0.0/12
  • 192.168.0.0/16

プライベートアドレス定義の目的は「IPアドレスの枯渇を防止すること」でしたが、おもしろいことに「インターネットに接続しない=安全」という図式が副次的に成立することとなりました。

境界モデルの誕生

1990年代から、インターネットは爆発的に普及しました。たとえば、電子メールもその一助となったサービスです。電子メールを利用するということは、インターネットと接続し、どこからでもアクセス可能なメールサーバが必要ということを意味します。プライベートネットワークをもつ組織においては、メールサーバが唯一インターネットと接続するホストになるケースとなりました。このような構成では、メールサーバはプライベートとパブリックの両方にネットワークインターフェイスを持つ必要がありました。

セキュリティ的な懸念として、メールサーバが侵害された場合、そこを踏み台にしてプライペートネットワークに侵入される可能性がありました。そこで、システム管理者たちは、インターネットからプライベートネットワークに侵入しようとする攻撃者を防ぐために、インターネットに接続するホスト(電子メールの例でいうメールサーバ)の両側にファイアウォールを配置しました。

これこそが、境界モデル誕生の瞬間です。

NATの誕生

インターネットの普及とともに、プライベートネットワークからインターネットへの接続需要は増加の一途を辿りました。しだいに、先に述べたメールサーバのようにアプリケーション単位でインターネットに面するホストを維持することが大変になっていきました。この課題を解決するために、RFC1631 でNAT (Network Address Translator) が定義されました。NAT技術を使うと、ネットワークデバイスがプライベートIPとパブリックIPを相互に変換するため、アプリケーション単位でインターネットに接続するホストを準備する必要がなくなりました。

ここでも、NATが多対1である性質から、「インターネットからプライベートネットワークに侵入できない」というセキュリティ的な副産物が生まれました。そのため、ファイアウォール機能とNAT機能は早期に統合され、セキュリティ機能として発展していくこととなります。

現代的な境界モデルの誕生

ファイアウォール/NATデバイスをインターネットとプライベートネットワークの間に配置することで、境界が明確に形成されることとなり、セキュリティゾーンの考え方が育ちました。セキュリティゾーンは大きく3つに大別され、一般にTrust(プライベートで「安全な」ゾーン)、DMZ(非武装地帯)、Untrust(インターネット)と呼ばれます。もちろん、組織や通信内容によっては別のゾーンが定義され、通信可否が管理されることになります。

このようにして、境界モデルは発展を遂げてきました。インターネットにアクセス可能なホストが少数だった時代から、多くのデバイスがプライベートネットワークからインターネットに接続する時代へとシフトしたことで、ホスト単位の制御からゾーン単位の制御へ移行しました。これにより、セキュリティを犠牲にすることなく、最小限の労力で通信制御を行うことができるようになりました。

境界モデルの脆弱性

今度は、リモート攻撃手法の変遷から境界モデルについて見ていきましょう。

インターネットが普及すると、コンピューターへリモートで接続することが簡単になりました。これは、攻撃者にとっても同じことで、リモートホストに対する攻撃のハードルが下がったことを意味します。

攻撃手法にも変化が訪れます。1990年代後半に、トロイの木馬と呼ばれるマルウェアが世界中で猛威を振るい始めました。ユーザーは何らかの方法で、マルウェアをインストールするよう誘導されます。インストールされたマルウェアは、接続ポートを開放してインターネットからの接続を待ち受けます。こうして、攻撃者は開放されたポートに接続し、ターゲットホストをリモート制御できるようになります。

システム管理者たちは、このような攻撃からホストを守る必要がありました。当時は、ホスト型のファイアウォールの概念がほとんどなかったため、ハードウェアファイアウォールの導入が最善の方法でした。DMZを明確に定義することで、プライベートネットワークとインターネットで直接的に接続できないようにし、セキュリティリスクを軽減しました。もちろん、DMZのホストはインターネットに接続しているため、攻撃対象となりましたが、ハードウェアファイアウォールがインバウンドとアウトバウンドの両方の通信を制御しているため、プライベートネットワークへ侵入することは困難となりました。

ここで、もうひとつの転換点が訪れます。

先に述べたように、インターネット接続需要の増加へ対処するために、NAT技術が開発/導入されました。プライベートネットワークからインターネットへの接続の自由度が高くなり、管理コストは下がりました。また、インターネットからプライベートネットワークへの侵入は困難になりました。

しかしながら、プライベートネットワークからインターネットへの接続は容易になりました。裏を返すと、プライベートネットワークからインターネットへの接続を悪用することも容易になりました。悪意のあるコードをプライベートネットワークに属するホスト上で実行させ、インターネット上のリモートホストにメッセージを送付する攻撃手法が現れたのです。TCPで接続された場合には、双方向通信も可能なため、インターネットから別のデータをダウンロードすることもできます。これは今日、"Phoning Home"と呼ばれる攻撃手法です。"Phoning Home"のような攻撃を検知/遮断するためには、アウトバウンドセキュリティが有効ですが、多くの場合、ユーザーの利便性を損なう結果となってしまいます。

プライベートネットワーク内から攻撃を開始する手法は、単にターゲットホストからインターネット接続するだけでなく、プライベートネットワーク内の他のホストへ通信(横方向の移動)が可能な点で非常に効果的です。プライベートネットワークから発生する通信には、たとえばシステム管理者がサーバーへアクセスするためのSSH通信や人事担当者が機密情報にアクセスための通信も含まれます。これらの例外的なアクセスは、一般にファイアウォールで制御されていますが、アクセス元のクライアント端末は保護されていません。最初に侵入したホストを足がかりに、他のホストへ横展開し、最終的に重要情報を持つシステムへのアクセス権を得ることすら可能となったのです。

プライベートネットワークが安全であると定義した代償として、一見してファイアウォールホワイトリストを適切に管理しているように見えても、プライベートネットワーク内から攻撃を開始するな手法に対しては、境界モデルが非常に脆弱であることがわかります。

ゼロトラストモデルの考え

ゼロトラストモデルでは、信頼できるものと信頼できないものを明確に区分する点では境界モデルと同じように思えます。しかし、その区分はファイアウォールホワイトリストのようにシステムに組み込まれるものではありません。ポリシーは動的に更新される必要があります。

これは、新しい考え方のように見えますが、そうでもありません。私たちは、インターネットという信頼できないものと対峙してきた歴史があります。ゼロトラストモデルでは、すべてのホストを「まるでインターネットに接続している」かのように扱います。ホストが所属するネットワークは常に危険にさらされ、通信する相手は常に悪意をもっているとみなすという考え方です。まさにインターネットに対して我々が抱く考えと同義と言えます。

境界モデルとゼロトラストモデル

境界モデルとゼロトラストモデルは根本的に考えが異なります。

境界モデルでは、信頼できるものと信頼できないものの間に強固な壁を作ろうとします。一方、ゼロトラストモデルでは、強固な壁は必要ありません。「悪意のある他者」が至るところに存在している現実を受け入れ、各々のホストを武装するのです。ただし、強固な壁を非推奨とするわけではありません。重要なシステムの周りには強固な壁を築くことが合理的でしょう。ここで述べているのは、強固な壁を築いてその内側が安全だと宣言するのではなく、各々のホスト自身のセキュリティを強化する必要があるということです。

ゼロトラストモデルでは、ネットワークを信頼しない代わりに、複数のデータリソースに基づいて信頼度(スコア)を判定します。判定には、ユーザー/アプリケーション認証、デバイス認証、および信頼スコアという3つの主要なコンポーネントがあります。この3つを組み合わせてエージェントが形成されます。コントロールプレーンは、エージェントに含まれる豊富な判断材料をもとに、ポリシーを当てはめ、クライアントからの要求を承認します。同時に、コントロールプレーンはデータプレーンに信号を送り、クライアントからの通信を受け入れるよう構成します。これには、認可と暗号化方式の情報が含まれます。こうして、クライアントはデータリソースへアクセスすることが可能となり、通信は暗号で保護されるため漏洩からも守られます。コントロールプレーンは、この一連のフローを記録しているため、必要に応じて監査もできます。

ここで述べたように、従来の境界モデルでは、IPアドレスをもとに信頼を判断していましたが、ゼロトラストモデルでは複数のデータソースをもとに信頼度を判定します。つまり、プライベートネットワークであること(IPアドレスを信頼すること)に意味はなくなります。そのため、ゼロトラストモデルにおいては、VPNのような仕組みは安全とは言えなくなることに注意してください。

ゼロトラストモデルとパブリッククラウド

現代において、パブリッククラウドは広く普及し、一般的なものとなりました。パブリッククラウドでは、複数の利用者でひとつの物理的なリソースを共有することが当たり前です。つまり、盗聴されるリスクを潜在的に抱えていることになります。論理的に閉じられたパブリッククラウド内であっても、ネットワークを信頼しきることは危険です。

そのため、ネットワークを経由するすべてのトラフィックは暗号化されることが推奨されます。アプリケーション単位での実装でも良いですが、労力や標準化を考慮するとインフラストラクチャー側で実装することが望ましいでしょう。

第1章のまとめ

本章では、境界モデルの歴史を紐解いたことで、境界モデルの問題点が浮き彫りとなりました。

また、ゼロトラストモデルの概要を学んだことで、境界モデル依存から脱却できることもわかりました。

ゼロトラストモデルは新しい考え方ですが、既存の技術の組み合わせと自動化ができれば実現可能なモデルです。

パブリッククラウドの利用が盛んになった現代においては、従来のプライベートネットワークのような構成をとったとしても、低レイヤーは他者と共有することが当たり前であり、セキュリティに対する考え方を改める必要があるでしょう。