はじめに
ZabbixでSNMPv3でTrap監視設定を行う方法について解説いたします。
そもそもZabbixでSNMP Trapを行うには
ZabbixはデフォルトではSNMP Trap監視を行うことはできません。
また、ネット上の記事だけでは情報が散在しているので、知見が無い方では独力で構築する難易度が高いです。
管理人もその一人でしたが、情報整理とナレッジ共有を図るため、可能な限りわかりやすく、且つ理解しながら構築できるよう手順を作成しました。この記事で扱うzabbixサーバの構築で使用しております。必要に応じて目を通していただけると幸いです。
また、SNMPTrap監視を行う方法については次の記事で解説しております。SNMP Trap監視を行うための設定が出来ていない方はこちらを是非ご参考ください。
手順
前提
SNMPv3について軽くおさらいします。
従来のSNMPv2cとの違いとしては、次の2つです。
- 暗号化と認証の機能が実装されている
- Communityが廃止。代わりにSNMPエンジンIDを使用
暗号化と認証の機能が実装されたことでSNMPv3のセキュリティレベルの設定としては次の3つのパターンがあります。
- noAuthNoPriv:ユーザー名だけを使用して認証を行う。通信間の暗号化は無し。
- authNoPriv:SHAを用いて認証を行う。通信間の暗号化は無し。
- authPriv:SHAを用いて認証を行う。通信間の暗号化を実施。
この中で、最もセキュリティレベルの高いのはauthPrivとなります。
今回は、これを用いてSNMPv3 Trap監視を行うことができるよう設定を行いたいと思います。
snmptrapdの設定変更
snmptrapd.confに次の文字を追加します。
[追加] createUser -e 0x80001f8880447ce666bea74866 TEST SHA password AES password authuser log,execute,net TEST priv
補足
- -eの引数では、SNMP Engine IDを指定します。これにより、SNMPマネージャー(zabbixサーバ)やSNMPエージェント(監視対象の機器)がお互いの識別をすることができます。従来のコミュニティ名の代わりとなるため、必須となります。
- TESTという文字列はユーザー名です。任意のものに適宜修正してください。
- SHAの後の文字列は認証で用いるパスワードとなります。任意のものに適宜修正してください。noAuthNoPrivでは不要となります。
- AESの後の文字列は暗号化で用いるパスワードとなります。任意のものに適宜修正してください。authNoPrivでは不要となります。
- authuserの行で用いるTESTはユーザー名となります。必ず一致させてください。
- AuthPrivの場合のみ、privが必要となります。
[root@zabbix ~]# cat /etc/snmp/snmptrapd.conf # Example configuration file for snmptrapd # # No traps are handled by default, you must edit this file! # # authCommunity log,execute,net public # traphandle SNMPv2-MIB::coldStart /usr/bin/bin/my_great_script cold authCommunity log,execute,net test perl do "/usr/local/bin/zabbix_trap_receiver.pl"; OPTIONS="-Ls6 -p /var/run/snmptrapd.pid" createUser -e 0x80001f8880447ce666bea74866 TEST SHA password AES password authuser log,execute,net TEST priv
設定を反映させるためサービスの再起動を行います。
[root@zabbix ~]# systemctl restart snmptrapd.service
確認します。
[root@zabbix ~]# systemctl list-unit-files --type=service | grep snmp
snmpd.service disabled
snmptrapd.service enabled
[root@zabbix ~]# cat /var/log/messages | tail -n 5
May 22 05:54:20 zabbix systemd[1]: Stopped Simple Network Management Protocol (SNMP) Trap Daemon..
May 22 05:54:20 zabbix systemd[1]: Starting Simple Network Management Protocol (SNMP) Trap Daemon....
May 22 05:54:20 zabbix snmptrapd[4042]: /etc/snmp/snmptrapd.conf: line 9: Warning: Unknown token: OPTIONS="-Ls6.
May 22 05:54:20 zabbix snmptrapd[4042]: NET-SNMP version 5.8
May 22 05:54:20 zabbix systemd[1]: Started Simple Network Management Protocol (SNMP) Trap Daemon..
また、設定が適切に反映されると次の設定ファイルにも反映されます。
[root@zabbix ~]# cat /var/lib/net-snmp/snmptrapd.conf
#
# net-snmp (or ucd-snmp) persistent data file.
#
############################################################################
# STOP STOP STOP STOP STOP STOP STOP STOP STOP
#
# **** DO NOT EDIT THIS FILE ****
#
# STOP STOP STOP STOP STOP STOP STOP STOP STOP
############################################################################
#
# DO NOT STORE CONFIGURATION ENTRIES HERE.
# Please save normal configuration tokens for snmptrapd in /etc/snmp/snmptrapd.conf.
# Only "createUser" tokens should be placed here by snmptrapd administrators.
# (Did I mention: do not edit this file?)
#
usmUser 1 3 0x80001f8880447ce666bea74866 "TEST" "TEST" NULL .1.3.6.1.6.3.10.1.1.3 0x5162331d6c6d9f905f7baf7ed28107ea4c1eb836 .1.3.6.1.6.3.10.1.2.4 0x5162331d6c6d9f905f7baf7ed28107ea 0x
oldEngineID 0x80001f8880447ce666bea7486600000000
確認
次のコマンドを投入します。
snmptrap -v 3 -n "" -a SHA -A password -x AES -X password -l authPriv -u TEST -e 0x80001f8880447ce666bea74866 localhost 0 linkUp.0
補足
- -v:バージョンを指定。
- -a:認証方式を指定。
- -A:認証に使用するパスワードを指定。
- -x:暗号化方式を指定。
- -X:暗号化に使用するパスワードを指定。
- -l:セキュリティレベルを指定。
- -u:ユーザー名を指定。必ずsnmptrapd.confで定義したものと一致する必要があります。
- -e:エンジンIDを指定。必ずsnmptrapd.confで定義したものと一致する必要があります。
- localhost:トラップを送信する宛先のIPアドレスを指定します。今回は検証のため自身(=zabbixサーバ)にtrapを送信します。
確認します。ログに出力されていれば成功です。
[root@zabbix ~]# cat /var/log/snmptrap/snmptrap.log 2024-05-21T05:03:37+0900 ZBXTRAP 127.0.0.1 2024-05-22T05:24:57+0900 ZBXTRAP 127.0.0.1 PDU INFO: receivedfrom UDP: [127.0.0.1]:41600->[127.0.0.1]:162 contextEngineID 0x80001f8880ff59f179f8a74b6600000000 securitylevel 3 securityEngineID 0x80001f8880447ce666bea74866 version 3 securitymodel 3 notificationtype TRAP messageid 1295576930 errorindex 0 requestid 1512989784 contextName transactionid 1 errorstatus 0 securityName TEST VARBINDS: DISMAN-EVENT-MIB::sysUpTimeInstance type=67 value=Timeticks: (0) 0:00:00.00 SNMPv2-MIB::snmpTrapOID.0 type=6 value=OID: IF-MIB::linkUp.0 [root@zabbix ~]#
参考
3 SNMP traps
SNMPv3とは?SNMPv3の仕様を徹底解説
SNMPバージョン3(v3)とはSNMPプロトコルの最新版で、v1やv2cの懸念点であったセキュリティが強化されています。ここではSNMPv3の仕様と、他のバージョンとの違いを徹底解説します。
SNMPv3 - Ciscoコンフィグ設定 3
SNMPv3 - Ciscoコンフィグ設定 3
コメント