SNMPv3について


前提

・古いタイプの人間なので今までSNMPv2cしか触ってこなかった
・SNMPv3での監視方法は知らない

SNMPマネージャはzabbixサーバ

zabbixサーバの設定
・Red Hat Enterprise Linux Server release 7.7
・zabbix 3.0

やりたい事

SNMPv3でポーリング監視及びトラップ監視を実装する

この記事での言及範囲

・SNMPv3でsnmpwalkができるようにする
・SNMPv3でtrapをエージェントから送信しマネージャで正常に受信できるようにする
・MIBインポートはここでは触れない 以下参照
 プライベートMIBインポート手順

1. snmpエージェント側での設定

設定しなければいけないものは以下

①ユーザ名
②パスワード 
③セキュリティレベル
④認証方式
⑤暗号化方式
⑥暗号化するためのパスワード

これが埋まればコマンドも打てるし、管理画面からの設定もできる

しっかり理解して決めなければいけないのは
③④⑤⑥

③セキュリティレベル
1.noAuthNoPriv ユーザ名だけを使用して認証
2.authNoPriv HMAC-MD5 HMAC-SHAを使用し認証。暗号化はなし
3.authPriv HMAC-MD5 HMAC-SHAを使用し認証 暗号化する

④認証方式 ※③の2. 3のみ関係あり
HMAC-MD5 HMAC-SHAを選択する
コマンドで打つ際は短縮したりするので注意

⑤暗号化方式 ※③の3のみ関係あり
DES or AESを選択する

⑥暗号化PW ※③の3のみ関係あり
パスワードは禁止文字あるので注意(②についても同様)

※禁止文字
\ , / : ; * ? " < > | & % ^

エージェント側の設定はこれでOK

2. snmpwalkでengineIDを取得してみる

trap設定でengineIDが必要になるのでコマンドサンプルの様な書き方

ユーザ名 hello
パスワード password
エージェント機器IPアドレス 192.168.10.11
セキュリティレベル authNoPriv 
認証方式 HMAC-SHA

コマンドサンプル

# snmpwalk -v3 -u hello -l authNoPriv -a SHA -A password 192.168.10.11 .1.3.6.1.6.3.10.2.1.1.0

上記コマンドを実行するとengineIDが表示される
trap設定において必要になるため控えておく

※注意 監視対象機器によってはengineIDを機器側で設定する必要がある(複数台同じ機器を利用する場合初期設定のままだとenginIDが重複する可能性がある)ので、機器のベンダや説明書をしっかり確認すること

engineIDは以下の様に書き換える

例:80 00 41 Z6 03 11 E0 D8 1D D3 B4 → 0x800041Z60311E0D81DD3B4

(頭に0xをつけて空白を消す)

3. snmpマネージャサーバ側での設定

/etc/snmp/snmptrapd.conf に以下記述を追加する

#ユーザ情報を追加している
createUser -e 0x800041Z60311E0D81DD396 hello SHA password #UPS 1号機
createUser -e 0x800041Z60311E0D81DD3B4 hello SHA password #UPS 2号機

#helloのユーザで送信されてくるtrapをsyslog出力、コマンド実行、転送
authUser log,execute,net hello

設定追加したら、snmptrapd.serviceを停止、起動

※systemctl restart snmptrapd.service では設定読み込みしてくれないみたいなので

# systemctl stop snmptrapd.service
# systemctl start snmptrapd.service

これにより

/var/lib/net-snmp/snmptrapd.conf にユーザが追加される

この状況であれば /etc/snmp/snmptrapd.conf のユーザ情報は必要なくなるので
createuserの行は削除してOK

(トラップが正常に飛んでいることを確認してから削除推奨ではあるが
 確実に反映されている自信があるならここで削除して問題ない)

設定完了