第3回 SELinuxのお行儀を監視する――MRTG/Nagios編


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

 SNMP+MRTGでSELinuxが問題になる場合

 ここで、SELinuxが問題になる事例として考えられることは、snmpd.confなどのファイルのコンテキスト情報がおかしくなった場合に、snmpdがきちんと動作しなくなるケースです。

 例として、いったんクライアント上でSELinuxを無効にしてから、snmpdの設定ファイル(/etc/snmp/snmpd.conf)のコンテキスト“snmpd_etc_t”を別のコンテキストに変更し、再度SELinuxを有効にして、

# service snmpd restart

としてsnmpdを再起動してみましょう。今回、コンテキストを“httpd_config_t”に変更してみました。どのようなことになるでしょうか。

SELinuxをいったん無効にし、snmpd.confファイルのコンテキストを変更する
[root@plone2 snmp]# setenforce 0
[root@plone2 snmp]# chcon system_u:object_r:httpd_config_t snmpd.conf
[root@plone2 snmp]# ls -lZ
-rw-r--r-- root root     
system_u:object_r:httpd_config_t     snmpd.conf
[root@plone2 snmp]# setenforce 1
[root@plone2 snmp]# getenforce
Enforcing

---------------------------------------------------------------
snmpd を再起動する
[root@plone2 snmp]# service snmpd restart
Stopping snmpd: [ OK ]
Starting snmpd: [ OK ]
リスト4 snmpd.confのコンテキストを変更し、再起動

 一見すると、snmpdは動作しているように見えますが、クライアント上や監視サーバ上からsnmpwalkを用いてMIBツリー情報を取得しようとすると「Timeout: No Response from localhost」などとなってタイムアウトしてしまい、情報が得られなくなっています。

snmpd のコンテキストを確認してみる。
一見するときちんと動作しているように見える
[root@plone2 snmp]# ps axZ | grep snmp
root:system_r:snmpd_t      20894 ?        S     0:00 /usr/sbin/snmpd -Lsd -Lf /dev/null -p /var/run/snmpd.pid -a

---------------------------------------------------------------
snmpwalkの結果が返ってこなくなる
[マシンA(監視サーバ)]
[root@plone2 snmp]# snmpwalk -Os -c private -v 1 localhost system
Timeout: No Response from localhost

[マシンB(監視対象クライアント)]
[omok@nagios ~]$ snmpwalk -c public -v 1 plone2 system
Timeout: No Response from plone2
リスト5 コンテキストが異なると情報が取得できない

 このように、snmpdの設定ファイルなどのコンテキストが本来のものと異なってしまった場合には、SELinuxによりsnmpdがきちんと動作しなくなることがあるようです。このようなケースが起きる場合は、

  • SELinuxを有効/無効で切り替えて作業をしているときに、snmpd.confファイルのコンテキストに不整合が起きた
  • 新たにsnmpd.confを別の場所からコピーしたときに、付加されたコンテキストが望んだものと異なってしまった
  • バックアップからリストアする際に、コンテキスト情報がきちんとリストアされなかった(第2回参照

など、さまざまな原因が考えられます。

 コンテキスト情報が「おかしくなっているかな?」と感じたときには、 /etc/selinux/targeted/contexts/files/file_contextsファイルに、システム内のすべてのファイルのコンテキスト情報が格納されていますので、こちらを参考にするとよいでしょう。ただし、このファイルのコンテキスト情報はSELinuxポリシーで決定されているもので、chconコマンドなどで手動で直したコンテキスト情報については反映されませんので注意が必要です。

 Nagios+NRPEによる監視

 次に、これも運用監視で広く使われている「Nagios」を例に、SELinuxの動作に対してどう影響するかを見てみましょう。

 MRTGの場合と同様に、すでにNagiosが動作しているマシンBで運用監視をしているシステムに、新たにSELinuxが有効になったクライアントマシンAを付け加えたという状況を考えます。

図3 Nagios+NRPEでのシステム構成

 Nagiosのインストールや設定については、@ITの連載記事で詳しく説明されていますので、そちらを参考にしてください。

【関連記事】
連載:24×365のシステム管理
第5回 Webサーバの24×365監視を実現する
     〜その2 URL監視用のツールをインストールする〜
http://www.atmarkit.co.jp/fnetwork/rensai/netman05/netman01.html

 監視対象クライアントの情報を取得するために、クライアント上にNagios PluginsとNRPEをインストールします。NRPEとNagiosの関係を図4に示します。

図4 NagiosとNRPEの関係
  1. Nagiosサーバはnagios.cfgファイルにより動作します。
  2. nagios.cfgファイルは別の設定ファイル(今回の例ではmynetwork.cfgファイル)を参照しています。
  3. mynetwork.cfgファイルでは、監視対象のクライアントに対してcheck_nrpeを通して通信を行います。
  4. クライアントではxinedを通してNRPEが起動されます。
  5. NRPEはnrpe.cfgファイルを参照し、check_nrpeにより引き渡されたコマンドをプラグインに変換して実行します。
  6. 実行結果と終了ステータスがNRPEからNagiosサーバに返され、画面に表示されます。

 CentOS 4.5用のRPMはyumで提供されていないため、ソースをダウンロードしてコンパイル/インストールします。NRPE.pdfに記載されているインストール手順に従って、Nagios PluginとNRPEをインストールします。

2/3

Index
SELinuxのお行儀を監視する――MRTG/Nagios編
  Page1
「SELinuxはトラブルの元」は都市伝説です
SNMP+MRTGによる監視
SNMP+MRTGの結果
Page2
SNMP+MRTGでSELinuxが問題になる場合
Nagios+NRPEによる監視
  Page3
Nagios Pluginsのインストール
NRPEのインストール
nrpe.cfgファイルの編集
Nagiosサーバ上での設定ファイルの変更
Nagios+NRPEシステムでの結果


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


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

注目のテーマ

Security & Trust 記事ランキング

本日 月間