コントロールプレーンポリシング(CoPP)とは
コントロールプレーンポリシング(Control Plane Policing、CoPP)は、Ciscoルータやスイッチのコントロールプレーン(制御プレーン)への不要または悪意のあるトラフィックを制限・管理するためのセキュリティ機能です。コントロールプレーンとは、デバイスがネットワークの制御に関するタスクを実行する部分であり、ルーティングプロトコルの処理、管理トラフィックの処理、またはネットワークの制御を行うためのパケット処理が行われる領域です。
CoPPの概要
- 目的: コントロールプレーンに対する不要なトラフィックや攻撃を防ぎ、ルータやスイッチの安定性を保つため。
- 動作: CoPPはACL(アクセスコントロールリスト)やQoS(Quality of Service)と連携し、特定のトラフィックをフィルタリングまたは制限します。これにより、コントロールプレーンに過剰な負荷がかかるのを防ぎます。
- 実装方法: クラスマップとポリシーマップを使って、どのトラフィックが許可されるべきか、どのトラフィックがドロップまたはレート制限されるべきかを定義します。
CoPPの使用例
- DoS攻撃の防止: 大量のトラフィックがコントロールプレーンに送られることで、ルータやスイッチが正常に機能しなくなることを防ぎます。
- 管理トラフィックの保護: SSH、SNMP、BGP、OSPFなどの重要な管理トラフィックを保護し、ネットワークの安定性を維持します。
- パフォーマンスの向上: 不要なトラフィックを制限することで、ネットワークデバイスのパフォーマンスが向上し、重要なタスクにリソースを集中できます。
コントロールプレーンポリシングの設定
基本構文
コントロール プレーン設定モードに入り、 QoS サービス ポリシーをアタッチします。
Device(config)#control-plane
Device(config-cp)#service-policy {input | output policy-map-name}
DOS攻撃を軽減するためのコントロールプレーンポリシングの設定
1.アクセスリストの定義
フィルタリングするプロトコル番号を持つパケットを設定します。
Device(config)#access-list access-list-number permit protocol {any | host {address | name}} {any | host {address | name}}
フィルタリングするポート番号を持つパケットを設定します。
Device(config)#access-list access-list-number permit protocol {tcd | udp } {any | host {source-addr | name}} eq port number {any | host {source-addr | name}} eq port number
2.クラスマップの定義
クラス マップを作成して、適用するアクセス グループを指定します。
Device(config)#class-map class-map-name
Device(config-cmap)#match access-group access-list-index
3.ポリシーマップの定義
QoS ポリシー マップを設定します。(任意のポリシーの名前を指定します)
Device(config)#policy-map policy-map-name
QoSポリシーマップクラスを指定します。(クラスマップの定義で作成した名前を指定します)
Device(config-pmap-)#class class-map-name
指定されたレートでコントロール プレーン宛のトラフィックを制御します。
Device(config-pmap-c)#police rate units pps
ポリシング レート制限に準拠するパケットに対して実行するアクションを指定します。
Device(config-pmap-c-police)#conform-action action
| コマンド | 内容 |
|---|---|
| transmit | 許可されたトラフィックをそのまま転送します。 |
| drop | 許可されたトラフィックを破棄(ドロップ)します。 |
| set-clp-transmit | Cell Loss Priority(CLP)をセットし、転送します。 |
| set-dscp-transmit | トラフィックに対してDSCP(Differentiated Services Code Point)を設定し、転送します。 |
| set-prec-transmit | トラフィックのIPプレシデンス値を設定し、転送します。 |
4.コントロールプレーンへの適用
デバイスのコントロール プレーンに関連付けられている属性を関連付けます。
Device(config)#control plane [host | transit | cef-exception ]
コマンド 内容 host デバイス自体が処理するトラフィック(ルータのCPUに到達するトラフィック)を制御します。 transit デバイスを単に経由するトラフィック(転送されるトラフィック)を制御します。 cef-exception CEFによって高速転送できない例外トラフィックを制御します。
ポリシー マップをコントロール プレーンにアタッチします。
Device(config-cp)#service-policy {input | output } policy-map-name
設定例
以下の設定例はルータのコントロールプレーンに到達するICMPトラフィックを1秒当たり10パケットに制限する設定例です。制限を超えるトラフィックはドロップします。
R1(config)#ip access-list extended ICMP-ACL
R1(config-ext-nacl)#permit icmp any any
R1(config-ext-nacl)#class-map match-all ICMP-CLASS
R1(config-cmap)#match access-group name ICMP-ACL
R1(config-cmap)#policy-map CONTROL-PLANE-POLICY
R1(config-pmap)#class ICMP-CLASS
R1(config-pmap-c)#police rate 10 pps
R1(config-pmap-c-police)#conform-action transmit
R1(config-pmap-c-police)#exceed-action drop
R1(config-pmap-c-police)#exit
R1(config-pmap-c)#exit
R1(config-pmap)#exit
R1(config)#control-plane
R1(config-cp)#service-policy input CONTROL-PLANE-POLICY