SSH(Secure Shell Protocol)は、遠隔地にある機器を管理するための重要なプロトコルです。これは、インフラストラクチャーチームが大量に抱える機器をリモートで安全に管理する手段を提供するものです。SSHはtelnetのような他のプロトコルからセキュリティの面でステップアップしたものです。SSHはトラフィックを暗号化し、ユーザーごとの特定の機器へのアクセスを制御します。しかし、まだ重要なセキュリティリスクの可能性が残っています。特にrootを使用したSSHのアクセスは悪意のある人物の手にかかる(rm -r *
を実行された場合を考える)と破壊的な上に追跡が困難な場合があります。SSH経由のユーザーの行動を記録し、それによる行動から保護するためには、通常、カスタム開発であったり、制限機能となるソフトウェアを展開する必要があります。Cloudflare Zero Trustの一部であるSSHコマンドのロギング機能を発表することができることを大変うれしく思っています。
SSHアクセスの安全性
SSHが悪意のある人物の手に渡ると悪影響を及ぼす可能性があることから、セキュリティチームは組織全体のSSHの安全性を確保することに多大な労力を費やすことを余儀なくされています。従来のSSHセキュリティは、証明書ベースの認証と同様の強力な認証と、誰が「root」のアクセス権を持つかの厳格な管理で構成されています。さらに、VPNとIP許可リストを使用することで、一般的なインターネットからのアクセスから機器を保護することができます。残るセキュリティの課題は、可視性と、水平方向への移動の可能性です。
遠隔地にある機器へのSSHコマンドはエンドツーエンドで暗号化されているため、特定の機器上で特定のユーザーによって何が実行されているかを確認することは不可能です。一般的に、ログは機器自体のログファイルでしか取得できないため、悪意のあるユーザーは他のコマンドを実行するのと同じようにログファイルを簡単に削除して、自分の痕跡を消すことができます。このようなログを外部のログ収集サービスに送信する解決策もありますが、この場合、SSHを使ってアクセスできるすべての機器に追加のソフトウェアをインストールする必要があります。ProxyJumpは、JumpHostモデルを展開する一般的な方法ですが、ユーザーがネットワーク内の機器にアクセスすると、機器が存在するローカルネットワークを簡単に横断できるため、この問題をさらに複雑にします。
SSHコマンドロギングの紹介
当社では、個々の機器上のソフトウェアに依存するのではなく、Cloudflare Zero TrustにSSHコマンドのロギングを組み込むことによって、ネットワーク層でのSSHの可視性を提供します。この機能の最初の顧客はCloudflareのセキュリティチームです。SSHコマンドのロギングを使用すると、複数の踏み台となるホストや要塞ホストを含む、SSHセッション中に実行されたすべてのコマンドを完全に再現することができます。これにより、事故や違反の疑い、攻撃を受けた際に、何が起こったかを明確に把握することができます。
SSHコマンドのロギングは、CloudflareのSecure Web Gatewayの拡張機能として構築されたものです。Secure Web Gatewayは、すでにユーザーデバイスから発信されたすべてのトラフィックの安全性に対するTLS検査を実行しています。現在、新規接続時にプロキシサーバーをブートストラップすることでSSH検査もサポートするようになりました。管理者は、SSHアクセスの許可と実行された特定のコマンドを監査する_ネットワークポリシー_を設定することができます。
そして、その機器はSSHアクセス用に公開され、Cloudflareのグローバルエッジネットワーク経由ですべてのSSHコマンドをプロキシします。すべてのコマンドは、機器とすべてのホストに複雑なロギングソフトウェアをインストールすることなく、自動的にキャプチャされます。また、TTYトラフィックも記録して後ですべてのセッションを再現することもできます。
また、セキュリティ対策として、Cloudflareが取得したすべてのログはお客様から提供された公開鍵を使用して直ちに暗号化され、許可されたセキュリティユーザのみがSSHコマンドを検査できるようにしています。さらに、FedRAMPに準拠したユーザーをサポートするために、オプトインのFIPS 140-2モードを搭載した本機能の提供を開始します。
すべてのユーザー認証は、 Cloudflare Short-Lived Certificatesを介して行われます。クライアント証明書がユーザーの機器に読み込まれると、SSHのセットアップが完了し、機密性が確保されます。これにより、面倒でややこしいSSHキーペアの管理が不要になります。つまり、エンドユーザーの端末で鍵の管理が不要になり、CloudflareルートCAさえあれば、ProxyJumpの使用も含め、どの機器にもアクセスできるようになります。
次は何を?
これはCloudflare Zero TrustにおけるSSHセキュリティのほんの始まりに過ぎません。将来的には、一般的なSIEMツールと統合し、特定のコマンドや危険な動作に対するアラートの提供を予定しています。
SSHコマンドのロギング機能はクローズドベータ版で、今後数週間のうちにユーザーへの開放を予定しています。一般提供開始を発表するまでのさらなるアップデートにご注目ください。