[eproot トップページへ]

SNMP の手引


目次

1. SNMP とは ?
2. ソースの入手
3. エージェントの設定
4. snmpd 再起動とアクセステスト
5. 参考文献

付録: /etc/snmpd/snmpd.conf 解説

1. SNMP とは

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 である.

2. ソースの入手

ソースコードは http://net-snmp.sourceforge.net から入手できる. Debian GNU/Linux を利用している場合,
# apt-get install snmp  : マネージャプログラム
# apt-get install snmpd : エージェントプログラム
としてインストールできる.

3. エージェントの設定

設定ファイル /etc/snmp/snmpd.conf を編集し,

特定のホストからだけ MIB データテーブルへの get (読み出し)問い合わせを許可する
ような設定にする. 単に監視するだけならこの設定で実用上問題はない.

1) コミュニティ名とセキュリティ名, ソース IP の設定

コミュニティ名はリモートホストからの 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
にする.
2) get/set 可能なグループ設定の抹消

デフォルトでは get/sec (読み書き)可能なグループ MyRWGroup が用意 されている. これは必要ないので関連部分をコメントアウトする.

4. snmpd 再起動とアクセステスト

snmpd を再起動.
# /etc/init.c/snmpd restart
アクセスを許可したホストからデバイス情報を get してみる
$ snmpwalk -v 1 (エージェントホスト名) (コミュニティ名) system  
等. サンプルコマンドは /etc/snmp/snmpd.conf に記述されている.

5. 参考文献


付録: /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 の設定

最初の部分では, "community" と呼ばれる管理用パスワード名と, それを利用できるホストの IP アドレス(ソース IP), セキュリティ名(後述) との対応付けを行う. 書式は以下の通り.

com2sec NAME SOURCE COMMUNITY
[NAME]:
セキュリティ名. なんでもよい.
[SPURCE]:
問い合わせ可能なホスト名/IP アドレス(ソース IP)を指定. "default" を指定すると, あらゆるホストからのエージェントへ の問い合わせを許容する.
[COMMUNITY]:
コミュニティ名. なんでもよいが, 必ずデフォルト設定から変更する. デフォルトではシステム情報だけ get 可能なセキュリティ名 paranoid のみ定義されている.
2) アクセスグループの設定

次の部分ではアクセスグループをセキュリティ名とセキュリティモデルを用い て定義する. 書式は以下の通り.

group NAME MODEL SECURITY
[NAME]:
グループ名. なんでもよい
[MODEK]:
セキュリティモデルの指定. v1, v2c, usm のいずれかを選択. v1, v2c はそれぞれ SNMPv1, SNMPv2c を表す(usm は不明). デフォルトでは
 
MyROSystemシステム情報だけ get 可能なグループ
MyROGroupget のみ可能なグループ
MyRWGroupget/set 可能なグループ

が定義されている (「4) アクセス権限の設定」参照).
3) view の設定

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システム関連情報のみ

が指定されている.
4) アクセス権限の設定

最後の部分でグループ毎にアクセス権限の設定を行う.

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.