実行プロセス追跡方式によるコマンド回避の根本的なブロック
2024年11月22日
リナックスプロセス実行制御およびセキュリティ強化ソリューション
Linuxシステムでは、ユーザーが実行権限を持つプログラムをSSHセッションで自由に実行することができます。しかし、システムのセキュリティと安定性を保つためには、特定のプログラムの実行を制限しなければならない場合があります。システムでは、基本的にrootユーザーと一般ユーザーを区別し、実行権限を区分けするメカニズムを提供していますが、この程度の制御では十分でない場合もあります。このような制御を行うためには、プロセスの生成と実行をリアルタイムで監視し、必要に応じてブロックする技術的な基盤が必要です。
本ホワイトペーパーでは、Linuxカーネルレベルでの低レベルプロセス監視と制御を実現するソリューションを紹介します。私たちのソリューションは、以下の主要機能を実装しています:
リアルタイム子プロセス監視
実行禁止プログラムの検出
制限されたプログラム実行時の即時遮断
これらの機能は、将来的なユーザーごとの権限管理、詳細な監査ログ記録、ポリシー管理など、高度なセキュリティソリューションを実現するための技術的基盤となります。
問題
多くの組織、特に金融、医療、公共機関では、システムへのすべてのアクセスと操作を記録する規制要件があります。ISMS-P、ISO/IEC 27001、PCI DSS、SOCなどのセキュリティ認証は、誰が、いつ、どの操作を行ったかを追跡できることを求めています。

これらの操作記録は、事故の予防と調査にも重要な役割を果たします。管理者の誤操作によるシステム障害や悪意のある内部者によるデータ漏洩試行を事前にブロックできます。問題が発生した際も、作業履歴を通じて迅速に原因を特定し、必要に応じて以前の状態に復元することができます。
システム管理者の作業履歴を記録し、制御することで責任を強化することができます。承認されていない操作や機密情報へのアクセスを効果的に管理でき、これが結果的にシステム運用の安定性と効率の向上に繋がります。
これらの要件は、Linuxの基本的なユーザー権限システムやシステムログだけでは完全に満たすことができません。したがって、ユーザーの操作を監視し、制御できる追加のセキュリティシステムが必要です。
アイデア
私たちは、SACソリューションにおいて、システムユーザーが実行するコマンドに対する監査と制御機能を提供します。特に、コマンド制御機能はシステムレベルの低レベルアプローチを使用し、実行ファイルがロードされる直前に、事前に定義されたセキュリティポリシーに基づいて検証を行うように実装されています。この方式は、実装がシンプルでありながら、シェルスクリプト内にコマンドを隠す、エイリアスを利用するなどの様々なケースを考慮する必要がないため、非常に効果的です。

この構造の利点は以下の通りです:
システムコールフッキング技術を活用し、コマンド実行のタイミングで介入することで、回避試行を根本的にブロックします。ユーザーがどのようにコマンドを実行しようとしても、私たちのソリューションの検証を回避することはできません。
アプリケーションレベルではなくシステムレベルで動作するため、特定の環境やシェルに依存しません。
様々なケースを考慮する必要がないため、コードがシンプルで安定しています。
この方法を使用することで、私たちは競合他社と比較して、はるかに堅牢で効果的に動作するブロックソリューションを実装できました。次のセクションでは、このブロックプログラムがどのように動作するかを示します。
デモ
/usr/bin/dfの実行をブロックするように設定し、テストを実施しました。
シンボリックリンクのブロック
logan@ip-xxx-xxx-xxx-xxx:~$ ls -l hellolrwxrwxrwx 1 logan logan 11 Nov 6 11:35 hello -> /usr/bin/dflogan@ip-xxx-xxx-xxx-xxx:~$ ./hello[963713:./hello] ./hello blocked!Killedエイリアスのブロック
logan@ip-xxx-xxx-xxx-xxx:~$ alias hi=dflogan@ip-xxx-xxx-xxx-xxx:~$ hi[963927:/usr/bin/df] /usr/bin/df blocked!Killed