SELinuxで組み込み機器のセキュリティを高める(後編) ―― 組み込み機器にSELinuxを適用する
4 最低限のシステムを構築
ここまでで,SELinuxに関連するプログラムとファイルがターゲット・ボードに移植されました.これを基にして,最低限SELinuxが動作するシステムを構築します.SELinuxを動作させるために必要な項目は,「selinuxfsのマウント」,「ポリシのロード」,「ファイルにタイプを付与する」の三つです.これらの項目を,順番にシリアル・コンソール(デバイスによってはSSHやtelnet)でログインして,手作業で実行してみます.手作業でうまく動作することを確認したら,起動時に自動的に3項目が実行されるようにします.
● selinuxfsをマウントする
selinuxfsとは,SELinuxの管理のために使われる特殊なファイル・システムです.selinuxfs中のファイルをオープンすることでSELinux内部のデータにアクセスできるような仕組みになっています.SELinuxの管理コマンドはこのselinuxfsを通じてSELinuxの管理操作を行っているので,selinuxfsをマウントする必要があります.マウント・ポイントは/selinuxにするのが普通なので,このディレクトリを作成します.
# mkdir /selinux
ここにselinuxfsをマウントします.
# mount -t selinuxfs selinuxfs /selinux
● ポリシのロード
SELinuxによるアクセス制御を使うには,ポリシ設定ファイルをカーネルに読み込ませる必要があります.先ほど移植したload_policyコマンドを使うことで実現できます.次のように使います.
# load_policy
これでポリシが読み込まれました.
● タイプ付与
現段階では,ファイルには何もタイプが付与されていません.タイプを付与するには,ファイル・システムのxattrにタイプの情報を書き込む必要があります.「どんなファイルにどんなタイプを付与するか?」という設定は,/etc/selinux/seedit/contexts/files/file_contextsファイルによってなされています.この設定どおりにタイプを付与するためのrestoreconというコマンドが用意されています.最も典型的な使い方は,次のとおりです.
# restorecon -R <ディレクトリ>
これで,ディレクトリ以下のファイルのタイプ付与設定を行えます.今回は,すべてのファイルに対してタイプ付与を行うので,ボード上で次のように入力します注2
# restorecon -R /
注2;読み込み専用マウントにしていると作業が失敗するので,読み書き可能でマウントする.また,/procや/sysディレクトリに対してエラーが表示されることがあるが,無害である.
● ここまでの動作確認
これで,SELinuxが最低限動作しています.プロセスに「ドメイン」が付与されていることを確認します.確認には,ボード上でpsコマンドのZオプションを使います.
# ps -Z PID Context Stat Command 1 system_u:system_r:kernel_t S init [2] 2 system_u:system_r:kernel_t SW< [kthreadd] ...
プロセス名の左に,「system_u:object_r:<ドメイン>」という書式でプロセスに付与されたドメインが表示されます.
ファイルに「タイプ」が付与されていることを確認します.ファイルのタイプの確認にはlsコマンドのZオプションを使います.
# ls -Z / drwxr-xr-x ~ system_u:object_r:dir_bin_t bin drwxr-xr-x ~ system_u:object_r:dir_childdir__t boot ...
これも,ファイル名の左に「system_u:object_r:<タイプ>」という書式でファイルに付与されたタイプが表示されています.確かにファイルにタイプが付与されています.
なお,この状態では,まだ「permissiveモード」で動作しています.モードの確認にはgetenforceコマンドを使います.
# getenforce Permissive
前編で紹介したように,permissiveはテスト用のモードで,SELinuxに拒否されるアクセスがあった場合も,アクセスは通してログだけを残します.実質的にSELinuxのアクセス制御が無効になっているように見えます.ポリシの設定が固まるまではpermissiveモードで動作させます.