SNMP について
簡易ネットワーク管理プロトコル(SNMP)は、SNMP マネージャとエージェント間の通信用メッセージ フォーマットを提供する、アプリケーションレイヤ プロトコルです。SNMP では、ネットワーク内のデバイスのモニタリングと管理に使用する標準フレームワークと共通言語が提供されます。
SNMP 機能の概要
SNMP フレームワークは 3 つの部分で構成されます。
-
SNMP マネージャ:SNMP を使用してネットワーク デバイスのアクティビティを制御し、モニタリングするシステム
-
SNMP エージェント:デバイスのデータを維持し、必要に応じてこれらのデータを管理システムに報告する、管理対象デバイス内のソフトウェア コンポーネント。Cisco Nexus デバイスはエージェントおよび MIB をサポートします。SNMP エージェントをイネーブルにするには、マネージャとエージェントの関係を定義する必要があります。
-
MIB(Management Information Base; 管理情報ベース):SNMP エージェントの管理対象オブジェクトの集まり
SNMP は、RFC 3411 ~ 3418 で規定されています。
デバイスは、SNMPv1、SNMPv2c、および SNMPv3 をサポートします。SNMPv1 および SNMPv2c はどちらも、コミュニティベース形式のセキュリティを使用します。
Cisco NX-OS は IPv6 による SNMP をサポートしています。
SNMP 通知
SNMP の重要な機能の 1 つは、SNMP エージェントから通知を生成できることです。これらの通知では、要求を SNMP マネージャから送信する必要はありません。通知は、不正なユーザ認証、再起動、接続の切断、隣接ルータとの接続の切断、その他の重要なイベントを表示します。
Cisco NX-OS は、トラップまたはインフォームとして SNMP 通知を生成します。トラップは、エージェントからホスト レシーバ テーブルで指定された SNMP マネージャに送信される、非同期の非確認応答メッセージです。インフォームは、SNMP エージェントから SNMP マネージャに送信される非同期メッセージで、マネージャは受信したという確認応答が必要です。
トラップの信頼性はインフォームより低くなります。SNMP マネージャはトラップを受信しても確認応答(ACK)を送信しないからです。デバイスは、トラップが受信されたかどうかを判断できません。インフォーム要求を受信する SNMP マネージャは、SNMP 応答プロトコル データ ユニット(PDU)でメッセージの受信を確認応答します。デバイスが応答を受信しない場合、インフォーム要求を再び送信できます。
複数のホスト レシーバーに通知を送信するよう Cisco NX-OS を設定できます。
次の表は、デフォルトで有効になっている SNMP トラップを示します。
Trap Type | 説明 |
---|---|
全体 | : coldStart |
エンティティ | : entity_fan_status_change |
エンティティ | : entity_mib_change |
エンティティ | : entity_module_status_change |
エンティティ | : entity_module_inserted |
エンティティ | : entity_module_removed |
エンティティ | : entity_power_out_change |
エンティティ | : entity_power_status_change |
エンティティ | : entity_unrecognised_module |
リンク | : cErrDisableInterfaceEventRev1 |
リンク | : cieLinkDown |
リンク | : cieLinkUp |
リンク | : cmn-mac-move-notification |
リンク | : delayed-link-state-change |
リンク | : extended-linkDown |
リンク | : extended-linkUp |
リンク | : linkDown |
リンク | : linkUp |
rf | : redundancy_framework |
upgrade | : UpgradeOpNotifyOnCompletion |
upgrade | : UpgradeJobStatusNotify |
エンティティ | : entity_sensor |
rmon | : fallingAlarm |
rmon | : hcRisingAlarm |
rmon | : hcFallingAlarm |
rmon | : risingAlarm |
SNMPv3
SNMPv3 は、ネットワーク経由のフレームの認証と暗号化を組み合わせることによって、デバイスへのセキュア アクセスを実現します。SNMPv3 が提供するセキュリティ機能は次のとおりです。
-
メッセージの完全性:パケットが伝送中に改ざんされていないことを保証します。
-
認証:メッセージのソースが有効かどうかを判別します。
-
暗号化:許可されていないソースにより判読されないように、パケットの内容のスクランブルを行います。
SNMPv3 では、セキュリティ モデルとセキュリティ レベルの両方が提供されています。セキュリティ モデルは、ユーザおよびユーザが属するロールを設定する認証方式です。セキュリティ レベルとは、セキュリティ モデル内で許可されるセキュリティのレベルです。セキュリティ モデルとセキュリティ レベルの組み合わせにより、SNMP パケット処理中に採用されるセキュリティ メカニズムが決まります。
SNMPv1、SNMPv2、SNMPv3 のセキュリティ モデルおよびセキュリティ レベル
セキュリティ レベルは、SNMP メッセージを開示から保護する必要があるかどうか、およびメッセージを認証するかどうか判断します。セキュリティ モデル内のさまざまなセキュリティ レベルは、次のとおりです。
-
noAuthNoPriv:認証または暗号化を実行しないセキュリティ レベル。このレベルは、SNMPv3 ではサポートされていません。
-
authNoPriv:認証は実行するが、暗号化を実行しないセキュリティ レベル。
-
authPriv:認証と暗号化両方を実行するセキュリティ レベル。
SNMPv1、SNMPv2c、および SNMPv3 の 3 つのセキュリティ モデルを使用できます。セキュリティ モデルとセキュリティ レベルの組み合わせにより、SNMP メッセージの処理中に適用されるセキュリティ メカニズムが決まります。次の表に、セキュリティ モデルとレベルの組み合わせの意味を示します。
モデル |
レベル |
認証 |
暗号化 |
結果 |
---|---|---|---|---|
v1 |
noAuthNoPriv |
コミュニティ ストリング |
なし |
コミュニティ ストリングの照合を使用して認証します。 |
v2c |
noAuthNoPriv |
コミュニティ ストリング |
なし |
コミュニティ ストリングの照合を使用して認証します。 |
v3 |
authNoPriv |
HMAC-MD5、HMAC-SHA、または SHA-256 |
未対応 |
Hash-Based Message Authentication Code(HMAC)メッセージ ダイジェスト 5(MD5)アルゴリズムまたは HMAC Secure Hash Algorithm(SHA)アルゴリズムに基づいて認証します。 |
v3 |
authPriv |
HMAC-MD5、HMAC-SHA、または SHA-256 |
DES |
HMAC-MD5 アルゴリズムまたは HMAC-SHA アルゴリズムに基づいて認証します。データ暗号規格(DES)の 56 ビット暗号化、および暗号ブロック連鎖(CBC)DES(DES-56)標準に基づいた認証を提供します。 |
ユーザベースのセキュリティ モデル
SNMPv3 ユーザベース セキュリティ モデル(USM)は SNMP メッセージレベル セキュリティを参照し、次のサービスを提供します。
-
メッセージの完全性:メッセージが不正な方法で変更または破壊されず、データ シーケンスが悪意なく起こり得る範囲を超えて変更されていないことを保証します。
-
メッセージ発信元の認証:受信データを発信したユーザのアイデンティティが確認されたことを保証します。
-
メッセージの機密性:情報が使用不可であること、または不正なユーザ、エンティティ、またはプロセスに開示されないことを保証します。
SNMPv3 は、設定済みユーザによる管理動作のみを許可し、SNMP メッセージを暗号化します。
Cisco NX-OS は、SNMPv3 に 3 つの認証プロトコルを使用します。
-
HMAC-MD5-96 認証プロトコル
-
HMAC-SHA-96 認証プロトコル
-
SHA-256 認証プロトコル
Cisco NX-OS リリース 9.3(7) 以降では、SNMPv3 に HMAC-SHA-256 認証プロトコルが使用されます。
![]() Note |
SHA-256 SNMP ユーザがスイッチで設定されている場合、ISSD は install all コマンドを使用することを推奨します。そうしないと、設定が失われます。 |
Cisco NX-OS は、SNMPv3 メッセージ暗号化用プライバシー プロトコルの 1 つとして、Advanced Encryption Standard(AES)を使用し、RFC 3826 に準拠します。
priv オプションで、SNMP セキュリティ暗号化方式として、DES または 128 ビット AES 暗号化を選択できます。priv オプションおよび aes-128 トークンは、128 ビットの AES キーを生成するためのプライバシ パスワードであることを示します。AES のプライバシー パスワードは最小で 8 文字です。パスフレーズをクリア テキストで指定する場合は、大文字と小文字を区別して、最大 64 文字の英数字を指定できます。ローカライズド キーを使用する場合は、最大 130 文字を指定できます。
![]() Note |
外部の AAA サーバを使用して SNMPv3 を使う場合、外部 AAA サーバのユーザー設定でプライバシー プロトコルに AES を指定する必要があります。 |
CLI および SNMP ユーザの同期
SNMPv3 ユーザ管理は、Access Authentication and Accounting(AAA)サーバ レベルで集中化できます。この中央集中型ユーザ管理により、Cisco NX-OSの SNMP エージェントは AAA サーバのユーザ認証サービスを利用できます。ユーザ認証が検証されると、SNMP PDU の処理が進行します。AAA サーバはユーザ グループ名の格納にも使用されます。SNMP はグループ名を使用して、スイッチでローカルに使用できるアクセス ポリシーまたはロール ポリシーを適用します。
ユーザ グループ、ロール、またはパスワードの設定が変更されると、SNMP と AAA の両方のデータベースが同期化されます。
Cisco NX-OS は、次のようにユーザ設定を同期化します。
-
snmp-server user コマンドで指定された認証パスフレーズは、CLI ユーザのパスワードになります。
-
username コマンドで指定されたパスワードが SNMP ユーザの認証およびプライバシー パスフレーズになります。
-
SNMP または CLI を使用してユーザを作成または削除すると、SNMP と CLI の両方でユーザが作成または削除されます。
-
ユーザとロールの対応関係の変更は、SNMP と CLI で同期化されます。
-
CLI から行ったロール変更(削除または変更)は、SNMP と同期します。
![]() Note |
パスフレーズまたはパスワードをローカライズしたキーおよび暗号形式で設定した場合、Cisco NX-OS はユーザ情報(パスワードやロールなど)を同期させません。 Cisco NX-OS はデフォルトで、同期したユーザ設定を 60 分間維持します。 |
セキュリティおよび SNMP ユーザーの同期の無効化
Cisco NX-OS リリース 10.2(2)F 以降、SNMP とセキュリティ(AAA または CLI)コンポーネント間のユーザー同期を無効にするオプションを提供するために、次の同期解除コマンドが導入されました。
# snmp-server disable snmp-aaa sync
このコマンドは、Nexus スイッチの構成端末から実行できます。デフォルトでは、desynchronization コマンドの no 形式がスイッチで使用できます。
デバイスで同期解除コマンドの no 形式が有効になっている場合、たとえば switch (config)# no snmp-server disable snmp-aaa sync の場合には、実行構成におけるそのユーザーの username 作成で、 snmp-server user CLI の結果を利用してユーザーを作成することができます。また、逆も可能です。したがって、ユーザーは、作成/更新時に snmp-server user CLI または username CLI に記載されている認証資格情報を使用してスイッチにログインできます。スイッチのネットワーク マネージャから SNMP 操作を実行することもできます。したがって、desynchronization コマンドの no 形式を使用すると、SNMP と AAA 間のユーザー同期は、10.2(2)F より前のリリースと同じように機能します。
デバイスで同期解除コマンドが有効になっている場合、たとえば switch (config)# snmp-server disable snmp-aaa sync の場合には、snmp-server user コマンドによって作成されたユーザーに対し、ユーザー名構成は作成されません。したがって、ユーザーはスイッチにログインできず、スイッチのネットワーク マネージャを介して SNMP 操作を実行することのみが許可されます。同様に、username CLI を使用してセキュリティ ユーザーを作成しても、そのユーザーに対応する snmp-server user CLI は作成されません。このユーザーはスイッチにログインできますが、スイッチで SNMP 操作を実行することはできません。これは、desynchronization コマンドによってリリース 10.2(2)F から導入された新機能です。
非同期コマンドのステータスは、次のいずれかの方法で確認できます:
-
CLI show snmp internal globals の出力にある
SNMP-AAA sync disable
フィールドの値 -
sys/snmp/inst/globals MO のフィールド
disableSnmpAaaSync
の値 -
コマンドが有効か無効かに応じて、CLI は show-running-config 出力および show-running-config-snmp 出力または show-running-all 出力にそれぞれ出力します。
リモートユーザー
RADIUS や TACACS+ などのプロトコルを使用して外部サーバー経由でログイン認証されているリモート ユーザーに関しては、スイッチで同期解除コマンドが有効になっている場合、SNMP でリモート ユーザーを作成できません。詳細については、Cisco Nexus 9000 NX-OS Security Configuration Guide の AAA を構成するの章を参照してください。
ただし、スイッチで desynchronization コマンドの no 形式が有効になっている場合、リモート ユーザが AAA で作成されると、対応するユーザが SNMP でも作成されます。さらに、ユーザーは SNMP の running-config 出力には表示されませんが、管理対象デバイスで SNMP 操作を実行できます。これは、リリース 10.2(2)F より前からの既存の機能です。
DCNM セキュリティ ユーザー
desynchronization コマンドが有効になっている場合、DCNM(リリース 12.0.1a 以降は Nexus Dashboard Fabric Controller とも呼ばれます)を使用して作成されたセキュリティ ユーザーには、対応する SNMPv3 プロファイルがありません。同期が無効になっている場合、セキュリティ コンポーネントで作成されたユーザーはスイッチにログインできますが、コントローラはスイッチを検出しません。コントローラは、セキュリティ ユーザー用に作成された SNMP 構成を使用してスイッチを検出するためです。さらに、SNMP は、userDB の非同期状態のため、作成されたセキュリティ ユーザーを認識しないので、スイッチを検出できません。したがって、コントローラによってスイッチが検出されるようにするには、SNMP ユーザーを明示的に作成する必要があります。DCNM 機能とともに desynchronization コマンドを使用することはお勧めしません。詳細については、Cisco Nexus 9000 NX-OS Security Configuration Guide を参照してください。
ISSD と ISSU
一般に、SNMP ユーザーの同期が無効になっている場合は、非同期のユーザーをすべて削除しない限り、SNMP ユーザーの同期を有効にしないでください。このような組み合わせの実行コンフィギュレーションでは、設定の置換が失敗します。
古いリリースで、同期解除コマンドを使用せずに同期解除状態を実現する唯一の方法は、次のとおりです。
-
同期解除状態のリリースから、同期解除コマンドの存在しないリリースへ、中断を伴う/伴わない ISSD を実行します。同期解除されたデータベースは、ISSD により以前のリリースにそのまま取り込まれます。
(注)
そのような ISSD の後にユーザー データベースに加えられた変更は、SNMP とセキュリティ コンポーネントの間で同期されます。
このような ISSD の後、同期解除コマンドの存在するリリースへの ISSU を実行すると、同期解除されたユーザー データベースがそのまま取り込まれます。一方、同期解除コマンドはデフォルトの no 形式で起動します。必要に応じて、同期解除コマンドを有効にしてください。
グループベースの SNMP アクセス
![]() Note |
グループが業界全体で使用されている標準 SNMP 用語なので、この SNMP の項では、ロールのことをグループと言います。 |
SNMP アクセス権は、グループ別に編成されます。SNMP 内の各グループは、CLI を使用する場合のロールに似ています。各グループは読み取りアクセス権または読み取りと書き込みアクセス権を指定して定義します。
ユーザ名が作成され、ユーザのロールが管理者によって設定され、ユーザがそのロールに追加されていれば、そのユーザはエージェントとの通信を開始できます。
SNMP および Embedded Event Manager
Embedded Event Manager(EEM)機能は、SNMP MIB オブジェクトを含むイベントをモニタし、これらのイベントに基づいてアクションを開始します。SNMP 通知の送信もアクションの 1 つです。EEM は SNMP 通知として、CISCO-EMBEDDED-EVENT-MGR-MIB の cEventMgrPolicyEvent を送信します。
マルチ インスタンス サポート
デバイスは、プロトコル インスタンスや仮想ルーティングおよびフォワーディング(VRF)インスタンスなどの論理ネットワーク エンティティの複数のインスタンスをサポートできます。大部分の既存 MIB は、これら複数の論理ネットワーク エンティティを識別できません。たとえば、元々の OSPF-MIB ではデバイス上のプロトコル インスタンスが 1 つであることが前提になりますが、現在はデバイス上で複数の OSPF インスタンスを設定できます。
SNMPv3 ではコンテキストを使用して、複数のインスタンスを識別します。SNMP コンテキストは管理情報のコレクションであり、SNMP エージェントを通じてアクセスできます。デバイスは、さまざまな論理ネットワーク エンティティの複数のコンテキストをサポートできます。SNMP コンテキストによって、SNMP マネージャはさまざまな論理ネットワーク エンティティに対応するデバイス上でサポートされる、MIB モジュールの複数のインスタンスの 1 つにアクセスできます。
Cisco NX-OS は、SNMP コンテキストと論理ネットワーク エンティティ間のマッピングのために、CISCO-CONTEXT-MAPPING-MIB をサポートします。SNMP コンテキストは VRF、プロトコル インスタンス、またはトポロジに関連付けることができます。
SNMPv3 は、SNMPv3 PDU の contextName フィールドでコンテキストをサポートします。この contextName フィールドを特定のプロトコル インスタンスまたは VRF にマッピングできます。
SNMPv2c の場合は、SNMP-COMMUNITY-MIB の snmpCommunityContextName MIB オブジェクトを使用して、SNMP コミュニティをコンテキストにマッピングできます(RFC 3584)。さらに CISCO-CONTEXT-MAPPING-MIB または CLI を使用すると、この snmpCommunityContextName を特定のプロトコル インスタンスまたは VRF にマッピングできます。
SNMP のハイ アベイラビリティ
Cisco NX-OS は、SNMP のステートレス リスタートをサポートします。リブートまたはスーパーバイザ スイッチオーバーの後、Cisco NX-OS は実行コンフィギュレーションを適用します。
SNMP の仮想化サポート
Cisco NX-OS は、SNMP のインスタンスを 1 つサポートします。SNMP は複数の MIB モジュール インスタンスをサポートし、それらを論理ネットワーク エンティティにマッピングします。
SNMP も VRF を認識します。特定の VRF を使用して、SNMP 通知ホスト レシーバに接続するように SNMP を設定できます。通知が発生した VRF に基づいて、SNMP ホスト レシーバへの通知をフィルタリングするように SNMP を設定することもできます。