作業環境
- FortiGate 60E
- version 7.0.3
SNMPv3 の概要
SNMPv1、v2c との違い
- v1、v2c では役割によって SNMP エージェントと SNMP マネージャという名称があるが、v3 では「
SNMP エンティティ
」に置き換えられて統一された - v1、v2c ではコミュニティによる認証がされるが、v3 ではユーザ(ユーザ名とパスワード)によって認証を行う
- v1、v2c では SNMP メッセージの暗号化機能は無いが、v3 では暗号化機能がある
SNMP エンティティが持つ 2 つの要素
- SNMP エンジン
- SNMP エンティティを識別する一意の
SNMP エンジン ID
を持つ - SNMP メッセージの送受信機能
- メッセージの暗号化・復号、ユーザー認証機能
- ユーザのアクセス制御
- SNMP エンティティを識別する一意の
- SNMP アプリケーション(v1、v2c における SNMP エージェント・マネージャの機能)
- Get リクエスト等の送信、Get リクエスト等への応答
- トラップの送信、トラップ受信時の処理
FortiGate における SNMPv3 設定
FortiGate で SNMPv3 を設定する場合は、SNMPv3 ユーザを作成して設定します。
SNMPv3 ユーザの作成
GUI の [システム > SNMP] 画面の下側 [SNMPv3] 欄内の [新規作成] をクリックします。

[新規SNMPユーザ] 画面が表示されるため、以下の各項目を設定していきます。
ユーザ名
SNMPv3 ユーザ名を入力します。

セキュリティレベル
認証の有無と、暗号化の有無を指定します。
それぞれについて有りの場合は、アルゴリズムとパスワードを設定します。

- 認証アルゴリズム
- MD5
- SHA1(デフォルト)
- SHA224
- SHA256
- SHA384
- SHA512
- 暗号化アルゴリズム
- AES(デフォルト)
- DES
- AES256
- AES256 Cisco
ホスト
監視サーバ(トラップ送信先)の IP アドレスを指定します。

クエリとトラップ
クエリとトラップそれぞれについて、有効/無効とポート番号を設定します。

デフォルトは上画像の通りです。
SNMPイベント
各種トラップ送信の有効/無効を設定します。

項目一覧は以下の通り。青色の項目はデフォルト無効で、その他はデフォルト有効。
- CPU負荷の高騰
- 利用可能なメモリが不足
- 利用可能なログスペースが不足
- インターフェースのIPアドレス変更
- VPNトンネルがアップ
- VPNトンネルがダウン
- HAクラスタのステータスが変化
- HAハートビートインターフェースの障害
- IPSがアタックを検知
- IPSがアノマリを検知
- AVがウイルスを検知
- AVがオーバーサイズファイルを検知
- AVがパターンに一致するファイルを検知
- AVが断片化ファイルを検知
- インターフェースIPの変更(FMトラップ)
- 設定変更(FMトラップ)
- BGP FSMが Established ステートに移行
- BGP FSMが高ナンバーから低ナンバーのステートに移行
- HAクラスタメンバーがアップ
- HAクラスタメンバーがダウン
- エンティティ設定変更(RFC4133)
- AVシステムがコンサーブモードへ移行
- AVバイパスの発生
- AVがオーバーサイズファイルをパス
- AVがオーバーサイズファイルをブロック
- IPSパッケージの更新
- IPSネットワークバッファがフル
- FortiAnalyzerから切断
- APがアップ
- APがダウン
- FortiSwitchコントローラーセッションがアップ
- FortiSwitchコントローラーセッションがダウン
- ロードバランスリアルサーバがダウン
- 新しいデバイスを発見
- CPU使用率が高いです。
- DHCPアドレスの制限
- 仮想OSPF以外のネイバーの状態に変化があった場合、トラップ送信
- OSPF仮想ネイバーの状態に変化があった場合、トラップを送信
設定の確定
ユーザの追加をしたら [適用] をクリックして設定を確定します。

CLI コンフィグ確認
SNMPv3 ユーザ設定は CLI コンフィグの config system snmp user
に対応します。
FW01 # show full-configuration system snmp user
config system snmp user
edit "v3user01"
set status enable
set trap-status enable
set trap-lport 162
set trap-rport 162
set queries enable
set query-port 161
set notify-hosts 10.10.10.10
set source-ip 0.0.0.0
set source-ipv6 ::
set ha-direct disable
set events cpu-high mem-low log-full intf-ip vpn-tun-up vpn-tun-down ha-switch ha-hb-failure ips-signature ips-anomaly av-virus av-oversize av-pattern av-fragmented fm-if-change bgp-established bgp-backward-transition ha-member-up ha-member-down ent-conf-change av-conserve av-bypass av-oversize-passed av-oversize-blocked ips-pkg-update ips-fail-open faz-disconnect wc-ap-up wc-ap-down fswctl-session-up fswctl-session-down load-balance-real-server-down per-cpu-high dhcp ospf-nbr-state-change ospf-virtnbr-state-change
set security-level auth-priv
set auth-proto sha
set auth-pwd ENC MTAwNHADSsvJawmbVNxRI1SK1puj4b6sTpFrOu7G9504w2o9AKJvib4fb2CpACHjtN4seEs72WsS8xMHZ9du4/S1naACtxtyRhrdc67+brit3/NzdpHOWJS56POgh4+SJjwxTzvYHupsdTXH8UQB/gyfo2Rxp7oXxGLqUiKXM3ymMh5LPsi7yNb8IEgaKb9FF6EAJQ==
set priv-proto aes
set priv-pwd ENC MTAwNHADSsvJawmbVNxRI1SK1puj4b6sTpFrOu7G9504w2o9AKJvib4fb2CpACHjtN4seEs72WsS8xMHZ9du4/S1naACtxtyRhrdc67+brit3/NzdpHOWJS56POgh4+SJjwxTzvYHupsdTXH8UQB/gyfo2Rxp7oXxGLqUiKXM3ymMh5LPsi7yNb8IEgaKb9FF6EAJQ==
next
end
security-level
で認証/暗号化の有無を設定します。選択肢は以下の通り。
FW01 (v3user01) # set security-level
no-auth-no-priv Message with no authentication and no privacy (encryption).
auth-no-priv Message with authentication but no privacy (encryption).
auth-priv Message with authentication and privacy (encryption).
認証/暗号アルゴリズムの選択肢は以下の通り。
FW01 (v3user01) # set auth-proto
md5 HMAC-MD5-96 authentication protocol.
sha HMAC-SHA-96 authentication protocol.
sha224 HMAC-SHA224 authentication protocol.
sha256 HMAC-SHA256 authentication protocol.
sha384 HMAC-SHA384 authentication protocol.
sha512 HMAC-SHA512 authentication protocol.
FW01 (v3user01) # set priv-proto
aes CFB128-AES-128 symmetric encryption protocol.
des CBC-DES symmetric encryption protocol.
aes256 CFB128-AES-256 symmetric encryption protocol.
aes256cisco CFB128-AES-256 symmetric encryption protocol compatible with CISCO.
認証パスワード(auth-pwd
)と暗号パスワード(priv-pwd
)の設定時には「ENC」指定無しで暗号化前のパスワードで設定可能です。
HA 構成の場合は ha-direct
を enable にして管理インターフェースから機器別の監視をすることも考慮します。
インターフェースでの SNMP 許可設定を忘れずに
SNMP マネージャーからのクエリを受け付けるための設定である、インターフェース設定における SNMP 許可設定を忘れないようにしてください。
監視ソフトを使用した動作確認
監視ソフトの Whatsup Gold を使用して SNMP のテストをしてみます。
FortiGate の SNMPv3 ユーザ設定は上記の CLI コンフィグ例の通りだとします。
SNMPv3 ユーザ設定
Whatsup Gold で FortiGate の設定に合わせて SNMP v3 認証情報を追加します。

デバイスの検出
認証情報として上の SNMP v3 認証情報を指定して、FortiGate を検出しました。以下画像の通り認証に成功し、デバイス情報を取得できています。

SNMP Walk テスト
SNMP MIB Walker で SNMP Walk のテストをします。認証情報として作成した SNMP v3 認証情報を指定して実行します。
以下画像の通り SNMP Walk も成功しました。

リンクダウン/アップのトラップのテスト
Whatsup Gold にてパッシブモニタリスナーの設定で SNMP トラップをリスニングする設定にし、 FortiGate のノードに対して SNMP トラップのパッシブモニタを追加した上で、リンクダウン/アップのテストをします。
FortiGate の wan1 のケーブルを抜き差しした結果、以下画像の通り、リンクダウン/アップのトラップが送信されたことを確認できました。

CentOS での SNMP Walk テスト
SNMP Walk のテストだけなら CentOS (Stream) で簡単にできます。
準備として net-snmp-utils
をインストールしておきます。
dnf -y install net-snmp-utils
SNMP Walk は snmpwalk
コマンドで実行できます。
認証有り、かつ暗号化有りの場合の構文は以下の通りです。
snmpwalk -v3 -l authPriv -u <ユーザ名> -a <認証アルゴリズム> -A <認証パスワード> -x <暗号化アルゴリズム> -X <暗号化パスワード> <宛先IP> <OID>
各オプションの詳細は以下の通り。
-l
: 認証/暗号化の有無- noAuthNoPriv
- authNoPriv
- authPriv
-a
: 認証アルゴリズム- MD5
- SHA
- SHA-224
- SHA-256
- SHA-384
- SHA-512
-x
: 暗号化アルゴリズム- DES
- AES
- AES-192
- AES-256
実行例
[root@CentOSStream8 ~]# snmpwalk -v3 -l authPriv -u v3user01 -a SHA -A hogepiyo -x AES -X hogepiyo 10.10.10.1 .1.3.6.1.2.1.1
SNMPv2-MIB::sysDescr.0 = STRING:
SNMPv2-MIB::sysObjectID.0 = OID: SNMPv2-SMI::enterprises.12356.101.1.641
DISMAN-EVENT-MIB::sysUpTimeInstance = Timeticks: (1479514) 4:06:35.14
SNMPv2-MIB::sysContact.0 = STRING:
SNMPv2-MIB::sysName.0 = STRING: FW01
SNMPv2-MIB::sysLocation.0 = STRING:
SNMPv2-MIB::sysServices.0 = INTEGER: 78
SNMPv2-MIB::sysORLastChange.0 = Timeticks: (0) 0:00:00.00
SNMPv2-MIB::sysORIndex.1 = INTEGER: 1
SNMPv2-MIB::sysORID.1 = OID: SNMPv2-SMI::zeroDotZero.0
SNMPv2-MIB::sysORDescr.1 = STRING:
SNMPv2-MIB::sysORUpTime.1 = Timeticks: (0) 0:00:00.00
OID .1.3.6.1.6.3.10.2.1.1.0 指定で SNMP エンジン ID を取得できます。
[root@CentOSStream8 ~]# snmpwalk -v3 -l authPriv -u v3user01 -a SHA -A hogepiyo -x AES -X hogepiyo 10.10.10.1 .1.3.6.1.6.3.10.2.1.1.0
SNMP-FRAMEWORK-MIB::snmpEngineID.0 = Hex-STRING: 80 00 30 44 04 46 47 54 36 30 45 54 4B 31 39 30
34 36 36 34 30