第2回 SELinuxモジュールの詳細SELinuxで強化するソリューション(2/2 ページ)

» 2005年02月17日 21時55分 公開
[佐々木 生弥(サイボウズ),ITmedia]
前のページへ 1|2       
  • RBAC(Role Base Access Control)

 TEやドメイン遷移がプロセスに対して必要最小限の権限を付与するのに対し、RBACは、ユーザーの権限割り当てを制御する。ユーザーの権限を制限する目的は、悪意あるユーザーにシステムを乗っ取られた場合や、ユーザーの操作ミスによる被害を最小限に抑えるためである。具体的には、オラクルなどのデータベースでも採用されている「ロール」と呼ばれるアクセス権限の集合をユーザーに付与することで制御を行う。

 以下は、ログイン時におけるロールの選択画面だ(編集部注:赤い文字列にカーソルを合わせるとコメントが表示されます)。ユーザーアカウントとパスワードを入力した後に、デフォルトのロールが表示される。この場合は、一般ユーザー権限であるstaff_rロールが表示されている。次の行で、別のロールを選択するかの確認が行われるが、そのままEnterを押下すればstaff_rロールが選択される。今回は「y」を入力してみよう。あらかじめ設定されている「使用可能なロール」の候補から選択することで、ロールに応じたユーザーシェルが起動される。

login:isasaki
Password:
Your default context is isasaki:staff_r:staff_t.

Do you want to choose a different one? [n]y
[1] isasaki:staff_r:staff_t
[2] isasaki:sysadm_r:sysadm_t
Enter number of choice: 2
Last login: Wed Feb 9 18:30:19 on tty1
[isasaki@localhost]#

 ログイン後にロールを変更することも可能だ。ログイン後の変更はnewroleコマンドを使用する。ここでもあらかじめ設定されている「使用可能なロール」を指定する必要がある。使用権限のないロールを指定した場合、エラーが表示されるので注意しよう。getconコマンドを入力すると、ロールが変更されたことを確認できる。なお、表1は主なデフォルトロールと権限についてまとめたものだ。

[isasaki@localhost]# newrole -r sysadm_r
Authenticating isasaki
Password:
[isasaki@localhost]# getcon
isasaki:sysadm_r:sysadm_t


表1 デフォルトロールと権限
ロール ホームディレクトリの管理 user_r権限で起動したコマンドの停止権限 ユーザーの追加 ポリシーファイルの設定
user_r × × ×
staff_r × ×
sysadm_r

監査ログ

 プロセスがSELinuxモジュールによってアクセスを拒否されると、/var/log/messagesファイルにログが書き出される(図5)。システム管理者は、出力されたログを参照することで悪意ある攻撃の痕跡を知ることができる。デフォルトでは拒否されたアクセスログのみが出力されるが、あらかじめ設定しておくことで許可されたアクセスについてもログを出力できる。許可されたアクセスの範囲内での不正アクセスを監査する意味では有効だ。

図5
  • TEの設定

 監査ログには不正アクセスを抑止する以外にも重要な役割がある。TEの項で説明したように、目的のリソースにアクセスするには、プロセスとリソースの間でアクセス権限(アクセスベクタ)を設定する必要があるが、実際にはアクセスログに出力された内容をもとに設定を行う。図5はhttp通信のアクセス拒否のログだ。図中の1〜4でApacheのプロセスである/usr/sbin/httpdが、ポート80番を使用(name_bind)してhttp通信を行う際、アクセス拒否(denied)されたことがわかる。また、5〜7ではそれぞれ、プロセスとリソースのセキュリティコンテキスト*、リソースのオブジェクトクラスが表示される。SELinuxのアクセス権の設定は、ログに出力されたアクセス拒否の内容をもとに、どのようなアクセス権が不足しているのかを確認し、許可するべきアクセス権の設定を行っていく(コラム参照)。TEの設定記述方法については、次回詳しく解説していく予定である。

次回は

 SELinuxモジュールのセキュリティチェック機能について、詳細を解説した。次回は、インストールと基本操作、ポリシーファイルの編集方法について解説していこう。

●コラム ログの出力先

 SELinuxのログは、デフォルトで/var/log/messages/にほかのログと一緒に出力されるが、運用上、ログの出力先を変更したいこともあるだろう。SELinuxが出力するログはsyslogdデーモン、klogdデーモンによって出力されるため、/etc/syslog.confを編集することで変更できる。例えば、/var/log/selinux.logファイルに出力したい場合は、/etc/syslog.confファイルに以下のような記述を追加する。

kern.err            /var/log/selinux.log

 syslogデーモンを再起動すれば、ログの出力先が変更される。ただし、kern.errの定義で出力されるログは、すべてこのファイルに出力されるため、SELinux以外のログも書き込まれることに注意する。今後、SELinuxが普及するにつれて、ログ機能の拡張、SELinux独自のファシリティが開発されるだろう。



このページで出てきた専門用語
セキュリティコンテキスト
SELinuxではログイン時、ロールに応じたユーザーシェルが起動される。ユーザーシェルにはドメインが付与されるが、この「ユーザー」、「ロール」、「ユーザーシェルのドメイン」のセットをセキュリティコンテキストと呼び、すべてのプロセスに適用される。

前のページへ 1|2       

Copyright © ITmedia, Inc. All Rights Reserved.

注目のテーマ