【セキュアOS SELinux入門】第7回 SELinuxの限界と留意点 |
||||||||||
---|---|---|---|---|---|---|---|---|---|---|
SELinuxを使うことによりシステムを格段に安全に運用できるものの,100%の安全性を確保できるわけではない。
セキュリティ担当者は,SELinuxの限界をきちんと把握した上で,システム全体の堅ろう性を確立する必要がある。
例えば,Fedora Core 2に付属するポリシー・ファイルでも,そのままでは危ないと思われる個所がある。
今回は,SELinuxの限界を踏まえた上で,これまで紹介した方法よりも安全に設定できる方法を具体的に紹介する。
SELinuxだけで安心はできないSELinuxを用いたシステムでは,攻撃者に侵入された場合でも被害を最小限に食い止められる。 しかし,SELinuxを使っているからといって,それだけで安心できるわけではない。 セキュリティ担当者は,次のことに気を付ける必要がある。
|
設定についての留意点 |
---|
前述のように,Fedora Core 2では,ポリシー・ファイルがあらかじめ用意されている。 しかし,そのまま使うと危ないと思われる個所がいくつか存在する。 |
(1)タイプの完全性 |
ファイルへのタイプ付け(タイプ付与)の設定が意図したように行われない場合がある。タイプ付与が不適切だと,ファイルが保護されない,プロセスが急に動作しなくなる,といった問題が発生しかねない。
ファイルとタイプの関連付けは,/etc/security/selinux/file_contextsファイルに記述されている。しかし,新規に作成されたファイルについては,file_contextsファイルの内容が反映されないため,不適切なタイプが付与される場合がある。新規作成ファイルには,file_contextsファイルの内容とは無関係に,ディレクトリと同じタイプが付与される。
特に注意すべきなのは,Emacsエディタでのファイル編集である。Emacsエディタは,ファイルを上書き保存する場合に,ファイルを一度消去してから同じ名前のファイルを新規作成している。その際に不適切なタイプが付与される可能性がある。viエディタを使った場合は特に問題は生じないため,ファイルの編集にはviエディタを使ったほうがよい*1。このため,ファイルのタイプ付けの設定は,定期的に反映し直すべきである。 |
# fixfiles relabel と入力することで,全ファイルのタイプをfile_contextsファイルの設定通りに付け直せる。 Fedora Core 2でSELinuxを利用していて,プロセスが動作しなくなった場合は,まずはファイルのタイプが適切かどうかを疑い,file_contextsファイルの内容を反映するようにしよう*2。 |
(2)設定のチューニング |
ポリシー・ファイルは,SELinux独自の設定言語で記述されている。この設定言語を知らなくとも,/etc/security/selinux/src/policy/tunable.teファイルを使えば,ポリシー・ファイルの大まかなカスタマイズが可能だ。 tunable.teには, define('チューニング要素') という記述が並んでいる。任意の行をコメントアウト*3することで,設定の有効と無効を切り替えられる。主なチューニング要素を表1に示す。例えば,「define('user_can_mount')」という行をコメントアウトすると,「sysadm_rロール以外でもmountコマンドを利用できる」という設定が無効になる。 表1●tunable.teファイルの主なチューニング要素 |
チューニング要素 | 意味 | デフォルト |
---|---|---|
unrestricted_admin | sysadm_tドメインがほとんど何でもできる | 有効 |
sh_sysadm_login | s sshd_tから直接sysadm_tにドメイン遷移可能(ssh経由で,newroleを使わずに,直接sysadm_rロールでログインできる) | 有効 |
xdm_sysadm_login | グラフィカル・ログインで,newroleを使わずに直接sysadm_rでログインできる | 有効 |
llow_user_dmesg | asysadm_rロール以外で,dmesgコマンドを利用できる | 有効 |
user_canbe_sysadm | 一般ユーザーでもsysadm_rロールになれる | 有効 |
user_can_mount | sysadm_rロール以外でもmountコマンドを利用できる | 有効 |
unlimitedUsers | ログイン・ユーザーがほとんどすべての操作を行える | コメントアウト |
tunable.teファイルを利用することにより,設定の安全性を“調整”することも可能だ。今回はその例として,ユーザー関連の設定をより安全にする方法を示す。 |
---|
デフォルトでは危険なsshdの設定 Fedora Core 2のデフォルト(初期設定)では,「sshd(sshd_tドメイン)が/bin/sh(shell_exec_tタイプ)を実行すると,/bin/shはsysadm_tドメインで起動する」というドメイン遷移が起こるようになっている。この設定は非常に危険である。なぜなら,攻撃者がsshdを乗っ取ってシェルを起動すると,ほとんどの管理権限を持ったsysadm_tドメインで起動してしまうからだ。 この問題は,先に紹介したtunable.teファイルを用いて解決できる。tunable.teファイルを見てみると, define('ssh_sysadm_login') という記述がある。表1によると,この行によって,問題のドメイン遷移が可能になっている。この行をコメントアウトすれば,危険なドメイン遷移が起こらなくなる。 dnl define('ssh_sysadm_login') このようにしてコメントアウトしたら,設定を反映しよう。 # cd /etc/security/selinux/src/policy # make reload 同様に,tunable.teファイル中の define('user_canbe_sysadm') もコメントアウトしておくことが望ましい。一般ユーザーがsysadm_rロールになれることは,セキュリティ上望ましくないからだ。 |
(3)audit2allowで追加した設定をチューニングする |
---|
連載第6回で紹介した,audit2allowコマンドを使った設定追加法は手軽だが,安全面では最適ではない。 allow ftpd_t var_t:dir { read }; 追加した設定を見てみると,ftpd_tドメインが,var_tタイプのファイルやディレクトリにアクセスできるようになっている。しかし,「ls -Z」を実行してみると分かるように,var_tは/varディレクトリ以下の多くのファイルやディレクトリに付与されているタイプである。 従って,vsftpd(ftpd_tドメイン)は/varディレクトリ以下の多くのファイルやディレクトリを読み込める。しかし,vsftpdの動作だけをみれば,/var/ftpのみにアクセスできればよい。従って,(※)の設定では,余計なファイルにアクセスできてしまうことになる。このように,ログに基づいて単純に設定しただけだと,余計なアクセス権限を与えてしまうことがある。 より安全な設定にするためには,/var/ftpに対して新たなタイプを付与すればよい。今回は,新たなタイプ「ftp_pub_t」を「/var/ftp」ディレクトリ以下に付与し,必要最小限の権限を与える方法を解説する。 ここでは,ホーム・ディレクトリは/etc/security/selinux/src/policyであると想定して話を進める。また,以下を試す場合には,連載第6回で追加した設定は削除しておく。 /var/ftpにftp_pub_tを付与する 新規のタイプを使う場合は,そのことを宣言する必要がある。次のようにして宣言する。 ファイルにタイプを付与する設定は,file_contextsディレクトリ以下の拡張子が「.fc」というファイルに, という書式で記述する。ディレクトリ以下のファイルにタイプを付与する場合は,
|