第6回 GUIでカスタマイズも簡単! SELinux on CentOS 5.1


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

 今回は、実際にCentOS 5でNagiosプラグイン用のポリシーを作成してみることにより、CentOS 4からSELinux部分がどのように変わったのかを見ていきましょう。

 はじめに環境のアップデートですが、CentOS 5.1が2007年12月4日付でリリースされましたので、以降はCentOS 5.1を使用します。この連載は実運用環境を前提に解説していますが、メジャーバージョンアップであるCentOS 4→CentOS 5に比べてパッチレベルでのアップデートであるCentOS 5→CentOS 5.1では影響も少なく、実際の運用でもアップデートを適用することは可能かと思います。

 まずは環境を確認

 第3回第4回でお話ししたような、Nagiosでの運用監視のネットワークに、CentOS 5.1を追加した場合を想定します。

図1 Nagios環境構成図

 NagiosプラグインとNRPEのインストールと設定方法は、第3回、第4回で説明した手順をそのまま用います。マシンC上にNagios Plugins(2007年12月時点ではnagios-plugins-1.4.10.tar.gz)とNRPE(2007年12月時点ではnrpe-2.10.tar.gz)をインストールします。xinetdを用いてNRPEを起動しますので、そちらの設定も同様に過去の記事を参考にして行います。

 第4回のときと同じく、

  1. SELinuxのON/OFF状態
  2. SELinuxのバージョン
  3. SELinuxが出力するログ

をNagiosを用いて監視しましょう。

図2 Nagiosの管理画面

 第3回のときと同じく、NRPE用のドメインを作成しない場合には、NRPEはinetd_tドメインで動作します。また今回、NRPEがどのドメインで動作しているのかを確認するために、“ps axZ”の結果を返す簡単なスクリプトを用意し、「NRPE_DOMAIN」としてnagios上から確認しています。これは、NRPEがxined経由で起動されるため常駐していないので、Nagios経由でシステム情報を確認していない際には“ps axZ”でもプロセスが出力されないためです。

 CentOS 5.1のマシン上でステータスを取得するスクリプト(/usr/local/nagios/libexec/check_nrpe_domain.pl)としてリスト1のスクリプトを使用します。

#! /usr/bin/perl

$STATE_OK           = 0;
$STATE_WARNING = 1;
$STATE_CRITICAL = 2;
$STATE_UNKNOWN = 3;
$STATE_DEPENDENT= 4;

chomp($NRPE_DOMAIN = `/bin/ps axZ | grep nrpe`);
print "$NRPE_DOMAIN\n";
         exit $STATE_OK;
リスト1 check_nrpe_domain.plの内容

 CentOS 5.1上でのnrpe.cfgの変更点をリスト2、Nagiosサーバ上での変更点をリスト3に示します。

command[check_selinux_granted]=/usr/local/nagios/libexec/check_log -F /var/log/messages -O /tmp/selinux_granted_log -q "avc: granted"

#この行を追加
command[check_nrpe_domain]=/usr/local/nagios/libexec/check_nrpe_domain.pl
リスト2 CentOS 5.1上の変更点

# Nagiosの設定に下記の定義を追加

define service{
         use                       local-service ;         Name of service template to use
         host_name             centos5
         service_description NRPE-disk
         check_command     check_nrpe!check_hda1
         }
リスト3 Nagiosサーバ上での変更点

 NRPE_DOMAINの詳細は図3になります。

図3 NRPE_DOMAINの出力詳細

 system-config-selinuxによるポリシーのひな型作成

 NRPE用ドメインを作成するために、CentOS 5.1では「ポリシーモジュール」を作成します。このポリシーモジュールのひな型を作成するために「system-config-selinux」を使用します。以下のステップに従って作成していきます。

  1. system-config-selinuxを起動し、「Policy Module」の項を選びます。

    図4 system-config-selinux画面でPolicy Moduleを選択

  2. 「新規」というボタンをクリックすると、「SELinux Policy Generation Tool」が起動します。

    図5 SELinux Policy Generation Tool起動画面

  3. アプリケーションの名前と実行ファイルを選択します。ここで入力した「アプリケーションの名前_t」がプロセスのドメイン名になります。今回は、名前を「NRPE」とし、実行ファイルを/usr/local/nagios/bin/nrpeとしています。

    図6 アプリケーションの選択。今回は「NRPE」という名称で作成する

  4. アプリケーションのタイプを指定します。今回はxinetd経由で起動されますので、「inetd」を選択します。

    図7 アプリケーションのタイプの指定

  5. ネットワーク入力用のネットワークポートとプロトコルを選択します。TCP Portsで「5666」とします。

    図8 ネットワーク入力の設定

  6. ネットワーク出力用のネットワークポートとプロトコルを選択します。TCP Portsで「5666」とします。

    図9 ネットワーク出力の設定

  7. アプリケーションの特徴を選択します。NRPEはnagiosユーザーで動作しますので、一番下のチェックボックスにチェックをします。

    図10 アプリケーションの特徴を指定

  8. アプリケーションが生成されたら、書き込みを行うファイルやディレクトリを選択します。今回は特に書き込みを行いませんので、選択しません。

    図11 アプリケーションが書き込むファイルの選択。今回は選択しない

  9. ポリシーのひな型をどのディレクトリに生成するかを選択します。今回の例では「/root/policies」に生成することにします。

    図12 ポリシーのひな型を出力するディレクトリの指定

  10. ポリシーファイルのひな型を生成する旨の確認メッセージが出てきますので、「適用」ボタンをクリックします。

    図13 確認メッセージ

  11. 生成したファイルの説明と一覧が出力されます。

    図14 生成したファイルの一覧

 以上の手順により、/root/policies以下にNRPEドメイン用のポリシーのひな型として

  • NRPE.te  Typeルール
  • NRPE.fc  ファイルコンテキスト情報
  • NRPE.if  インターフェイスファイル
  • NRPE.sh  ポリシーモジュール生成用のシェルスクリプト

が作成されました。

[root@localhost ~]# ls -l /root/policies/
total 32
-rw-r--r-- 1 root root 78 Dec 6 15:24 NRPE.fc
-rw-r--r-- 1 root root 474 Dec 6 15:24 NRPE.if
-rw-r--r-- 1 root root 137 Dec 6 15:24 NRPE.sh
-rw-r--r-- 1 root root 551 Dec 6 15:24 NRPE.te
リスト4 ひな型のファイル類

1/3

Index
GUIでカスタマイズも簡単! SELinux on CentOS 5.1
Page1
まずは環境を確認
system-config-selinuxによるポリシーのひな型作成
  Page2
GUIでできちゃう、ポリシーモジュールのコンパイルとロード
  Page3
ポリシーの調整
GUIツールも充実しているCentOS 5.1を体験すべし!


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


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

注目のテーマ

Security & Trust 記事ランキング

本日 月間