はじめに
このドキュメントでは、Simple Network Management Protocol(SNMP)を保護する方法について説明します。
前提条件
要件
このドキュメントに関する固有の要件はありません。
使用するコンポーネント
このドキュメントの情報は、次のソフトウェアとハードウェアのバージョンに基づいています。
このドキュメントの情報は、特定のラボ環境にあるデバイスに基づいて作成されました。このドキュメントで使用するすべてのデバイスは、クリアな(デフォルト)設定で作業を開始しています。本稼働中のネットワークでは、各コマンドによって起こる可能性がある影響を十分確認してください。
表記法
表記法の詳細については、『シスコ テクニカル ティップスの表記法』を参照してください。
背景説明
SNMPの脆弱性が繰り返し悪用されてサービス拒否(DoS)が発生する可能性がある場合は特に、SNMPを保護することが重要です。
SNMPを保護するための戦略
有効な SNMP コミュニティストリングを選択する
public を読み取り専用コミュニティ ストリングとして使用し、private を読み取りと書き込みコミュニティ ストリングとして使用するのは、有効な方法ではありません。
SNMP ビューのセットアップ
「 Setup SNMP view
コマンドを使用すると、限定されたManagement Information Base(MIB;管理情報ベース)へのアクセスしか持たないユーザをブロックできます。 デフォルトでは、 SNMP view entry exists
はありません。このコマンドはグローバル コンフィギュレーション モードで設定され、Cisco IOS ソフトウェア バージョン 10.3 で初めて導入されました。特定のMIBツリーに access-list
がある場合 SNMP View
、1つおきにツリーが拒否されるという不可解な動作に似ています。しかしシーケンスは重要でなく、リスト全体が検索され一致があったところで停止します。
ビューエントリを作成または更新するには、snmp-server view global configuration
コマンドを使用します。指定されたSNMPサーバビューのエントリを削除するには、このコマンドの no
形式を使用します。
構文:
snmp-server view view-name oid-tree {included | excluded}
no snmp-server view view-name
構文の説明:
-
view-name
– 更新または作成するビューレコードのラベル。この名前は、レコードを参照するために使用します。
-
oid-tree
– ビューに含める、またはビューから除外する抽象構文記法1 (ASN.1)サブツリーのオブジェクト識別子。サブツリーを指定するには、1.3.6.2.4のような数字で構成されるテキスト文字列か、 system
.
のような単語を指定して、1つのサブ識別子をアスタリスク(*)ワイルドカードに置き換えて、サブツリーファミリ(1.3.*.4など)を指定します。
-
included | excluded
– ビューのタイプ。included または excluded のいずかを指定します。
定義済みの2つの標準ビューは、定義する必要があるビューの代わりにビューが必要な場合に使用できます。1 つは everything であり、ユーザはすべてのオブジェクトを表示できます。もう1つはrestrictedであり、ユーザは system
、 snmpStats
、 snmpParties
の3つのグループを表示できます。事前定義されたビューは、RFC 1447 で説明されています。
注:最初の snmp-server
コマンドの入力で、SNMPの両方のバージョンが有効になります。
次の例では、MIB-IIシステムグループ内の sysServices
(System 7)を除くすべてのオブジェクトと、MIB-IIインターフェイスグループ内のインターフェイス1のすべてのオブジェクトを含むビューを作成します。
snmp-server view agon system included
snmp-server view agon system.7 excluded
snmp-server view agon ifEntry.*.1 included
次に、コミュニティストリングを使用してMIBを適用する方法と、 snmpwalk
および view
コマンドの出力の完全な例を示します。次の設定では、Address Resolution Protocol(ARP;アドレス解決プロトコル)テーブル( atEntry
)のSNMPアクセスを拒否し、MIB-IIとCiscoプライベートMIBを許可するビューを定義しています。
snmp-server view myview mib-2 included
snmp-server view myview atEntry excluded
snmp-server view myview cisco included
snmp-server community public view myview RO 11
snmp-server community private view myview RW 11
snmp-server contact pvanderv@cisco.com
次に MIB-II System グループのコマンドと出力を示します。
NMSPrompt 82 % snmpwalk cough system
system.sysDescr.0 : DISPLAY STRING- (ascii):Cisco Internetwork Operating System Software
Cisco IOS (tm) 2500 Software (C2500-JS-L), Version 12.0(1)T,RELEASE SOFTWARE (fc2)
Copyright (c) 1986-1998 by cisco Systems, Inc.
Compiled Wed 04-Nov-98 20:37 by dschwart
system.sysObjectID.0 : OBJECT IDENTIFIER:
.iso.org.dod.internet.private.enterprises.cisco.ciscoProducts.cisco2520
system.sysUpTime.0 : Timeticks: (306588588) 35 days, 11:38:05.88
system.sysContact.0 : DISPLAY STRING- (ASCII):pvanderv@cisco.com
system.sysName.0 : DISPLAY STRING- (ASCII):cough
system.sysLocation.0 : DISPLAY STRING- (ASCII):
system.sysServices.0 : INTEGER: 78
system.sysORLastChange.0 : Timeticks: (0) 0:00:00.00
NMSPrompt 83 %
次にローカルの Cisco System グループのコマンドと出力を示します。
NMSPrompt 83 % snmpwalk cough lsystem
cisco.local.lsystem.romId.0 : DISPLAY STRING- (ASCII):
System Bootstrap, Version 11.0(10c), SOFTWARE
Copyright (c) 1986-1996 by cisco Systems
cisco.local.lsystem.whyReload.0 : DISPLAY STRING- (ASCII):power-on
cisco.local.lsystem.hostName.0 : DISPLAY STRING- (ASCII):cough
次に MIB-II ARP テーブルのコマンドと出力を示します。
NMSPrompt 84 % snmpwalk cough atTable
no MIB objects contained under subtree.
NMSPrompt 85 %
アクセスリストで SNMP コミュニティをセットアップする
現在のベストプラクティスでは、アクセスコントロールリスト(ACL)をコミュニティストリングに適用し、要求コミュニティストリングが通知コミュニティストリングと同一でないことを確認することを推奨しています。アクセス リストを他の保護措置と組み合わせて使用すれば、保護機能が高められます。
次に ACL をコミュニティ ストリングに設定する例を示します。
access-list 1 permit 10.1.1.1
snmp-server community string1 ro 1
要求とトラップメッセージに異なるコミュニティストリングを使用すると、攻撃者によって検出されたコミュニティストリングを使用してそれ以上の攻撃や侵害を受ける可能性が低くなります。そうしないと、攻撃者はリモートデバイスを侵害したり、許可なしにネットワークからのトラップメッセージを傍受したりする可能性があります。
コミュニティストリングでトラップを有効にすると、一部のCisco IOSソフトウェアではSNMPアクセスに対してそのストリングを有効にできます。このコミュニティは明示的にディセーブルする必要があります。 例:
access-list 10 deny any
snmp-server host 10.1.1.1 mystring1
snmp-server community mystring1 RO 10
SNMP バージョン 3 のセットアップ
SNMPバージョン3を設定するには、次の手順を実行します。
-
SNMP エンティティのエンジン ID を割り当てます(オプション)。
-
grouponeグループに属するuseroneユーザを定義し、このユーザにnoAuthentication(パスワードなし)およびnoPrivacy(暗号化なし)を適用します。
-
grouptwo グループに属するユーザusertwo を定義し、このユーザにnoAuthentication(パスワードなし)およびnoPrivacy(暗号化なし)を適用します。
-
グループgroupthree に属するユーザuserthree を定義し、このユーザにAuthentication (パスワードはuser3passwd)とnoPrivacy (暗号化なし)を適用します。
-
グループgroupfour に属するユーザuserfour を定義し、このユーザにAuthentication (パスワードはuser4passwd)およびPrivacy (des56暗号化)を適用します。
-
ユーザセキュリティモデル(USM)V3を使用してグループgroupone を定義し、v1defaultビュー(デフォルト)で読み取りアクセスを有効にします。
-
USM V3を使用してグループgrouptwoを定義し、myviewビューでの読み取りアクセスを有効にします(デフォルト設定)。
-
USM V3を使用してグループgroupthree を定義し、authentication を使用してv1default ビュー(デフォルト)での読み取りアクセスを有効にします。
-
USM V3を使用してグループgroupfour を定義し、Authentication およびPrivacy を使用してv1default ビュー(デフォルト)での読み取りアクセスを有効にします。
-
MIB-II での読み取りアクセスを提供し、プライベートな Cisco MIB での読み取りアクセスを拒否する myview ビューを定義します。
読み取り専用コミュニティストリング publicが定義されているため、 show running
の出力には publicグループの行も含まれます。
show running
の出力には、userthreeは表示されません。
例:
snmp-server engineID local 111100000000000000000000
snmp-server user userone groupone v3
snmp-server user usertwo grouptwo v3
snmp-server user userthree groupthree v3 auth md5 user3passwd
snmp-server user userfour groupfour v3 auth md5 user4passwd priv des56
user4priv
snmp-server group groupone v3 noauth
snmp-server group grouptwo v3 noauth read myview
snmp-server group groupthree v3 auth
snmp-server group groupfour v3 priv
snmp-server view myview mib-2 included
snmp-server view myview cisco excluded
snmp-server community public RO
これは、useroneユーザのMIB-II Systemグループに対するコマンドと出力です。
NMSPrompt 94 % snmpwalk -v3 -n "" -u userone -l noAuthNoPriv clumsy system
Module SNMPV2-TC not found
system.sysDescr.0 = Cisco Internetwork Operating System Software
Cisco IOS (TM) 4500 Software (C4500-IS-M), Version 12.0(3)T,RELEASE SOFTWARE (fc1)
Copyright (c) 1986-1999 by cisco Systems, Inc.
Compiled Tue 23-Feb-99 03:59 by ccai
system.sysObjectID.0 = OID: enterprises.9.1.14
system.sysUpTime.0 = Timeticks: (28208096) 3 days, 6:21:20.96
system.sysContact.0 =
system.sysName.0 = clumsy.cisco.com
system.sysLocation.0 =
system.sysServices.0 = 78
system.sysORLastChange.0 = Timeticks: (0) 0:00:00.00
NMSPrompt 95 %
これは、usertwoユーザのMIB-II Systemグループに対するコマンドと出力です。
NMSPrompt 95 % snmpwalk -v3 -n "" -u usertwo -l noAuthNoPriv clumsy system
Module SNMPV2-TC not found
system.sysDescr.0 = Cisco Internetwork Operating System Software
Cisco IOS (TM) 4500 Software (C4500-IS-M), Version 12.0(3)T,RELEASE SOFTWARE (fc1)
Copyright (c) 1986-1999 by cisco Systems, Inc.
Compiled Tue 23-Feb-99 03:59 by ccai
system.sysObjectID.0 = OID: enterprises.9.1.14
system.sysUpTime.0 = Timeticks: (28214761) 3 days, 6:22:27.61
system.sysContact.0 =
system.sysName.0 = clumsy.cisco.com
system.sysLocation.0 =
system.sysServices.0 = 78
system.sysORLastChange.0 = Timeticks: (0) 0:00:00.00
これは、useroneユーザのCisco Local Systemグループに対するコマンドと出力です。
NMSPrompt 98 % snmpwalk -v3 -n "" -u userone -l noAuthNoPriv clumsy .1.3.6.1.4.1.9.2.1
Module SNMPV2-TC not found
enterprises.9.2.1.1.0 = "..System Bootstrap, Version 5.2(7b) [mkamson 7b],
RELEASE SOFTWARE (fc1)..Copyright (c) 1995 by cisco Systems,
Inc..."
enterprises.9.2.1.2.0 = "reload"
enterprises.9.2.1.3.0 = "clumsy"
enterprises.9.2.1.4.0 = "cisco.com"
これは、ユーザusertwoでCisco Local Systemグループを取得できないことを示すコマンドと出力です。
NMSPrompt 99 % snmpwalk -v3 -n "" -u usertwo -l noAuthNoPriv clumsy .1.3.6.1.4.1.9.2.1
Module SNMPV2-TC not found
enterprises.9.2.1 = No more variables left in this MIB View
NMSPrompt 100 %
このコマンドとその出力結果は、カスタマイズされた tcpdump
(SNMPバージョン3サポート用パッチおよびprintfの補遺)用です。
NMSPrompt 102 % snmpget -v3 -n "" -u userone -l noAuthNoPriv clumsy system.sysName.0
Module SNMPV2-TC not found
system.sysName.0 = clumsy.cisco.com
インターフェイスでの ACL 設定
ACL機能は、IPスプーフィングなどの攻撃を防止するセキュリティ対策を提供します。ACL はルータの着信インターフェイスまたは発信インターフェイスに適用できます。
受信 ACL(rACL)を使用するオプションのないプラットフォームでは、インターフェイス ACL を使用して、信頼できる IP アドレスからルータへの User Datagram Protocol(UDP; ユーザ データグラム プロトコル)トラフィックを許可することができます。
次の拡張アクセスリストをネットワークに適用できます。次の例での前提事項は、ルータのインターフェイスに IP アドレス 192.168.10.1 および 172.16.1.1 が設定されていること、すべての SNMP アクセスが IP アドレス 10.1.1.1 の管理ステーションに限定されていること、およびその管理ステーションが IP アドレス192.168.10.1とだけ通信する必要があることです。
access-list 101 permit udp host 10.1.1.1 host 192.168.10.1
access-list
は、次の設定コマンドを使用して、すべてのインターフェイスに適用する必要があります。
interface ethernet 0/0
ip access-group 101 in
UDPポートでルータと直接通信するすべてのデバイスは、前のアクセスリストに明示的にリストされている必要があります。Cisco IOS ソフトウェアは、49152 から 65535 までの範囲のポートを Domain Name System(DNS; ドメイン ネーム システム)クエリーなどのアウトバウンド セッションのソース ポートに使用します。
多数のIPアドレスが設定されているデバイスや、ルータと通信する必要のある多数のホストの場合、これは常にスケーラブルなソリューションとは限りません。
受信 ACL(rACL)
分散プラットフォームでは、rACLをCisco 12000シリーズギガビットスイッチルータ(GSR)のCisco IOSソフトウェアリリース12.0(21)S2およびCisco 7500シリーズのリリース12.0(24)S以降のオプションにすることができます。受信アクセス リストは、ルート プロセッサが有害なトラフィックの影響を受ける前に、そのトラフィックからデバイスを保護します。受信パスACLもネットワークセキュリティのベストプラクティスと考えられており、この特定の脆弱性の回避策としてだけでなく、優れたネットワークセキュリティへの長期的な付加機能として考慮する必要があります。CPU 負荷がライン カード プロセッサに分散されるため、メイン ルート プロセッサの負荷を軽減させるのに役立ちます。ホワイトペーパーの『GSR: Receive Access Control Lists』は、正規のトラフィックを識別するのに役立ちます。このホワイトペーパーを使用して、正当なトラフィックをデバイスに送信し、望ましくないパケットをすべて拒否する方法を理解してください。
インフラストラクチャ ACL
ネットワークを通過するトラフィックをブロックするのは往々にして困難ですが、インフラストラクチャデバイスを宛先として決して許可してはならないトラフィックを識別し、ネットワークの境界でそのトラフィックをブロックすることは可能です。インフラストラクチャACL(iACL)は、ネットワークセキュリティのベストプラクティスと考えられており、この特定の脆弱性の回避策としてだけでなく、優れたネットワークセキュリティへの長期的な付加機能として考慮する必要があります。ホワイトペーパー『Protecting Your Core: Infrastructure Protection Access Control Lists』には、iACLのガイドラインと推奨される導入方法が記載されています。
Cisco Catalyst LAN スイッチのセキュリティ機能
IP 許可リスト機能は、権限のない送信元 IP アドレスからスイッチへの着信 Telnet アクセスおよび SNMP アクセスを制限します。違反または不正アクセスが発生したときに管理システムに通知するため、syslog メッセージと SNMP トラップがサポートされています。
ルータと Cisco Catalyst スイッチの管理には、Cisco IOS ソフトウェアのセキュリティ機能を組み合わせて使用できます。スイッチとルータにアクセスできる管理ステーションの数を制限するセキュリティポリシーを確立する必要があります。
IP ネットワークのセキュリティを強化する方法の詳細については、『IP ネットワークでのセキュリティ強化』を参照してください。
SNMP エラーをチェックする方法
log
キーワードを使用して、SNMPコミュニティACLを設定します。次に示すように、失敗した試行に対する syslog
を監視します。
access-list 10 deny any log
snmp-server community public RO 10
誰かがコミュニティpublicでルータにアクセスしようとすると、次のようなsyslog
メッセージが表示されます。
%SEC-6-IPACCESSLOGS: list 10 denied 172.16.1.15packet
この出力は、アクセス リスト 10 がホスト 172.16.1.1 からの SNMP パケットを 5 つ拒否したことを意味します。
次に示すように、 show snmp
コマンドでSNMPにエラーがないかどうかを定期的に確認します。
router#show snmp Chassis: 21350479 17005 SNMP packets input
37 Bad SNMP version errors**
15420 Unknown community name**
0 Illegal operation for community name supplied
1548 Encoding errors**
0 Number of requested variables
0 Number of altered variables
0 Get-request PDUs
0 Get-next PDUs
0 Set-request PDUs 0 SNMP packets output
0 Too big errors (Maximum packet size 1500)
0 No such name errors
0 Bad values errors
0 General errors
0 Response PDUs
0 Trap PDUs
**とマークされたカウンタを監視し、これらの脆弱性の不正利用が試みられたことを示す可能性がある、エラー率の予想外の増加を確認します。セキュリティ問題を報告するには、『シスコのセキュリティ問題対応製品』を参照してください。
関連情報