Documentation

/

White Papers

SSHプロキシ構造によるシェルネイティブコマンド制御

ryan, kevin

2024年11月22日

SSHプロキシ構造によるシェルネイティブコマンド制御

序文

サーバーアクセス制御ソリューションは、企業の重要な資産であるサーバーを保護するための重要なセキュリティソリューションです。サーバーアクセス制御ソリューションの核心は、どのユーザーがどのサーバーにアクセスし、どのコマンドを実行したかを追跡し、制御することです。一般的なサーバーアクセス制御ソリューションは、仮想端末のように、ユーザーがエンターキーを押す前に入力した文字を一つ一つバッファリングして、ユーザーが実行しようとするコマンドを組み合わせる方法を使用します。しかし、この方法は開発に膨大な時間とコストがかかるだけでなく、ユーザーがショートカットキーなどのさまざまなキーの組み合わせでコマンドを入力する場合、正確なコマンドをパースすることが非常に難しくなります。したがって、QueryPieでは、コマンド解析の精度を向上させるために、Shell Scriptを用いたコマンド監査および制御技術を開発しました。

問題

Issue to Solve

SSHセッションが確立され、クライアントとサーバー間でのデータ通信は基本的にユーザーがキー入力を行うたびに、1文字ずつ送信されます。この形式は、ターミナルの出力形式を制御するために使用される制御シーケンスであるANSIコードです。ANSIコードはさまざまな ANSIエスケープシーケンスを含んでおり、このような文字列ストリームでユーザーが入力したコマンドだけを正確にパースすることは、仮想端末を作成するようなものです。したがって、ほとんどのサーバーアクセス制御ソリューションは、正確なコマンドパースを通じて危険なコマンドをブロックするよりも、証跡を残すことに重点を置いており、これはサーバーセキュリティに対する脆弱性が依然として存在することを意味します。特にサーバーのコマンドの場合、ショートカットキーの利用やエイリアス設定など、さまざまな方法でコマンドの回避実行が可能です。代表的な方法としては、サーバーアクセス制御ソリューションを使って禁止コマンドを指定しても、そのコマンドをスクリプト内に含めて実行するという方法があります。MITM(Man-in-the-Middle)を行うプロキシサーバーで、ユーザーのキー入力を組み合わせてコマンドをパースする一般的なサーバーアクセス制御方式では、このような回避攻撃に対応できません。したがって、セキュリティを向上させるためには、サーバーレベルで制御することがセキュリティ性を高めるために必要であり、プロキシレベルよりもサーバーにエージェントをインストールしてプロセス監視用のデーモンを立ち上げるなどの方法が推奨されます。