SELinuxで組み込み機器のセキュリティを高める(前編) ―― SELinuxの概要
2 SELinuxの特徴
これに対し,組み込み機器に適するセキュリティ対策として注目されているのが,SELinuxです.●SELinuxのさまざまなアクセス制御機能
SELinuxの基本的な機能は,プロセス単位のアクセス制御です(図3).SELinuxはLinuxカーネル内部で動作し,プロセスごとに必要最小限の権限を割り当てて動作させます.
図3 SELinuxはプロセスごとに最小限の権限を割り当て,不正侵入の被害を最小限に封じ込める
図3の(1)では,セキュリティ・ポリシという設定がカーネルにロードされています.ここには,「プロセスに対して,どんなリソースにどんなアクセスが許可されるか?」というアクセス制御ルールを設定します.アクセス制御は細かく設定でき,ファイルに対するアクセス制御だけではなく,ネットワークのポート番号やプロセス間通信などに対する設定も可能です.
図3の(2)のように,SELinuxはこのアクセス制御ルールに基づいてアクセス制御を行います.例えばhttpサーバならば,サーバの構成ファイルの読み込み権限,つまり80番ポートで接続待ちすることが許可されます.メディア再生アプリケーションならば,メディア・ファイルの読み込みが許可されます.セキュリティ・ポリシで許可されたアクセス以外は,SELinuxによってすべて拒否されます.拒否されたアクセスは,ログに残ります.このように,プロセスに必要なアクセス権限のみを持たせて動作させます.
さらに,SELinuxによるアクセス制御はすべてのプロセスに強制され,root権限であっても回避が不可能です注2.
注2;強制アクセス制御(MAC:Mandatory Access Control)と呼ばれる.
● SELinuxの効果
SELinuxを導入することで,各プロセスが必要最小限の権限を持って動作するようになります.では,実際にどのような効果があるのでしょうか? 図3の例で効果を見てみましょう.httpサーバにセキュリティ・ホールがあり,攻撃者に乗っ取られ,かつroot権限までもが取られてしまったとします.今までのLinuxでは,httpサーバは乗っ取られ,攻撃者は任意の命令を実行させることが可能です.しかしSELinuxでは,攻撃者が持っている権限はhttpサーバの権限です.この権限では,せいぜいサーバの設定ファイルの読み込み権限しかないので,システムは破壊できません.さらに,ほかのマシンに攻撃を仕掛ける踏み台にしようとしても,80番ポートの接続待ち受けしかできないため,ほかのマシンへの接続は拒否されます.このように,不正侵入を受けたとしても,攻撃者やウイルスが持つ権限が少ないため,攻撃は失敗します.
● 組み込み機器に適する理由
今回組み込み機器向けのセキュリティ対策としてSELinuxを取り上げたのはなぜでしょうか? 図2で組み込み機器のセキュリティ対策の難点として「専用の機器を置けない」,「ファイル・サイズが限られる」,「アップデート困難」という点を挙げました.SELinuxでは,これらの心配が少なくて済むのです.
1) 専用の機器が不要
SELinuxを使う際に,特殊な機器やハードウェアは必要ありません.CPUもアーキテクチャによらずに使えます.SELinuxは,Linuxカーネル内に実装されているものの,CPU依存部分がありません.
2) サイズが比較的小さい
システム・サイズが大きくありません.メモリ消費量が500Kバイト程度で,ファイル・サイズ増加が200Kバイト程度です.10Mバイト程度のフラッシュROMや32Mバイト程度のメイン・メモリを搭載した組み込み機器ならば,SELinuxを搭載可能です.
3) アップデートしなくても効果がある
アップデートしない状態でも,効果があります.つまり,アプリケーションにセキュリティ・ホールが見つかり,アップデートを適用せずにそのまま放置しておいたとします.この状態で,不正侵入自体はされるものの,その後攻撃者が取れる権限は最小限の権限だけであり,致命的な被害が出ることを防止できます.