はい、彼らはここで魔法を必要とせず、TCPパケットの内容を単純に照合するだけです。SSHとTLS(SSL)はペイロードを暗号化しますが、プロトコルヘッダー自体は依然として区別可能であり、互いに大きく異なります。たとえば、SSHv2接続は常にクライアントが送信することから始まりますSSH-2.0-(client name and version)
。同様に、ファイアウォールはTLS接続が内部でHTTPを伝送するかどうかを実際に知ることができなくても、TLS自体を認識することができます。
TCPの上の層のこのような検査は、通常、比較的一般的な機能である「ディープパケットインスペクション」に該当します。
これを回避する明白な方法の1つは、stunnel、haproxy、またはsniproxyなどを使用して、TLS 内でSSH をトンネリングすることです。(ポート443がSSH-over-TLS専用であるプレーントンネリングに加えて、SNIおよびALPNに基づいて同じポートでSSH / HTTP /その他のプロトコルを多重化することもできます。)
これは本当に洗練されたトラフィック分析を常に無効にするわけではありませんが、「これはTLSヘッダーのように見えるか」を単にチェックするほとんどのフィルターをバイパスします。
そして、迷惑な種類のファイアウォールがあります。すべてのトラフィックを復号化および再暗号化するためにTLSをインターセプトするファイアウォールです。これらは実際にTLSの内部を見ることができ、他のすべてをブロックしながらHTTPリクエストを渡すことができます。(いくつかのウイルス対策プログラムも同じことを行うことに注意してください。)サーバー証明書を見ると、この種類を認識できます。プロキシによって生成されたすべての証明書は同じように見え、多くの場合検証に合格しませんが、実際の証明書はさまざまな異なるCAによって発行されます。