最終回 Heartbeat+独自ドメインでセキュアな世界のその先へ


面 和毅
サイオステクノロジー株式会社
OSSテクノロジーセンター
開発支援グループ
グループマネージャー
2008/7/16


 ドメイン遷移の設定

 それでは、各ドメインにドメイン遷移する際には、どのようにポリシーに追記すればよいのでしょうか。

 以前のバージョンと比べて、CentOS 5でのSELinuxはドキュメントの整備が行われており、「policyhelp」というコマンドで、ポリシー作成に関するヘルプファイルを見ることができます。

 SELinuxの開発環境(selinux-policy-devel-XX)がインストールされていることが前提条件ですが、/usr/share/selinux/devel以下に「policyhelp」というプログラムがありますので、

# /usr/share/selinux/devel/policyhelp

として起動します。Webブラウザが立ち上がり、現在システムにインストール/ロードされているポリシーの構成情報に関するヘルプファイルが表示されます。

図17 ポリシーの構成情報に関するヘルプファイル(クリックで拡大します)

 これらは、ポリシーを作成する際に使用できるマクロ類で、CentOS 5からは何度もallow文でポリシーを追加していくよりも、これらのマクロ類を使用してポリシーを書くことが推奨されています。

 左側ペインで「Template Index」を開くと、「domain_auto_trans」というマクロがあります。このマニュアルによると、

domain_auto_trans( source_domain , entry_file , target_domain )

と指定することで、ドメイン遷移用のポリシーが追加されます。

 そこで今回は、

domain_auto_trans(heartbeat_t, heartbeat_initrc_exec_httpd_t, httpd_t)
domain_auto_trans(heartbeat_t, heartbeat_initrc_exec_mysqld_t, mysqld_t)

を追加します。

 では、Permissiveモードでのログとaudit2allowを活用して、httpd_t、mysqld_tのそれぞれにheartbeat_tドメインが遷移できるようなポリシーを作成しましょう。

  1. まず、

    # selinux=0

    でPermissiveモードにします。

  2. 自動生成されたheartbeat.teファイルに上述のdomain_auto_transマクロを記載したものと、上述1の2行を加えたheartbeat.fcファイルから、heartbeat.ppファイルを作成します。この際、.fcファイルに加えたとおりのコンテキストを「chcon」コマンドなどで修正できるように、heartbeat.shファイルを書き換えます。
      作成したら、system-config-selinux内の「Add」ボタンで、heartbeat.ppファイルをロードします。

  3. 次に、コマンドラインで、

    #/etc/init.d/heartbeat start

    として、Heartbeat、およびHeartbeatから起動されるhttpd/mysqldが完全に立ち上がるまで待ちます。

  4. 前述の手順と同じく、テスト用のサンプルURLにアクセスし、きちんとCGIも動作していることを確認します。

  5. コマンドラインで、

    #/etc/init.d/heartbeat stop

    として、Heartbeat、およびhttpd/mysqldを停止させます。

  6. 「Remove」ボタンを押して、heartbeat.ppモジュールをアンロードします。

  7. コマンドラインで、

    # cat /var/log/audit/audit.log |audit2allow -R > /root/policies/heartbeat.add

    として、SELinuxのエラーログから、Heartbeatの追加ポリシーを自動生成します。

  8. ポリシーを適宜調整しながら、heartbeat.addファイルの中身をheartbeat.teファイルに加えます。

  9. heartbeat.ppファイル、tmpディレクトリを削除し、

    # sh ./heartbeat.sh

    コマンドで、新たにheartbeat.ppモジュールを作成します。

  10. 今度は、

    # setenforce 1

    としてSELinuxを有効にしてHeartbeatからhttpd/MySQLが予定どおりに動作するかを確認します。

 このような手順になります。最終的には図18のように、pstreeで確認してもHeartbeatはheartbeat_t、httpdはhttpd_t、mysqlはmysqld_tと、きちんとそれぞれのドメインに遷移しているのが分かります。

-heartbeat(`root:system_r:heartbeat_t')
  |   |-attrd(`root:system_r:heartbeat_t')
  |   |-ccm(`root:system_r:heartbeat_t')
  |   |-cib(`root:system_r:heartbeat_t')
  |   |-crmd(`root:system_r:heartbeat_t')
  |   |    |-pengine(`root:system_r:heartbeat_t')
  |   |    `-tengine(`root:system_r:heartbeat_t')
  |   |-heartbeat(`root:system_r:heartbeat_t')
  |   |-heartbeat(`root:system_r:heartbeat_t')
  |   |-heartbeat(`root:system_r:heartbeat_t')
  |   |-lrmd(`root:system_r:heartbeat_t')
  |   |-mgmtd(`root:system_r:heartbeat_t')
  |   |-pingd(`root:system_r:heartbeat_t')
  |   `-stonithd(`root:system_r:heartbeat_t')
  |-hidd(`system_u:system_r:bluetooth_t')
  |-httpd(`root:system_r:httpd_t')
  |   |-httpd(`root:system_r:httpd_t')
  |   |-httpd(`root:system_r:httpd_t')
  |   |-httpd(`root:system_r:httpd_t')
  |   |-httpd(`root:system_r:httpd_t')
------------------中略------------------------
mysqld_safe(`root:system_r:mysqld_t')
  |   `-mysqld(`root:system_r:mysqld_t')
  |        |-{mysqld}(`root:system_r:mysqld_t')
  |        |-{mysqld}(`root:system_r:mysqld_t')
  |        |-{mysqld}(`root:system_r:mysqld_t')
  |        |-{mysqld}(`root:system_r:mysqld_t')
  |        |-{mysqld}(`root:system_r:mysqld_t')
  |        |-{mysqld}(`root:system_r:mysqld_t')  
図18 ドメイン遷移が行われていることが分かる

 SELinuxの設定を行う際には、出力されたログからポリシーを自動生成するようなツールを用いることで、確かに簡単に設定できるようになりました。しかし、自動生成ツールの出力をそのまま検証せずに用いると、設定者の意図しない動作が起きることがあります。

 そこで、個々のセキュリティ目標をあらかじめきちんと設定し、それに沿ってSELinuxのポリシーが正しく作られているか、確認を行うことが必要になります。しかし、確認を行い、ポリシーを修正するには、それなりの経験が必要となります。

 そのような場合は、「policy help」で起動されるオンラインマニュアルなど、マクロの書き方など細かく解説されているものを参考にするとよいでしょう。

 業務アプリケーションでもスイッチ・オンは怖くない!

 第10回まで続きましたこの連載も、これでいったん区切りとします。SELinuxを体験することにより、皆さまがシステムを構築する際にSELinuxのスイッチをオン! にして、よりセキュアなシステムを構築できるようになればうれしく思います。

3/3
 

Index
Heartbeat+独自ドメインでセキュアな世界のその先へ
  Page1
Heartbeat用の独自ドメインの設定
Heartbeat用のひな型の作成
  Page2
自動生成されたポリシーを調整する
子プロセスを各ドメインへ遷移させるには
Page3
ドメイン遷移の設定
業務アプリケーションでもスイッチ・オンは怖くない!


Profile
面 和毅(おも かずき)

サイオステクノロジー株式会社
OSSテクノロジーセンター
開発支援グループ
グループマネージャー


学生時代よりUNIXに親しむ。1997年からサーバ構築およびセキュリティ全般を扱う仕事に従事、Linuxを使い始める。

現在はLIDSの普及活動に注力。LIDSユーザ会(LIDS-JP)の立ち上げやLIDS関連文書の日本語化、LIDSを用いたシステム構築の紹介などを行っている。また、サイオステクノロジーでビジネス面でのLIDSの普及活動に注力している。

2005年12月より、LIDS Teamに参加し、LIDSの公式な開発チームの一員として活動している。

スイッチ・オン! SELinux 連載インデックス


Security&Trust フォーラム 新着記事
@ITメールマガジン 新着情報やスタッフのコラムがメールで届きます(無料)

注目のテーマ

Security & Trust 記事ランキング

本日 月間