第3回 SELinuxのお行儀を監視する――MRTG/Nagios編
面 和毅
サイオステクノロジー株式会社
OSSテクノロジーセンター
開発支援グループ
グループマネージャー
2007/8/29
今回から2回にわたり、SELinuxを導入したシステムを監視する際のTipsについて説明しましょう。引き続き、第1回の環境(CentOS 4.4+Plone用にカスタマイズしたSELinux)を基に解説を行います。なお前回まではCentOS 4.4でしたが、現在はyum updateを行ったことによりディストリビューションのバージョンはCentOS 4.5となっています。
「SELinuxはトラブルの元」は都市伝説です
ちまたではSELinuxが正常なシステム稼働にあまり良くない影響を及ぼしているという考えが浸透してきており、諸処でLinuxサーバの監視がうまくいっていないときには、「取りあえずSELinuxを無効にしてみてはどうか」という話が出ることがあります。これは果たして本当なのでしょうか?
そこで今回は、代表的な運用監視ツールであるMRTG(Multi Router Traffic Grapher)やNagiosを取り上げて、本当にSELinuxによりシステムが動作しなくなるのかを検証してみました。今回検証を行ったシステムを図1に示します。
図1 今回検証したシステムの構成 |
今回は、すでに監視システムが存在している環境を想定し、SELinuxで保護されているZope/Ploneのマシンを新たに監視対象とするようなケースを考えます。
結論を先に示すと、今回調べた監視ツール上でCentOS 4.5の設定ファイルどおりに行う限りにおいては、SELinuxが影響を与えるということはありませんでした。ですので、皆さんSELinuxを悪者にしないでくださいね。
SNMP+MRTGによる監視
まずシステムの監視といって思いつく代表的なものは、SNMP+MRTGによる監視でしょう。SNMPやMRTGの設定内容などの詳しい説明は、以下の記事を参考にしてください。
【参考記事】 第7回 障害の兆候を見逃さないためのサーバ監視 http://www.atmarkit.co.jp/flinux/rensai/root07/root07c.html 第8回 MRTGによるサーバ監視システムの構築http://www.atmarkit.co.jp/flinux/rensai/root08/root08a.html |
まず、snmpdやそのほかSNMPのテストのためのツールを使用するために、net-snmpパッケージをインストールしましょう。以下、インストール作業は監視対象となるクライアント側(図1のマシンA)で行います。SELinuxが有効な状態で、rootユーザーで、
# yum install net-snmp* |
とすることにより、net-snmpパッケージおよびツール類をまとめてインストールできます。
SELinuxでのsnmp.confファイルのコンテキストを確認してみましょう。CentOS 4.5では、snmp.confファイルに“snmpd_etc_t”という特別なコンテキストを割り当てています。ls -lZ /etc/snmp/snmp.confの出力結果は、以下のようになります。
[root@plone2 snmp]# ls -lZ /etc/snmp/snmpd.conf -rw-r--r-- root root system_u:object_r:snmpd_etc_t /etc/snmp/snmpd.conf |
それではsnmp.confファイルを編集しましょう。今回はlocalhostとmynetworkの2つに分けるため、リスト1のように設定しました。
com2sec local localhost private com2sec mynetwork 192.168.231.0/24 public group MyROGroup v1 mynetwork group MyROGroup v2c mynetwork group MyRWGroup v1 local group MyRWGroup v2c local view all included .1 80 view systemview included .1.3.6.1.2.1.1 view systemview included .1.3.6.1.2.1.25.1.1 access MyROGroup "" any noauth exact all none none access MyRWGroup "" any noauth exact all all none disk / 10000 |
リスト1 snmp.confファイルの設定 |
セキュリティ名local(localhost:127.0.0.1)に対してprivate、セキュリティ名public(192.168.231.0/24)に対してpublicというコミュニティ名の設定を行っています。こちらは適宜環境に合ったものに修正してください。
snmp.confファイルの編集が終わったら、
# service snmpd start |
としてsnmpdを立ち上げてみましょう。“ps axZ”でプロセスのコンテキストを確認すると、snmpd_tというsnmpd専用のドメインで動作していることが分かります。これにより、snmpdに脆弱性が発見された場合でも、被害がほかのドメインに波及しなくなります。
SELinuxが有効の状態 [root@plone2 snmp]# getenforce Enforcing --------------------------------------------- snmpdデーモンがsnmpd_tドメインで動作していることが分かる [root@plone2 snmp]# ps axZ | grep snmp root:system_r:snmpd_t 19562 ? S 0:00 /usr/sbin/snmpd -Lsd -Lf /dev/null -p /var/run/snmpd.pid -a |
リスト2 snmpdが動作しているドメインを確認 |
iptablesでパケットフィルタリングを行っている場合には、system-config-securitylevelなどのツールを用いて、必要なNICに対してSNMP/UDPの通信を許可しましょう。実運用環境では、監視セグメント用に個別にNICを用意していると思われますので、そのNICでSNMP/UDPの通信を許可します。
この状態で、図1の監視サーバからsnmpwalkを用いて監視対象のクライアントにアクセスすると、きちんとMIBツリーの情報を取得できていることが分かります。
[omok@nagios ~]$ snmpwalk -c public -v 2c plone2 system SNMPv2-MIB::sysDescr.0 = STRING: Linux plone2 2.6.9-55.0.2.EL #1 Tue Jun 26 14:08:18 EDT 2007 i686 SNMPv2-MIB::sysObjectID.0 = OID: NET-SNMP-MIB::netSnmpAgentOIDs.10 DISMAN-EVENT-MIB::sysUpTimeInstance = Timeticks: (178694) 0:29:46.94 SNMPv2-MIB::sysContact.0 = STRING: Root <root@localhost> (configure /etc/snmp/snmp.local.conf) SNMPv2-MIB::sysName.0 = STRING: plone2 SNMPv2-MIB::sysLocation.0 = STRING: Unknown (edit /etc/snmp/snmpd.conf) SNMPv2-MIB::sysORLastChange.0 = Timeticks: (5) 0:00:00.05 SNMPv2-MIB::sysORID.1 = OID: IF-MIB::ifMIB SNMPv2-MIB::sysORID.2 = OID: SNMPv2-MIB::snmpMIB SNMPv2-MIB::sysORID.3 = OID: TCP-MIB::tcpMIB SNMPv2-MIB::sysORID.4 = OID: IP-MIB::ip SNMPv2-MIB::sysORID.5 = OID: UDP-MIB::udpMIB SNMPv2-MIB::sysORID.6 = OID: SNMP-VIEW-BASED-ACM-MIB::vacmBasicGroup SNMPv2-MIB::sysORID.7 = OID: SNMP-FRAMEWORK-MIB::snmpFrameworkMIBCompliance SNMPv2-MIB::sysORID.8 = OID: SNMP-MPD-MIB::snmpMPDCompliance SNMPv2-MIB::sysORID.9 = OID: SNMP-USER-BASED-SM-MIB::usmMIBCompliance SNMPv2-MIB::sysORDescr.1 = STRING: The MIB module to describe generic objects for network interface sub-layers SNMPv2-MIB::sysORDescr.2 = STRING: The MIB module for SNMPv2 entities SNMPv2-MIB::sysORDescr.3 = STRING: The MIB module for managing TCP implementations SNMPv2-MIB::sysORDescr.4 = STRING: The MIB module for managing IP and ICMP implementations SNMPv2-MIB::sysORDescr.5 = STRING: The MIB module for managing UDP implementations SNMPv2-MIB::sysORDescr.6 = STRING: View-based Access Control Model for SNMP. SNMPv2-MIB::sysORDescr.7 = STRING: The SNMP Management Architecture MIB. SNMPv2-MIB::sysORDescr.8 = STRING: The MIB for Message Processing and Dispatching. SNMPv2-MIB::sysORDescr.9 = STRING: The management information definitions for the SNMP User-based Security Model. SNMPv2-MIB::sysORUpTime.1 = Timeticks: (3) 0:00:00.03 SNMPv2-MIB::sysORUpTime.2 = Timeticks: (3) 0:00:00.03 SNMPv2-MIB::sysORUpTime.3 = Timeticks: (3) 0:00:00.03 SNMPv2-MIB::sysORUpTime.4 = Timeticks: (4) 0:00:00.04 SNMPv2-MIB::sysORUpTime.5 = Timeticks: (4) 0:00:00.04 SNMPv2-MIB::sysORUpTime.6 = Timeticks: (4) 0:00:00.04 SNMPv2-MIB::sysORUpTime.7 = Timeticks: (5) 0:00:00.05 SNMPv2-MIB::sysORUpTime.8 = Timeticks: (5) 0:00:00.05 SNMPv2-MIB::sysORUpTime.9 = Timeticks: (5) 0:00:00.05 |
リスト3 MIBツリーの情報を取得できていることが確認できる |
SNMP+MRTGの結果
こうしてsnmpdがクライアントできちんと動作していますので、監視サーバでMRTGを設定し、クライアントの、
- ネットワークトラフィック
- CPU使用率
- メモリ使用率
- ディスク使用率
をグラフにして出力してみました。
図2 SELinuxをMRTGで監視した結果のグラフ |
結果として、SELinuxをクライアント上で有効にしていても、MRTGでこれらのグラフを監視サーバ上に出力する際には問題は生じませんでした。
1/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 連載インデックス |
- Windows起動前後にデバイスを守る工夫、ルートキットを防ぐ (2017/7/24)
Windows 10が備える多彩なセキュリティ対策機能を丸ごと理解するには、5つのスタックに分けて順に押さえていくことが早道だ。連載第1回は、Windows起動前の「デバイスの保護」とHyper-Vを用いたセキュリティ構成について紹介する。 - WannaCryがホンダやマクドにも。中学3年生が作ったランサムウェアの正体も話題に (2017/7/11)
2017年6月のセキュリティクラスタでは、「WannaCry」の残り火にやられたホンダや亜種に感染したマクドナルドに注目が集まった他、ランサムウェアを作成して配布した中学3年生、ランサムウェアに降伏してしまった韓国のホスティング企業など、5月に引き続きランサムウェアの話題が席巻していました。 - Recruit-CSIRTがマルウェアの「培養」用に内製した動的解析環境、その目的と工夫とは (2017/7/10)
代表的なマルウェア解析方法を紹介し、自社のみに影響があるマルウェアを「培養」するために構築した動的解析環境について解説する - 侵入されることを前提に考える――内部対策はログ管理から (2017/7/5)
人員リソースや予算の限られた中堅・中小企業にとって、大企業で導入されがちな、過剰に高機能で管理負荷の高いセキュリティ対策を施すのは現実的ではない。本連載では、中堅・中小企業が目指すべきセキュリティ対策の“現実解“を、特に標的型攻撃(APT:Advanced Persistent Threat)対策の観点から考える。
|
|