【Zabbix】SNMPv3でSNMP Trap監視を行う方法

zabbix Linux
スポンサーリンク
スポンサーリンク

はじめに

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

コメント