Cloudflare上でホストされたウェブサイトがCatoファイアウォールをバイパスする

Prev Next

問題

CatoファイアウォールはCloudflareでホストされたウェブサイトでファイアウォールルールを適用することに失敗する。 例えば、カテゴリーデータベースとして分類されているウェブサイトresearch.cloudflare.comは、ファイアウォールルールでこのカテゴリをブロックしているにも関わらず許可されている。

関連するCMAイベントは、意図したサイトと一致せずファイアウォールルールをバイパスする異なるドメイン名、cloudflare-ech.comを表示している。 このイベントは、ウェブサイトの宛先IPアドレスをフィルタリングすることで見つけることができる。

環境

  • 特定のカテゴリをブロックするファイアウォールルール。

  • TLSインスペクションが有効になっていません。

トラブルシューティング

イベント内のドメイン名cloudflare-ech.comの存在は、暗号化されたクライアントハロー(ECH)プロトコルが使用されていることを示唆しています。

ECHとは何か?

Cloudflareのドキュメントに記載されているように、ECHはTLSクライアントハローパケットの一部を暗号化し、通常はTLSセッションの確立に使用されるサーバー名表示(SNI)をマスクします。 これは、CatoがCloudflareへの接続を確認しながら、特定のウェブサイトを識別できないことを意味します。 これが機能するためには、ブラウザーおよびウェブサイトの両方がECHをサポートする必要があります。

ECHの仕組み

  1. 公開鍵配布: サーバーは、DNS経由で、しばしばDoH(HTTPSを介したDNS)やDoT(TLSを介したDNS)のような安全なDNSプロトコルを使用して、公開鍵(ECH設定内)を共有します。 ただし、UDPを介した暗号化されていないDNSも利用可能です。 このキーは、クライアントハローのメッセージを暗号化するためにクライアントによって使用されます。 以下は、ECH設定を含むHTTPSタイプのDNS応答の例です。

  2. クライアントハロー暗号化: 接続時に、クライアントはSNIなどクライアントハローの機密部分をサーバーの公開鍵を使用して暗号化します。 この情報を復号化できるのはサーバーのみです。 暗号化されていない外部クライアントハローも送信され、デフォルトのSNIのような一般的な情報を表示しますが、本当のターゲットは明らかにならないかもしれません。 以下の例では、デフォルトのSNIはcloudflare-ech.comです

  3. フォールバックメカニズム: ECHがサポートされている場合、サーバーは暗号化されたクライアントハローを処理し、接続を続行します。 サポートされていない場合、フォールバックメカニズムは暗号化されていないクライアントハローでの再接続を試み、従来のTLS 1.3サーバーとの後方互換性を維持します。

解決策

Catoは現在ECHをサポートしていないため、ネットワーク設定に基づいて未暗号化SNI TLS接続にフォールバックを強制する次の回避策をお勧めします:

  • インターネットファイアウォールでDoH、DoT、およびQUICプロトコルをブロックします。 これにより、ECH設定を交換するためのセキュアDNSプロトコルの使用が防止されます。

  • ブラウザーによっては、クライアントがECH設定を交換するためにUDPベースのDNSへのフォールバックを行う場合があります。 その場合、TLSインスペクションを影響を受けるサイトやユーザーに対して有効にします。 ECHは中間者攻撃(MITM)手法をサポートしていないため、接続は未暗号化のSNIを使用するフォールバックを行います。

  • 最後の手段として、インターネットファイアウォール内のドメインcloudflare-ech.comをブロックします。 これによりブラウザは未暗号化SNIにフォールバックし、正しいファイアウォールルールを適用できるようにします。