SNMP (Simple Network Managemnet Protocol) とはネットワーク上に展開されたホストの OS 等システム情報, ハードウェアへの負荷情報をネットワーク経由で監視するためのソフトウェアである. SNMP はマネージャと呼ばれる管理プログラムと, マネージャから呼び出されるエージェントと呼ばれる実働プログラムから構成される. 利用者はエージェントを稼働させたホストに対し, マネージャプログラムを用いて各種情報の問い合わせを行う.
SNMP には 3 つのバージョンが存在する. それぞれ SNMPv1, SNMPv2, SNMPv3 と呼ばれる. v2 は v1 のセキュリティ強化版で, v2 に「コミュティ」に基づいた管理フレームワークを導入したものが community-based SNMPv2 (SNMPv2c) である.
広く利用されている snmp ソフトウェアはカリフォルニア大学デイビス校 (UCD) にて開発された UCD-SNMP である. UCD-SNMP は SNMPv1, SNMPv2c に対応している. なお, 現在の開発プロジェクト名は NET-SNMP である.
# apt-get install snmp : マネージャプログラム # apt-get install snmpd : エージェントプログラム |
設定ファイル /etc/snmp/snmpd.conf を編集し,
特定のホストからだけ MIB データテーブルへの get (読み出し)問い合わせを許可するような設定にする. 単に監視するだけならこの設定で実用上問題はない.
2) get/set 可能なグループ設定の抹消コミュニティ名はリモートホストからの SNMP 接続アクセスパスワードになる ので十分注意する. こ の欄はくれぐれもデフォルト設定を使用することのないように注意.
デフォルトではcom2sec paranoid default publicとなっている. これを
#com2sec readonly default public
#com2sec readwrite default private#com2sec paranoid default publicにする.
com2sec readonly (接続許可IP) hogehoge
#com2sec readwrite default private
デフォルトでは get/sec (読み書き)可能なグループ MyRWGroup が用意 されている. これは必要ないので関連部分をコメントアウトする.
# /etc/init.c/snmpd restartアクセスを許可したホストからデバイス情報を get してみる
$ snmpwalk -v 1 (エージェントホスト名) (コミュニティ名) system等. サンプルコマンドは /etc/snmp/snmpd.conf に記述されている.
エージェントの設定ファイルは /etc/snmp/snmpd.conf である. このファイル内のアクセス制御に関する部分を適宜修正する必要がある.
SNMP を上手に利用すると, 例えばリモートホストのネットワークパラメータを変更すること等が可能となる. しかしこのような機能を安易に利用すると, 悪意のあるユーザからの攻撃を招く可能性もある. エージェントの設定には十分な注意が必要である. それゆえこのファイルは root 以外はアクセス不可となっている.
Debian GNU/Linux の場合, アクセス制御に関するデフォルト設定は以下のようになっている.
###ここから############################################################# # First, map the community name (COMMUNITY) into a security name # (local and mynetwork, depending on where the request is coming # from): # # sec.name source community com2sec paranoid default public #com2sec readonly default public #com2sec readwrite default private # #### # Second, map the security names into group names: # # sec.model sec.name group MyROSystem v1 paranoid group MyROSystem v2c paranoid group MyROSystem usm paranoid group MyROGroup v1 readonly group MyROGroup v2c readonly group MyROGroup usm readonly group MyRWGroup v1 readwrite group MyRWGroup v2c readwrite group MyRWGroup usm readwrite # #### # Third, create a view for us to let the groups have rights to: # # incl/excl subtree mask view all included .1 80 view system included .iso.org.dod.internet.mgmt.mib-2.system # #### # Finally, grant the 2 groups access to the 1 view with different # write permissions: # # context sec.model sec.level match read write notif access MyROSystem "" any noauth exact system none none access MyROGroup "" any noauth exact all none none access MyRWGroup "" any noauth exact all all none # ###ここまで#############################################################
コメントおよびオンラインマニュアルをよく読むと理解できるが, デフォルト設定をおおまかに解説する.
1) コミュニティ名とセキュリティ名, ソース IP の設定2) アクセスグループの設定最初の部分では, "community" と呼ばれる管理用パスワード名と, それを利用できるホストの IP アドレス(ソース IP), セキュリティ名(後述) との対応付けを行う. 書式は以下の通り.
com2sec NAME SOURCE COMMUNITY[NAME]:
セキュリティ名. なんでもよい.[SPURCE]:
問い合わせ可能なホスト名/IP アドレス(ソース IP)を指定. "default" を指定すると, あらゆるホストからのエージェントへ の問い合わせを許容する.[COMMUNITY]:
コミュニティ名. なんでもよいが, 必ずデフォルト設定から変更する. デフォルトではシステム情報だけ get 可能なセキュリティ名 paranoid のみ定義されている.
3) view の設定次の部分ではアクセスグループをセキュリティ名とセキュリティモデルを用い て定義する. 書式は以下の通り.
group NAME MODEL SECURITY[NAME]:
グループ名. なんでもよい[MODEK]:
セキュリティモデルの指定. v1, v2c, usm のいずれかを選択. v1, v2c はそれぞれ SNMPv1, SNMPv2c を表す(usm は不明). デフォルトでは
MyROSystem システム情報だけ get 可能なグループ MyROGroup get のみ可能なグループ MyRWGroup get/set 可能なグループ
が定義されている (「4) アクセス権限の設定」参照).
4) アクセス権限の設定3 つめは SNMP の管理する情報を記載したテーブル (MIB) の閲覧範囲を指定するグループ(view)を定義する. 書式は以下の通り.
view NAME TYPE SUBTREE (MASK)[NAME]:
group ディレクティブで指定したグループ名.[TYPE]:
included または excluded を選択 (意味は不明).[SUBTREE]:
set/get を許可する MIB ツリー名.[MASK]:
MIB ツリーの指定方法を 16 進 4 桁表示したもの(らしい). 省略可. 無指定だとなにもしないことになる(らしい). デフォルトでは
all 全ての MIB 情報 system システム関連情報のみ
が指定されている.
最後の部分でグループ毎にアクセス権限の設定を行う.
access NAME CONTEXT MODEL LEVEL PREFX READ WRITE NOTIFY[NAME]:
group ディレクティブで指定したグループ名.[CONTEXT]:
詳細不明. SNMPv1, SNMPv2c を用いる場合は空欄 ("") でよい.[MODEL]:
セキュリティモデル名. any, v1, v2c, usm のいずれかを選択.[LEVEL]:
セキュリティレベル. noauth, auth, priv のいずれかを選択. SNMPv1, SNMPv2c を用いる場合は noauth を選択.[PREFIX]:
[context] で指定された文字列の扱い(らしい). exact (厳密に一致することを要求) か prefix (最初の文字列が一致?) を選択.[READ] [WRITE] [NOTIFY]:
それぞれ get (読みだし), set (書き込み), trap (通知) を許可するかしないか.
最終更新日: 2002/08/04 小高正嗣 (odakker@ep.sci.hokudai.ac.jp) | Copyright © 2002- EPnetFan. All rights reserved. |