Net-SNMP の設定について
所要でNet-SNMPの設定を行う機会があったので、備忘録。
***** Net-SNMP *****
以下ディレクティブ群は基本的に全て、
/etc/snmp/snmpd.conf にて設定する項目となる。
アクセス及びセキュリティに関する項目
■com2sec (アクセス制御に関する項目)
書式 :
# sec.name source community
com2sec <security-name> <source> <community-name>
●例
com2sec testLocal01 localhost testCommunity01
com2sec testNetwork01 192.168.x.x/24 testCommunity01
説明 :
セキュリティを定義する部分。
ローカルホスト 及び 192.168.x.x/24 に属するホストからの
snmpwalk コマンドによる情報の取得を許可する。
コミュニティ名は任意だが、概念的に言うと所謂「パスワード」のようなものなので、
推測が容易な名前にするのはセキュリティ上、よろしくない。
複雑で推測が困難な名前にするべきである。
■group (グループの定義)
書式 :
# groupName securityModel securityName
group <group-name> <snmp-version> <security-name>
●例
group localGroup v1 testLocal01
group localGroup v2c testLocal01
group localGroup usm testLocal01
group networkGroup v1 testNetwork01
group networkGroup v2c testNetwork01
group networkGroup usm testNetwork01
説明 :
グループを定義する部分。
com2sec で定義したセキュリティ名に対して、
「どのバージョンのsnmp通信を許可するか」を定義する部分。
バージョンは securityModel で指定し、それぞれが以下のように対応する。
・SNMP version1 : v1
・SNMP version2 : v2c
・SNMP version3 : usm
グループ名は任意だが、接頭辞として
"ro(Read Only)" や "rw(Read Write)" のついた名前をよく見かけるので、つけるのが一般的?
つけると分かりやすくていいですね。
■view (SNMP で取得可能な情報の範囲を指定)
書式 :
# name incl/excl subtree mask(optional)
view <view-name> <type> <subtree> <hex mask value>
●例
view testView01 include .1.3.6.1.2.1.1
説明 :
MIB ツリーの取得範囲を決定する部分。ビュー名は任意。
"subtree" 列で指定したオブジェクトID を基準に情報を取得するよう定義する。
"type" を「included」とすると "subtree" で指定したOIDを含む範囲の指定となり
「excluded」とすると、"subtree" で指定したOIDの範囲外の指定となる。
"mask" は16進数で指定するマスク値の事で、8bitごとに":"で区切って指定する。
※例 : TCP に関する情報のみを取得したい場合
OID = 1.3.6.1.2.1.6 (MIB tree 参照) となる。
上記OIDのみ許可するため、マスクはOIDの数値の数だけ"1"をたてる。
1.3.1.6.1.2.1.6 = 1.1.1.1.1.1.1 = 1111 1110 = 0xfe となり
上記の例を用いると、結果的に以下のようになる
view testView01 include .1.3.6.1.2.1.6 0xfe
この状態で snmpwalk コマンドを発行すると、
TCPに関する情報のみが得られるようになる。
以下、実行結果例
# snmpwalk -v 2c -c testCommunity01 localhost .
TCP-MIB::tcpRtoAlgorithm.0 = INTEGER: other(1)
TCP-MIB::tcpRtoMin.0 = INTEGER: 200 milliseconds
TCP-MIB::tcpRtoMax.0 = INTEGER: 120000 milliseconds
TCP-MIB::tcpMaxConn.0 = INTEGER: -1
TCP-MIB::tcpActiveOpens.0 = Counter32: 60995
TCP-MIB::tcpPassiveOpens.0 = Counter32: 59025
...
MIB ツリーに関する記事は別の機会に。
■access (アクセス許可に関する設定)
書式 :
# group context sec.model sec.level prefix read write notify
access <group-name> <context> <snmp-ver> <sec-level> <condition> <view-name> <view-name> <view-name>
●例
access localGroup "" any noauth exact testView01 none none
access networkGroup "" any noauth exact testView01 none none
※ v1 又は v2 を使用した場合、<context>, <sec-level>, <condition> は指定不可となるため、「"" any noauth exact」はほぼお決まり。
説明 :
事前に定義した group 情報や view の定義を用いて最終的にアクセスに関する設定を行う部分。
各パラメタ及び詳細については以下のようになる。
"group" : group 定義部で定義したグループ名を指定。
このグループ単位でアクセスの許可を定義することになる。
"context" : SNMP v3 を使用する場合のみ、事前に定義したコンテキストを指定する。
v1, v2 の場合は空文字""を指定。
"sec.model" : 使用するSNMPのバージョン。「v1」「v2c」「usm」「any」のいずれかを指定する。
"sec.level" : model が「usm」の時のみ「auth」又は「priv」を指定可能。
v1 及び v2 の場合は「noauth」となる。
"prefix" : 「exact」又は「prefix」のいずれかを指定。
「exact」はコンテキストとの厳密な一致(完全一致)を指し、「prefix」は部分一致?
"read" : 読み取りに関して事前に定義したビュー名を指定。
"write" : 書き込みに関して事前に定義したビュー名を指定。なければ「none」を指定。
"notify" : 通知に関して事前に定義したビュー名を指定。なければ「none」を指定。
システム情報に関する項目
■syslocation (システムの場所)
説明 :
syslocation <location>
の書式で記述する。例として、データセンターの2階、4号室内の
6列目のラックに格納された上から3番目の物理サーバを指す場合、
syslocation Datacenter2F, room03, Rack 6, Row 3
のようになる。
■syscontact (システムの連絡先)
説明 :
syscontact <contact information>
の書式で記述する。担当者が田中一郎氏の場合、例として下記の様な記載となる。
syscontact Ichiro.Tanaka <ichiro.tanaka@example.com>
■sysname (システム名)
説明 :
システム名に関する記載。指定が無い場合、ホスト名が設定される。書式は下記。
system <system-name>
以上。
MIBツリーの構造などその他細かい部分については、またの機会に。