snmpd

LinuxでSNMPを出力するSNMPエージェントプログラム。
SNMPはネットワーク機器でサポートされている場合も多く、色んな場面で利用する事がある。
エージェントのデータを取得するには、クライアント(SNMPマネージャ)からsnmpwalkを実行する。

SNMPv3対応

SNMPv1/v2では暗号化が出来ないが、v3では認証レベルに応じた暗号化が出来るようになる。
暗号化を行う場合は、snmpd.confに下記情報を書き込んだ後、
生成済みの一時ファイルを削除してからsnmpdを再起動する。

・認証ユーザの作成
createUser ${USER-NAME} (MD5|SHA) ${HASH-PASS} (DES|AES) %{KEY-PASS}
---
"MD5|SHA":ハッシュ鍵のパスワード
"DES|AES":ユーザの認証パスワード

・参照ACLの設定
view ${ACL-NAME} ${OID}
---
"MIB":参照を許可するOIDを設定

・ユーザ権限の設定
(rw|ro)user ${USER-NAME} (noauth|auth|priv) -V ${ACL-NAME}
---
rwuser:書き込み可ユーザ
rouser:書き込み不可ユーザ
noauth:ユーザ認証無し、ハッシュ化無し
auth  :ユーザ認証有り、ハッシュ化無し
priv  :ユーザ認証有り、ハッシュ化有り


設定方法

SNMPv3で認証設定をするには下記操作を行う。
認証ユーザの設定を行う際は、snmpdを停止させた状態で作業を行わないと、
一時生成ファイルの上書きが行われず、認証不備の原因となるので注意する。
可能なら一時生成ファイルを削除しておくと、上記不具合に当たらないのでやっといた方が良い。

・シナリオ
---
SNMPユーザ名  :snmp
ハッシュパス  :hash
認証パスワード:pass
アルゴリズム  :SHA
暗号強度      :AES
ユーザ権限    :認証、ハッシュ化、読込み限定
アクセスリスト:OIDは全て参照
# systemctl stop snmpd
# rm /var/lib/snmp/snmpd.conf
# vi /etc/snmp/snmpd.conf
---
createUser snmp SHA hash AES pass
view       all  .1
rouser     snmp priv -V all


起動スクリプト

snmpd起動スクリプトがinit、systemdで分散されてしまい、コンフィグ・実行ユーザ指定が上手く出来ない場合がある。
その時は、一時的にsystemd用の起動スクリプトを削除した後に、
chkconfigでinitスクリプトをsystemd用に変換しつつ上書きする。

# rm /etc/systemd/system/multi-user.target/snmpd.service
# rm /lib/systemd/system/snmpd.service
# chkconfig --del snmpd
snmpd                     0:off  1:off  2:off  3:off  4:off  5:off  6:off

# chkconfig --add snmpd
snmpd                     0:off  1:off  2:on   3:on   4:on   5:on   6:off

# systemctl daemon-reload
# /etc/init.d/snmpd restart
# ps -ef | grep snmpd