SELinuxで組み込み機器のセキュリティを高める(後編) ―― 組み込み機器にSELinuxを適用する

中村雄一

tag: 組み込み

技術解説 2008年9月 8日

Linuxのセキュリティを高める手法の一つとしてSELinuxがある.前編で,SELinuxカーネルのパーミッション・チェック機能を拡張し,ファイルやポート番号ごとに細かくアクセス制御を行えることを解説した.今回は組み込み機器でSELinuxを行う方法について,実例を元に紹介する. (編集部)

 前編では,SELinuxの仕組みと構成要素について解説しました.今回は,実際に組み込み機器向けマイコン・ボードにSELinuxを移植し,動作させてみます.マイコン・ボードとしては,シリコンリナックス(http://www.si-linux.co.jp/)のCAT760を対象にします(写真1).CAT760はEthernetポートを備えるため,小型のサーバとしても使えます.しかし,サーバをインターネットに接続して使う場合は,当然セキュリティに配慮しなければなりません.今回は,CAT760でhttpサーバを立ち上げ,SELinuxでhttpサーバを最小限の権限で動作させてみます.

ph01_01.jpg
写真1 SELinuxを移植するターゲット・ボード(シリコンリナックス製CAT760)
200MHz動作のSH7760(SH-4),64MバイトのRAM,16MバイトのフラッシュROM,Ethernet(100Base-TX)インターフェースを搭載する.

 なお,今回の例はCAT760ですが,手順の大部分はほかの機器にも共通です.違いは,開発機からターゲット機へのファイル転送方式程度です.また,開発機のディストリビューションは,CentOS 5を前提として話を進めます.

1 一般的な移植手順

 組み込みシステムにSELinuxを移植するための一般的な手順は,以下の四つのステップです.

  1. SELinuxに関係するプログラムをクロス・コンパイルする
  2. 最小限のセキュリティ・ポリシ(以下,ポリシと略記)を作成する
  3. 1)で作成したプログラムと2)で作成したポリシを基に,ターゲット上に最低限SELinuxが動作するシステムを構築する
  4. システムに適したポリシを開発する

 本稿では,この順番に従ってCAT760ボードにSELinuxを移植してみます.

2 SELinux関連プログラムのクロス・コンパイル

● ソース・ファイルの入手

 組み込み機器にSELinuxを導入するためには,SELinuxに対応したカーネルおよびユーザ・ランドのソース・ファイルを入手して,クロス・コンパイルする必要があります.最低限必要なものとして,Linuxカーネル本体,ライブラリlibselinux,コマンドBusyBoxがあります.Linuxカーネルには,SELinuxのアクセス制御エンジンが組み込まれています.libselinuxには,SELinuxの管理操作を行うためのAPIが格納されています.SELinuxに関連する管理コマンドも必要ですが,BusyBoxに取り込まれているものを使い,サイズを小さくします.

 表1に示すように,これらのソフトウェアはバージョンによって組み込み機器対応が異なります.カーネルについては,バージョン2.6.0がSELinuxを最低限サポートしています.けれども,jffs2上でシステムを構築するには,2.6.18以降が必要です.2.6.24以降はチューニングが施されており,より組み込みに適しています.libselinuxは,バージョン2.0.35以降がお奨めです.それ以前ではlibsepolが必要ですが,300Kバイトほど容量が増えます.BusyBoxについては,1.9.0以降であれば,必要なコマンド類がほとんどそろっています.

ソフトウェア バージョン 組み込み対応状況
Linuxカーネル 2.6.0以降 SELinuxサポート ext2,ext3でxattrサポート
2.6.18以降 jffs2のxattrサポート
2.6.24以降 SELinuxのメモリ消費量を約200Kバイト削減 SELinuxによるread/writeシステム・コールのオーバヘッドを1/10に削減 SELinuxによるセキュリティ・チェックの最悪実行時間を 1/3に削減
libselinux 2.0.35以降 libsepolの分離によりファイル・サイズを約300Kバイト削減
libsepol注 特になし
BusyBox 1.5.0以降 SELinux関連コマンドの取り込み開始
1.9.0以降 必要最小限のSELinux関連コマンドの取り込み完了
表1 SELinuxを導入するために必要なソフトウェアのバージョンによる違い

注:実機には入れないが,libselinuxとBusyBoxのコンパイルに必要.

組み込みキャッチアップ

お知らせ 一覧を見る

電子書籍の最新刊! 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日