はじめに
cactiを使ってネットワーク機器の監視を始めたので、SNMPについて調べてみた。
SNMPとは
- UDP/IPでサーバーやネットワーク機器のリソース状態を監視できるプロトコル
UDPで上で動く
SNMPデータ
UDPデータ
IPデータ
通信形態
SNMPマネージャーとSNMPエージェント
cactiがSNMPマネージャーになり、ネットワーク機器のエージェントと通信して管理情報を収集する
ポーリングとトラップ
ポーリング
- マネージャーがエージェントに対して定期的にリクエストを送り、エージェントからその都度管理情報を受け取る
- cactiなどでグラフを描く時など
- エージェントのUDP161ポートに送る
トラップ
- エージェントがマネージャーに対して自発的に管理情報を発信
- トラブルが起こったときに、緊急でマネージャーに伝えるために使う
- マネージャーのUDP162ポートに送る
管理情報(MIB)
機器ごとに異なる管理情報を統一
標準MIBと拡張MIB
標準MIB(mib-2)
- 多くの機器が共通として持っている管理情報
- マネージャーは何もせずに読み取れる
拡張MIB(プライベートMIB)
- ベンダー独自の管理情報が格納
- マネージャーに登録作業が必要
SNMPのセキュリティ(SNMPv1とSNMPv2)
SNMPv1とSNMPv2
脆弱。パケットのなかみは 暗号化されない
コミュニティ名
認証として使われ、機器をグループする役割もある
アクセス権限
ネットワーク機器側でコミュニティ名によって、
読み込み、書き込み、読み書き
といった設定ができる
SNMPv3
セキュリティ機能が大幅に強化、認証や暗号化、細かいアクセス制御が可能
snmpwalk
SNMPマネージャ用コマンドの一つ
SNMP設定ファイル(/etc/snmpd.conf) SNMPエージェントの設定
SNMPエージェントの設定は/etc/snmp/snmpd.confで行います。設定内容は、主にSNMPマネージャに対してどのような情報を公開するかのコントロールです。
http://zvub.hateblo.jp/entry/20161231/1483180199
↑各設定の意味について詳しい
37 ####
38 # First, map the community name "public" into a "security name"
39
40 # sec.name source community
41 com2sec notConfigUser default public
42
43 ####
44 # Second, map the security name into a group name:
45
46 # groupName securityModel securityName
47 group notConfigGroup v1 notConfigUser
48 group notConfigGroup v2c notConfigUser
49
50 ####
51 # Third, create a view for us to let the group have rights to:
52
53 # Make at least snmpwalk -v 1 localhost -c public system fast again.
54 # name incl/excl subtree mask(optional)
55 view systemview included .1.3.6.1.2.1.1
56 view systemview included .1.3.6.1.2.1.25.1.1
57
58 ####
59 # Finally, grant the group read-only access to the systemview view.
60
61 # group context sec.model sec.level prefix read write notif
62 access notConfigGroup "" any noauth exact systemview none none
com2sec
例
# sec.name source community
com2sec local localhost private
com2sec mynet 192.168.0.0/24 public
com2sec public default public
- マネージャーからコミュニティへのアクセスがどのNWから、どんな権限でアクセスできるのかを定義している
- defaultはどこからもでそのコミュニティにアクセスできる。
sec.nameはセキュリティnameで、以下で権限を設定する。
group
46 # groupName securityModel securityName
47 group notConfigGroup v1 notConfigUser
48 group notConfigGroup v2c notConfigUser
com2sec で定義したセキュリティ名に対して、
「どのバージョンのsnmp通信を許可するか」を定義する部分。
バージョンは securityModel で指定し、それぞれが以下のように対応する。
・SNMP version1 : v1
・SNMP version2 : v2c
・SNMP version3 : usm
view
SNMP で取得可能な情報の範囲を指定
54 # name incl/excl subtree mask(optional)
55 view systemview included .1.3.6.1.2.1.1
56 view systemview included .1.3.6.1.2.1.25.1.1
57
"subtree" 列で指定したオブジェクトID を基準に情報を取得するよう定義する。"type" を「included」とすると "subtree" で指定したOIDを含む範囲の指定となり「excluded」とすると、"subtree" で指定したOIDの範囲外の指定となる。
access
セキュリティnameの権限設定
61 # group context sec.model sec.level prefix read write notif
62 access notConfigGroup "" any noauth exact systemview none none