ブログ

FFRI BLOG

2014-12-02 Monthly Research 「SELinux 再入門-仮想化・コンテナ編-


今日のインターネットビジネスを支えているのは、クラウドコンピューティングである、といっても過言ではないでしょう。クラウドのキモはスケーラブルなコンピューティング、つまり、仮想化技術やOS・アプリケーションコンテナ技術、そしてそれらの管理基盤です。

そのクラウドを支えるVM(仮想マシン)の脆弱性がもし発見された場合、それによって仮想マシン上で動作している複数のOSと、VMを管理するためのホストOSが乗っ取られてしまう可能性があります。そのような場合でも被害範囲を限定するため、SELinuxのような最少特権を実現するアクセス制御で、仮想マシンを"隔離"することが非常に重要です(Fig. 1)。

                                  Fig.1 VMにおける脅威モデル

今月のMonthly Researchでは、まずLinuxにおけるクラウド管理基盤のひとつであるlibvirtとそこに組み込まれたSELinuxによる隔離について解説しています。libvirtはVMをプログラムから操作するためのライブラリと各種仮想化ソフトウェアのドライバ、そしてラッパーアプリケーションから構成されています。その中に、仮想マシンへのセキュリティコンテキストを割り当てるなどのSELinux連携が既に統合されています。これにより、SELinuxを意識せず、適切なディレクトリにイメージを配置し、適切なラベルを設定するだけで、VMの隔離が可能になります。

また、今年流行のDockerによるコンテナ仮想化とそのエコシステムについても、SELinux視点で取り上げています。Dockerエコシステムでは、public imageをroot権限で動作させる必要があります。このため、個人の責任で作成され公開されているpublic imageをどこまで信用するか?という問題が発生します。(Fig. 2)

Dockerはこれらの問題に対処するため、libcontainerという隔離ライブラリを開発しました。隔離のアプローチはlibvirtと同じく、SELinuxやAppArmorを使っていますが、これらはモジュール化されており、他の強制アクセス制御に変更が可能なように実装されています。今後、Dockerが他のUnix系OSやWindowsなどに対応していく際に、OSごとに大きく異なるセキュリティ機構をモジュール化してプラガブルに設計し直しているのではないかと推測されます。

                                   Fig.2 Dockerの脅威モデル

SELinuxによる強制アクセス制御は、多くのLinuxシステムで重要なセキュリティを担いつつあります。今年度のMonthly Researchでは、SELinuxの基礎、モバイルへの応用、そしてクラウドインフラにおける応用を紹介してきました。SELinuxの"設定の難しさ・わかりにくさ"は相変わらずですが、デフォルトのポリシーの充実や範囲を絞った適用など、"コンフィグレーションをすべて理解しなくても使える"ようになってきています。

このシリーズをキッカケに、たくさんのエンジニアがSELINUX=disabledというステレオタイプから離れ、より堅牢なシステムのためにSELINUX=enforcingでサーバを運用してくれるようになれば、幸いです。


Monthly Researchのダウンロードはこちら


関連記事

Monthly Research 「OS X のマルウェアとセキュリティ」

Monthly Research 「POSマルウェアについて」

Monthly Research 「SELinux再入門-Android編-」