SELinuxで組み込み機器のセキュリティを高める(前編) ―― SELinuxの概要

中村雄一

tag: 組み込み

技術解説 2008年9月 2日

● 汎用セキュリティ・ポリシrefpolicy

 実際にセキュリティ・ポリシの設定を行う際は,ファイルやポートへのタイプ付与設定を行った後,ドメインがどんなタイプにアクセスできるかを設定していきます.ドメインは,デフォルトでは何もアクセス権限を持たないので,必要なアクセスを一つ一つ許可してやる必要があります.一般的に,アクセス許可設定の数は膨大になり,多いときには数十万にもなります.アクセス許可設定の数が膨大になるため,そのまま一から設定を行うのは大変です.

 そこでSELinuxでは,refpolicy(Reference Policyの略.配布URL:http://oss.tresys.com/projects/refpolicy/)という,SELinuxの開発元が開発した汎用のセキュリティ・ポリシが用意されています.パソコンにSELinuxを適用する場合,refpolicyを自分の環境に合わせてカスタマイズすることが普通です.

 しかし,refpolicyはFedoraやRed Hat Linuxなど,サーバ用途のディストリビューションを想定して作られており,多くの場合,組み込み向けの環境には不適当です.さらに,refpolicyのファイル・サイズは,そのままだとMバイト級のファイル・サイズとなり,相当のチューニングが必要になってきます.refpolicyでは,数千種類のマクロが定義され,そのマクロを駆使して設定が行われているので,チューニングを行うだけでも大変な作業です.

● SELinux Policy Editorによる設定

 このように,組み込み向けとしてセキュリティ・ポリシ設定にrefpolicyを利用するのは得策ではありません.そうなると,自分で一からポリシを記述することになります.そのまま一から記述するのは大変ですが,「SELinux Policy Editor(SEEdit)」というツールを使うと,比較的簡単にセキュリティ・ポリシを記述できます.SEEditは,もともとは日立ソフトウェアエンジニアリングによって開発されたツールですが,現在は,オープン・ソース(ライセンスはGPL)になっており,sourceforgeのWebサイトで公開されています.

 SELinux Policy Editorの仕組みは,図6のようになります.最大の特徴が単純な設定書式「SPDL(Simplified Policy Description Language)」です.通常のセキュリティ・ポリシ設定書式では,ファイルやポートへのアクセス制御のために,タイプを付与し,タイプを指定してアクセス許可設定を行う必要がありました.しかしSPDLでは,タイプを隠ぺいし,ファイル名やポート番号を指定して設定できるようになっています.変換プログラムがSPDLを通常の設定書式に変換し,設定が反映されるようになっています.SPDLを覚えなくても設定できるように,設定生成ツールなどの設定補助プログラムも同梱されています.

zu06_01.gif
図6 SELinux Policy Editorの仕組み

 中核要素であるSPDLを,もう少し詳しく見てみましょう.図7の(1)が,Webサーバに対するアクセス制御設定をSPDLで記述したものです.httpd_tドメインを/usr/sbin/httpdに付与すると設定し,「httpd_tドメインは/var/wwwに読み込み(s,r),80番ポートの接続待ち受けができる」と設定しています.ここでは,タイプは使われていません.(2)の変換プログラムが,SPDLから通常の設定に変換します.この際,ファイル名やポート番号からタイプが自動生成されます.(3)が生成された通常設定書式で記述されたポリシです.アクセス許可設定,ラベル付与設定などが生成されています.SELinuxのカーネルには,この設定が読み込まれます.

zu07_01.gif
図7 SELinux Policy Editorの設定書式SPDLでWebサーバを設定

組み込みキャッチアップ

お知らせ 一覧を見る

電子書籍の最新刊! FPGAマガジン No.12『ARMコアFPGA×Linux初体験』好評発売中

FPGAマガジン No.11『性能UP! アルゴリズム×手仕上げHDL』好評発売中! PDF版もあります

PICK UP用語

EV(電気自動車)

関連記事

EnOcean

関連記事

Android

関連記事

ニュース 一覧を見る
Tech Villageブログ

渡辺のぼるのロボコン・プロモータ日記

2年ぶりのブログ更新w

2016年10月 9日

Hamana Project

Hamana-8最終打ち上げ報告(その2)

2012年6月26日