【FortiGate】SNMPv3 の設定方法を完全に理解する

ファイアウォール(UTM)

作業環境

  • 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 アプリケーション(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

参考資料

https://docs.fortinet.com/document/fortigate/7.0.3/administration-guide/457149/snmp-v3-users
config system snmp user | CLI Reference


タイトルとURLをコピーしました