Linux Security Modules (LSM) の概要
Linux Security Modules(LSM)は、
GNU/Linux|GNU_Linux環境においてカーネルにセキュリティ機能を追加し、複数のセキュリティモデルをサポートするために設計されたフレームワークです。LSMは、
Linuxカーネルが特定のセキュリティ実装に依存することを避け、さまざまな
アクセス制御メカニズムを実装する柔軟性を提供します。これは、
Linuxカーネルバージョン2.6以降の標準機能として組み込まれています。
このフレームワークには、
AppArmor、Security-Enhanced Linux (SELinux)、Smack、TOMOYO Linuxなど、メインストリームのカーネルで利用可能なセキュリティモジュールが含まれています。これらは、セキュリティ要件に応じてカーネルの挙動をカスタマイズするための能力を持っており、特に企業環境や高いセキュリティが求められる場合に使用されます。
設計目的と機能
LSMは、
Linuxカーネルの効率性を損なうことなく強制
アクセス制御を実現するために設計されています。LSMは、既存の
システムコールに干渉するアプローチをとらず、ユーザ空間ツールがカーネルの重要なオブジェクトにアクセスする際の呼び出しポイントに「フック」を挿入します。この設計により、特定のセキュリティ要件に基づくカスタマイズが可能になります。
また、LSMはその設計において、システム監査との関連性を持ちますが、アクセス試行を全て記録するわけではありません。そのため、LSMは
アクセス制御の強化を図る一方で、従来の監査機能とは異なるアプローチを取っています。
歴史
LSMの開発は
2001年にさかのぼり、NSAがSELinuxを
Linuxカーネルに統合することを提案したことから始まります。しかし、様々なセキュリティプロジェクトが存在していたため、その統合は
リーナス・トーバルズによって拒否されました。彼は、セキュリティモデルのモジュール化を求める立場を取ります。その結果、クリスピン・コーワンはLSMの実装を提案し、
2003年には
Linuxカーネル2.6の一部として正式に組み込まれることとなりました。
LSMが導入されることで、SELinux、
AppArmor、TOMOYO Linuxなどのセキュリティモジュールが互いに共存しながら機能することができるようになりましたが、同時に実行することはできません。これにより、特定の状況に応じたセキュリティ機能が選択的に使用されることになります。
批判や課題
一方で、一部の
Linuxカーネル開発者の中にはLSMに対する不満も存在します。LSMは、その略式の設計がオーバーヘッドを引き起こす可能性があるため、これを問題視する人もいます。また、一部の開発者は、LSMが野放図に利用されることを懸念し、特定の機能やセキュリティモデルが意図せず悪用されるリスクがあると指摘しています。
LSMは多様なセキュリティをサポートする一方で、特定のセキュリティ上の要件にすべて対応することができない場合があります。そのため、今後もさらなる改善や議論が必要とされています。
まとめ
Linux Security Modulesは、
Linuxカーネルにセキュリティ機能を拡張し、複数のセキュリティモデルをサポートするための強力かつ柔軟なフレームワークです。その設計は、セキュリティの多様性を保ちながら効率的な動作を目指しており、今後の発展が期待されています。