SELinux新機能解説
Red Hat Enterprise Linux 5で始めるSELinux
面 和毅
サイオステクノロジー株式会社
OSSソリューションセンター
グローバルサービスグループ
グループマネージャー
2007/3/14
ツール類の充実
RHEL5では、以前のバージョンに比べてSELinuxをより簡単に使用するためのツール類が充実しています。代表的なものをいくつか紹介します。
●トラブルシューティングの力強い味方:SETroubleShoot
RHEL5で新たに追加されたGUIツールです。[System]->[Administration]->[SELinux Troubleshooter]で起動します。
![]() |
| 図7 新たに追加されたSETroubleShoot(SELinux Troubleshooter) |
SETroubleShootは、市販のログ解析ツールのようなもので、いままでSELinuxで表示されていた、SELinuxの知識がある人間にしか理解できなかったようなログを解析し、分かりやすい形で表示してくれます。
SETroubleShootが起動すると、図8のようにSELinuxのアクセス制御により出力されたログがWindowsのイベントログのような形で上側のペインに表示されます。また、それぞれのログの詳細な結果は、下部のペインに表示されます。単純にログを表示するだけでなく、そのログの意味や詳細な説明、そのほかのSELinuxに関する説明などが表示されます。さらに、FAQやバグレポートへのリンクもあり、これをクリックすることによりすぐにSELinux-FAQを参照したり、もしバグの場合にはバグレポートを作成することが可能になっています。
| 図8 SETroubleShootブラウザの画面(画像をクリックすると拡大します) |
RHEL5では、setroubleshootdというデーモンがデフォルトで動作しており、このsetroubleshootdがauditdサービスに渡るアクセス拒否メッセージを監視して、適宜ユーザーに告知するという方法を取っています。
| 【参考】 Fedora Core6におけるSELinuxの強化点──活発に開発が進むSELinux http://www.itmedia.co.jp/enterprise/articles/0611/24/news011.html |
●難解な設定を簡易に:semanage
RHEL5から追加されたコマンドです。manページに“SELinux Policy Management tool”と書いてあることからも分かるとおり、SELinuxに関するさまざまな設定を行うことができます。
semanageコマンドによって
- ファイル/ディレクトリに対してのセキュリティコンテキスト(ユーザー:ロール:タイプ:MLS)の変更
- ユーザーに対するセキュリティコンテキストの割り当て
- インターフェイス、ポートなどネットワーク周りに関してのセキュリティコンテキストの割り当て
を制御することができます。
例えば、“/var/tmp/hoge”ファイルのファイルコンテキストを“hoge_t”に変更する際には
| # semanage fcontext -a -t hoge_t /var/tmp/hoge |
とします。ファイルに対してのコンテキストの割り当ては、RHEL5からはchconコマンドよりもsemanageコマンドを使った方がfile_contextsを変更するため、yumアップデートの際のことを考えると良い方法だといえます。
また、MCSで“s0:c0.c255”などと表示されるのは直感的ではないため、ユーザーの分かりやすいカテゴリ名を別名として“SystemHigh”などと表示することができますが、semanageコマンドはそのような別名の登録/管理を行うこともできます。semanageコマンドで作成した別名は、/etc/selinux/[ポリシー名]/setrans.confファイルに格納されています。
●ポリシーモジュール管理を容易に:semodule
manページに“Manage SELinux policy modules”と書いてあることから分かるとおり、Referenceポリシーのポリシーモジュールを管理するコマンドになっています。例として、ポリシーをロードする際のオプションの使い方を見てみましょう。
ユーザーが自分で“hoge”ドメイン用のポリシーモジュールを作成して追加したい際には、/usr/share/selinux/develディレクトリ(selinux-policy-develパッケージをインストールすると作成されます)に
- hoge.te (hoge用のTEルールのファイル)
- hoge.fc (hoge用のファイルコンテキストのファイル)
- hoge.if (hoge用のインターフェイスのファイル)
を作成し、
| # make hoge.pp |
でhogeドメイン用のバイナリのポリシーパッケージを作成します。作成されたポリシーパッケージを
| # semodule -i hoge.pp |
でロードします。
●Referenceポリシー形式に対応:audit2allow
SELinuxに関する拒否ログから、allowルールを生成するツールです。以前のバージョンからaudit2allowコマンドはあったのですが、RHEL5では新たにReferenceポリシーの形式でログから生成することができます。audit2allowのオプションを図に示します。
| audit2allow [-adhilrv] [-t file ] [ -f fcfile ] [-i <inputfile> ] [[-m|-M] <modulename> ] [-o <outputfile>] -a, --all read input from audit and message log, conflicts with -i -d, --dmesg read input from output of /bin/dmesg -h, --help display this message -i, --input read input from <inputfile> conflicts with -a -l, --lastreload read input only after last "load_policy" -m, --module generate module/require output <modulename> -M generate loadable module package, conflicts with -o -o, --output append output to <outputfile>, conflicts with -M -r, --requires generate require output -t, --tefile Add input from Existing Type Enforcement file -f, --fcfile Existing Type Enforcement file, requires -M -v, --verbose verbose output -A, --analyze Analyze output |
| 図9 audit2allowのオプション |
SELinuxのことを詳しく知らないユーザーでもallowルールの作成ができますので、今後はSELinuxが原因でアプリケーションが動作しないことが判明した場合には、audit2allowを用いて必要なallowルールを含むモジュールを作成して権限を追加することになります。
例えば
| # audit2allow -M local -i /var/log/audit/audit.log |
とすると、local.ppというReferenceポリシーのマクロを用いたモジュールが作成されます。その後、semoduleコマンドを用いて
| # semodule -i local.pp |
としてモジュールをロードすることにより、SELinuxが原因でエラーとなっていたプログラムを動作させることが可能となります。
また、その内容に関しては、同じディレクトリにlocal.teというソースが作成されるので参照しておいた方がよいでしょう。図にlocal.teの中身のサンプルを示します。
| module local 1.0; require { class chr_file { ioctl read write }; class dir { add_name getattr read remove_name search write }; class file { append create getattr read setattr unlink write }; class sock_file { create setattr }; type auditd_log_t; type initrc_t; type locale_t; type sshd_t; type staff_t; type system_crond_t; type usb_device_t; type user_home_t; type var_run_t; type var_t; role staff_r; role system_r; }; allow initrc_t locale_t:file setattr; allow initrc_t usb_device_t:chr_file { ioctl read write }; allow initrc_t var_run_t:sock_file { create setattr }; allow initrc_t var_t:dir write; allow initrc_t var_t:file { setattr write }; allow sshd_t var_t:file { getattr read }; allow staff_t auditd_log_t:dir { getattr read search }; allow staff_t auditd_log_t:file { getattr read }; allow staff_t user_home_t:file { append read setattr write }; allow system_crond_t var_run_t:dir { add_name remove_name write }; allow system_crond_t var_run_t:file { create unlink write }; |
| 図10 local.teのサンプル |
audit2allowコマンドを使用する場合には、audit.logをすべて使用してモジュールを作成すると重複が生じたり、エラーが出る可能性がありますので、必要なログを適宜切り出して別途読み込ませるためのファイルを作成した方がよいでしょう。
SELinuxを使ってみるチャンス
RHEL5でのSELinuxは、以前のバージョンに比べて新機能を追加し、さらに使いやすさを考慮した拡張がなされています。以前のバージョンのSELinuxで苦労していた点も解消されてきていますので、ぜひ皆さんもRHEL5ではSELinuxを“Enable”にして使ってみてください。
|
2/2 |
| Index | |
| Red Hat Enterprise Linux 5で始めるSELinux | |
| Page1 Referenceポリシーの採用 MLS/MCSの実装 |
|
| Page2 ツール類の充実 SELinuxを使ってみるチャンス |
|
| Profile |
| 面 和毅(おも かずき) サイオステクノロジー株式会社 OSSソリューションセンター グローバルサービスグループ グループマネージャー 学生時代よりUNIXに親しむ。1997年からサーバ構築およびセキュリティ全般を扱う仕事に従事、Linuxを使い始める。 現在はLIDSの普及活動に注力。LIDSユーザ会(LIDS-JP)の立ち上げやLIDS関連文書の日本語化、LIDSを用いたシステム構築の紹介などを行っている。また、サイオステクノロジーでビジネス面でのLIDSの普及活動に注力している。 2005年12月より、LIDS Teamに参加し、LIDSの公式な開発チームの一員として活動している。 |
| 関連記事 | |
| 連載:SELinuxの最新動向 | |
| 連載:セキュアOS「LIDS」入門 | |
| SELinux Policy EditorでSELinuxを簡単に | |
| 想像以上?! お隣韓国のセキュアOS事情(前) | |
| 想像以上?! お隣韓国のセキュアOS事情(後) | |
| ITmedia エンタープライズ:SELinuxの現状:使いやすさの改善が進むSELinux | |
| Security&Trust記事一覧 |
TechTargetジャパン
- 実録、「Hardening Zero」の舞台裏 (2012/5/25)
コラムの更新頻度を落として何をやっていたかって? 「守る技術」に焦点を当てたこんなイベントを開催しました - 複雑化、巧妙化する脅威への対策は? (2012/5/23)
データ保護や標的型攻撃対策、クラウドセキュリティ……「第9回 情報セキュリティEXPO」の会場で見つけた製品を一挙に紹介 - 仮想化がはらむ新たなリスク (2012/5/17)
仮想化に伴って生じるセキュリティやパフォーマンスへの影響を慎重に考慮し、うまく制御していく方法を紹介します - 新入生も新入社員も勉強会に寄っといで! (2012/5/14)
週末ともなれば至るところでセキュリティ系勉強会やCTFなどのイベントがあり、ツイートも盛り上がりました
|
|
キャリアアップ
スポンサーからのお知らせ
- - PR -
イベントカレンダー
- - PR -


