ネットワーク管理システム、管理装置、管理対象装置、ネットワーク管理方法及びコンピュータプログラム
【課題】盗聴によって認証用識別情報が第三者に知られた場合でも、管理対象装置への不正な設定を防ぐこと。
【解決手段】ネットワーク管理プロトコルとしてSNMPv1、SNMPv2cを用いる。管理装置は、共通鍵を用いてSETリクエストのメッセージ認証情報を算出し、メッセージ認証情報を含む認証用VarBindを作成し、認証用VarBindを含むSNMPメッセージを送信する。管理対象装置は、SETリクエストを受信すると認証用VarBindの有無を調べ、認証用VarBindが無い場合にはパケットを廃棄し、認証用VarBindがある場合には、認証用VarBind内のメッセージ認証情報がメッセージ認証情報キャッシュ内に存在するか調べ、存在する場合には、リプレイ攻撃と判定し異常終了を返す。
【解決手段】ネットワーク管理プロトコルとしてSNMPv1、SNMPv2cを用いる。管理装置は、共通鍵を用いてSETリクエストのメッセージ認証情報を算出し、メッセージ認証情報を含む認証用VarBindを作成し、認証用VarBindを含むSNMPメッセージを送信する。管理対象装置は、SETリクエストを受信すると認証用VarBindの有無を調べ、認証用VarBindが無い場合にはパケットを廃棄し、認証用VarBindがある場合には、認証用VarBind内のメッセージ認証情報がメッセージ認証情報キャッシュ内に存在するか調べ、存在する場合には、リプレイ攻撃と判定し異常終了を返す。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、ネットワーク管理プロトコルの技術に関する。
【背景技術】
【0002】
ネットワーク管理プロトコルとして、広く使用されているSNMP(Simple Network Management Protocol)v1、SNMPv2cでは、認証用の識別情報(コミュニティ名)が、暗号化されていない原文のままネットワーク上を流れる。このため、第三者によってSNMPメッセージを盗聴されると、不正に取得されたコミュニティ名によって管理対象装置の情報を不正に取得、または設定されてしまう問題があった。特に、装置に対する不正な設定は、サービスをダウンさせてしまうなど深刻な問題を引き起こす可能性があり、重要な問題である。
【0003】
SNMPv1、v2cに対して、セキュリティを向上させる方法がいくつか考えられている。例えば、特許文献1に開示された技術では、コミュニティ名、もしくは、SNMPメッセージ全体を暗号化している。また、特許文献2に開示された技術では、コミュニティ名を動的に生成することで、一度使用したコミュニティ名を何度も使用できないようにしている。また、SNMPv3では、プロトコルとして認証機能を強化し、かつSNMPメッセージの暗号化を具備するようになった。
【0004】
なお、SNMPv1は、RFC1155〜1157、SNMPv2cは、RFC1901、3416、SNMPv3は、RFC3411〜3418で標準化されている。
【先行技術文献】
【特許文献】
【0005】
【特許文献1】特開2003−122650号公報
【特許文献2】特開2003−316672号公報
【発明の概要】
【発明が解決しようとする課題】
【0006】
しかしながら、上述した特許文献1に開示された技術では、コミュニティ名、もしくは、SNMPメッセージ全体を暗号化しているため、運用時に発生した問題を解決する場合、可読性が悪化するという問題がある。
また、特許文献2に開示された技術では、動的に生成されたコミュニティ名が原文のままネットワーク上を流れるため、コミュニティ名が盗聴されると、不正な操作が可能となってしまうという問題がある。また、管理装置は、管理対象装置が動的に生成したコミュニティ名を要求・取得する必要があり、そのためのネットワークトラヒックが増加してしまうという問題がある。
【0007】
また、SNMPv3では、従来のSNMPv1、v2cと比較して、仕様が複雑になっており、プロトコル処理に時間がかかるという問題がある。また、SNMPv3とSNMPv1、v2cとでは、全体のフレームワークや、パケットフォーマットも異なり、互換性がない。ゆえに、既存のSNMPv1、v2c処理機能を活用できないため、SNMPv3の導入にはコストがかかるという問題がある。
【0008】
上記事情に鑑み、本発明は、盗聴によって認証用識別情報が第三者に知られた場合でも、管理対象装置への不正な設定を防ぐことを可能とする技術を提供することを目的としている。
【課題を解決するための手段】
【0009】
本発明の一態様は、ネットワーク管理プロトコルとしてSNMPを用いて、管理装置と管理対象装置とがネットワークを介して、SNMPメッセージを送受信するネットワーク管理システムであって、前記管理装置は、共通鍵を用いて、SETリクエストのメッセージ認証情報を算出し、該メッセージ認証情報を含む認証用VarBindを作成し、該認証用VarBindを含むSNMPメッセージを作成するSNMPメッセージ生成処理部と、前記SNMPメッセージ生成処理部で作成したSNMPメッセージとあて先アドレスとからパケットを作成して送信するパケット送信部とを備え、前記管理対象装置は、前記管理装置からのパケットを受信するパケット受信部と、前記パケットがSETリクエストであれば、認証用VarBindの有無を調べ、無ければ前記パケットを廃棄するSNMPメッセージ解析処理部と、既に認証で使用したメッセージ認証情報が記憶されているメッセージ認証情報キャッシュと、前記認証用VarBindがある場合には、前記認証用VarBind内の前記メッセージ認証情報が前記メッセージ認証情報キャッシュ内に存在するか調べ、前記メッセージ認証情報がメッセージ認証情報キャッシュ内に存在する場合には、リプレイ攻撃と判定し、前記SNMPメッセージ解析処理部に異常終了を返す認証MIBモジュールと、を備える。
【0010】
本発明の一態様は、ネットワーク管理プロトコルとしてSNMPを用いて、ネットワークを介して、管理対象装置とSNMPメッセージを送受信する管理装置であって、共通鍵を用いて、SETリクエストのメッセージ認証情報を算出し、該メッセージ認証情報を含む認証用VarBindを作成し、該認証用VarBindを含むSNMPメッセージを作成するSNMPメッセージ生成処理部と、前記SNMPメッセージ生成処理部で作成したSNMPメッセージとあて先アドレスとからパケットを作成して送信するパケット送信部と、を備える。
【0011】
本発明の一態様は、ネットワーク管理プロトコルとしてSNMPを用いて、ネットワークを介して、管理装置とSNMPメッセージを送受信する管理対象装置であって、前記管理装置からのパケットを受信するパケット受信部と、前記パケットがSETリクエストであれば、認証用VarBindの有無を調べ、無ければ前記パケットを廃棄するSNMPメッセージ解析処理部と、既に認証で使用したメッセージ認証情報が記憶されているメッセージ認証情報キャッシュと、前記認証用VarBindがある場合には、前記認証用VarBind内の前記メッセージ認証情報が前記メッセージ認証情報キャッシュ内に存在するか調べ、前記メッセージ認証情報がメッセージ認証情報キャッシュ内に存在する場合には、リプレイ攻撃と判定し、前記SNMPメッセージ解析処理部に異常終了を返す認証MIBモジュールと、を備える。
【0012】
本発明の一態様は、ネットワーク管理プロトコルとしてSNMPv1、SNMPv2cを用いて、管理装置と管理対象装置とがネットワークを介して、SNMPメッセージを送受信するネットワーク管理方法であって、前記管理装置が、共通鍵を用いて、SETリクエストのメッセージ認証情報を算出する第1の算出ステップと、前記管理装置が、前記メッセージ認証情報を含む認証用VarBindを作成する作成ステップと、前記管理装置が、前記認証用VarBindを含むSNMPメッセージを作成するSNMPメッセージ生成ステップと、前記管理装置が、前記SNMPメッセージ生成ステップで作成したSNMPメッセージとあて先アドレスとからパケットを作成して送信するパケット送信ステップと、前記管理対象装置が、前記管理装置からのパケットを受信するパケット受信ステップと、前記管理対象装置が、前記パケットがSETリクエストであれば、認証用VarBindの有無を調べる有無調査ステップと、前記管理対象装置が、前記認証用VarBindが無い場合には、前記パケットを廃棄する廃棄ステップと、前記管理対象装置が、前記認証用VarBindがある場合には、前記認証用VarBind内の前記メッセージ認証情報が、既に認証で使用したメッセージ認証情報が記憶されているメッセージ認証情報キャッシュ内に存在するか調べる第1のメッセージ認証情報調査ステップと、前記管理対象装置が、前記メッセージ認証情報がメッセージ認証情報キャッシュ内に存在する場合には、リプレイ攻撃と判定し、異常終了を返す第1の異常終了ステップと、を有する。
【0013】
本発明の一態様は、ネットワーク管理プロトコルとしてSNMPを用いて、ネットワークを介して、管理対象装置とSNMPメッセージを送受信する管理装置のコンピュータに対し、共通鍵を用いて、SETリクエストのメッセージ認証情報を算出する算出ステップと、前記メッセージ認証情報を含む認証用VarBindを作成する作成ステップと、前記認証用VarBindを含むSNMPメッセージを作成するSNMPメッセージ生成ステップと、前記SNMPメッセージとあて先アドレスとからパケットを作成して送信するパケット送信ステップと、を実行させるためのコンピュータプログラムである。
【0014】
本発明の一態様は、ネットワーク管理プロトコルとしてSNMPを用いて、ネットワークを介して、管理装置とSNMPメッセージを送受信する管理対象装置のコンピュータに対し、前記管理装置からのパケットを受信するパケット受信ステップと、前記パケットがSETリクエストであれば、認証用VarBindの有無を調べる有無調査ステップと、前記認証用VarBindが無い場合には、前記パケットを廃棄する廃棄ステップと、前記認証用VarBindがある場合には、前記認証用VarBind内の前記メッセージ認証情報が、既に認証で使用したメッセージ認証情報が記憶されているメッセージ認証情報キャッシュ内に存在するか調べる第1のメッセージ認証情報調査ステップと、前記メッセージ認証情報がメッセージ認証情報キャッシュ内に存在する場合には、リプレイ攻撃と判定し、異常終了を返す第1の異常終了ステップと、を実行させるためのコンピュータプログラムである。
【発明の効果】
【0015】
本発明により、盗聴によって認証用識別情報が第三者に知られた場合でも、管理対象装置への不正な設定を防ぐことが可能となる。
【図面の簡単な説明】
【0016】
【図1】本発明の第一実施形態によるネットワーク管理システムの構成を示すブロック図である。
【図2】本発明の第二実施形態によるネットワーク管理システムの全体構成を示したブロック図である。
【図3】パケットの構成を示す概念図である。
【図4】SNMPメッセージの構成を示す概念図である。
【図5】PDUの構成を示す概念図である。
【図6】VarBindの構成を示す概念図である。
【図7】第二実施形態による管理装置100の機能的構成を示すブロック図である。
【図8】第二実施形態による、管理装置100内に具備する共通鍵テーブル141の一例を示す概念図である。
【図9】第二実施形態による管理対象装置200の機能的構成を示すブロック図である。
【図10】第二実施形態による、管理対象装置200が備える共通鍵テーブル242の一例を示す概念図である。
【図11】第二実施形態による管理装置100がSNMPメッセージを送信するまでの動作を説明するためのフローチャートである。
【図12】第二実施形態による管理対象装置200が管理装置100から受信したSNMPメッセージを処理する動作を説明するためのフローチャートである。
【図13】第二実施形態による、認証MIBモジュール241の動作を説明するためのフローチャートである。
【発明を実施するための形態】
【0017】
まず、ネットワーク管理システムの概略について説明する。ネットワーク管理システムは、SNMPv1やSNMPv2cのエージェント機能を具備する装置に対する設定用SNMPメッセージ(SETリクエスト)に関して、SNMPのプロトコル処理部分の改変を小さく留めた上で、セキュリティを向上させる。具体的には、ネットワーク管理システムでは、セキュリティ向上のために以下の事項が実現される。
【0018】
(a)従来のコミュニティ名による認証方法に加え、SNMPメッセージのMAC(Message Authentication Code)による認証を使用する。なお、コミュニティ名とは、SNMPが管理するネットワークシステムの範囲を表す識別情報であり、認証に用いられる識別情報(認証用識別情報)でもある。
(b)上記(a)における認証において、MACの性質上、SNMPメッセージの改ざんを検知できる。
(c)リプレイ攻撃に備え、認証済みMACのキャッシュを用意することで、同一MACのSNMPメッセージは受け付けないようにする。
【0019】
[第一実施形態]
図1は、第一実施形態によるネットワーク管理システムの構成を示すブロック図である。図1において、管理装置100と管理対象装置200は、互いに共通する秘密鍵(共通鍵)101を保持する。管理対象装置200は、認証MIB(Management Information Base)モジュール241を持ち、認証用OID(Object IDentifer)を持ったインタフェースを具備する。通常、認証MIBモジュール241は、SNMPのプロトコル処理部(図示略)とは独立している。また、第一実施形態では、認証はSNMPv1/SNMPv2cの機能のみで実現している。また、対向装置に設定したい内容を含むSETリクエストのパケットに認証情報を含んでいる。
【0020】
管理装置100は、バスで接続されたCPU(Central Processing Unit)やメモリや補助記憶装置などを備え、管理プログラムを実行する。管理装置100の機能の全て又は一部は、ASIC(Application Specific Integrated Circuit)やPLD(Programmable Logic Device)やFPGA(Field Programmable Gate Array)等のハードウェアを用いて実現されても良い。管理プログラムは、コンピュータ読み取り可能な記録媒体に記録されても良い。コンピュータ読み取り可能な記録媒体とは、例えばフレキシブルディスク、光磁気ディスク、ROM、CD−ROM等の可搬媒体、コンピュータシステムに内蔵されるハードディスク等の記憶装置である。
管理対象装置200は、バスで接続されたCPUやメモリや補助記憶装置などを備え、管理対象プログラムを実行する。管理対象装置200の機能の全て又は一部は、ASICやPLDやFPGA等のハードウェアを用いて実現されても良い。管理対象プログラムは、コンピュータ読み取り可能な記録媒体に記録されても良い。
【0021】
管理装置100は、共通鍵101を使用して、コミュニティ名11及びその他VarBind(Variable-Bindings)13の組み合わせを含むSETリクエストから、SETリクエストのMAC(Message Authentication Code:メッセージ認証符号)を計算する。MACは、メッセージ認証情報の一例である。また、管理装置100は、コミュニティ名11と、VarBind(Variable-Bindings、OIDとそのOIDのオブジェクトに設定したい値のペア)として、認証用VarBind(認証用OIDと算出したMACのペア)12と、その他VarBind13とを含めた認証付SETリクエスト10を作成して、管理対象装置200に送信する。
【0022】
上記により、SETリクエスト10が第三者に盗聴され、コミュニティ名11が知られても、第三者は共通鍵101を知らないため、正しいMACを計算することができず、認証可能な認証付SETリクエストを作成できない。
続いて、以下の処理により、リプレイ攻撃を防ぐことが可能となっている。
管理対象装置200内のSNMPメッセージ解析処理部230は、受信した認証付SETリクエスト10内のVarBindに、認証用VarBind12が含まれているかを調べ、含まれていない場合には、SETリクエストである判別して廃棄し、含まれている場合には、認証用VarBind12を認証MIBモジュール241で処理する。
【0023】
認証MIBモジュール241は、認証用VarBind12内のMACがMACキャッシュ243に含まれているかを調べる。MACキャッシュ243は、既に認証で使用したMACが記憶されている。SNMPの仕様上、SNMPメッセージ内のリクエストIDは、メッセージ毎に異なるため、MACは常に異なる。
【0024】
したがって、認証用VarBind12内のMACがMACキャッシュ243に含まれていた場合には、SNMPメッセージ解析処理部230に異常終了を返す。このように、第三者が認証付SETリクエスト10を盗聴し、変更無しで再送しても、MACキャッシュ243による検査でSETリクエストは失敗する。
【0025】
続いて、以下の処理により、認証付SETリクエスト10の認証を行う。
受信した認証付SETリクエスト10のMACを共通鍵101で算出して、認証用VarBind12内のMACと比較する。双方のMACが一致した場合には、SNMPメッセージ解析処理部230に正常終了を返す(認証完了)。これに対して、双方のMACが一致しなかった場合には、SNMP解析処理部230に異常終了を返す(認証失敗)。
【0026】
SNMPの仕様上、SNMPメッセージ解析処理部230は、MIBモジュールのうち、どれか一つでも異常終了を返せば、SETリクエスト全体をエラーとしてSET処理を無効にする。そのため、上述したように、認証MIBモジュール241が異常終了を返すことで、装置への設定を失敗させることができる。
上述した第一実施形態によれば、盗聴によってコミュニティ名が第三者に知られた場合でも、管理対象装置への不正な設定を防ぐことができる。
【0027】
[第二実施形態]
図2は、本発明の第二実施形態によるネットワーク管理システムの全体構成を示したブロック図である。図2において、ネットワーク管理システムは、1つの管理装置100と3つの管理対象装置200−1〜200−3(以下、総称して管理対象装置200ともいう)と、ネットワーク300とを備える。図2では、管理装置100を1つとしているが複数あってもよい。また、管理対象装置200−1〜200−3も3つとしているが4つ以上であってもよい。
【0028】
管理装置100は、ネットワーク300を介して、管理対象装置200−1〜200−3の監視、及び設定を行う。管理対象装置200−1〜200−3は、管理装置100からの指示に基づき、自身が保有する情報をネットワーク300を介して、管理装置100に通知する。また、管理対象装置200−1〜200−3は、管理装置100からの指示に基づき、自身が保有する情報を更新して自身の動作を変更する。
【0029】
ここで、管理対象装置200−1〜200−3として、例えば、ルータ、スイッチングハブ、パーソナルコンピュータ、プリンタ、テレビなどがある。ネットワーク300は、例えば、LAN(Local Area Network)などである。
【0030】
管理装置100と管理対象装置200−1〜200−3との間の管理情報(例えば、MIB)のやりとりには、ネットワーク管理プロトコルとして標準化されたSNMPが用いられる。SNMPは、ネットワークに接続された装置をネットワーク経由で監視したり、設定したりするためのプロトコルである。管理装置100と管理対象装置200−1〜200−3との間は、パケットの送受信によって管理情報のやり取りが行われる。
【0031】
図3は、パケットの構成を示す概念図である。図3において、パケット240には、送信元アドレス251と、あて先アドレス252と、SNMPメッセージ253が含まれている。送信元アドレス251は、パケット240を送信した装置のアドレスである。あて先アドレス252は、パケット240の送信先のアドレスである。例えば、IPネットワークでは、パケット240は、IPパケット、送信元アドレス251は、送信元IPアドレス、あて先アドレス252は、あて先IPアドレスである。
SNMPメッセージ253の詳細は、RFC1157、1901、3417で規定されている。以下、本発明で必要な部分のみを説明する。
【0032】
図4は、SNMPメッセージの構成を示す概念図である。図4において、SNMPメッセージ253は、バージョンヘッダ261、コミュニティ名262、PDU(Protocol Data Unit)263で構成される。バージョンヘッダ261は、SNMPのバージョンを表し、SNMPv1であれば数値“0”、SNMPv2cであれば数値“1”である。
【0033】
コミュニティ名262は、ネットワーク管理者のみが知る識別情報で、管理装置100、及び管理対象装置200にそれぞれ設定されている。管理対象装置200は、コミュニティ名262を照合して、SNMPメッセージが正当なネットワーク管理者からであるか否かを判断する。コミュニティ名262は、例えば、文字列で“public”や、“private”などである。
なお、本実施形態は、SNMPv1、v2cのセキュリティを向上するためのものだが、SNMPのバージョンは、“0”、“1”以外でもよい。
【0034】
図5は、PDUの構成を示す概念図である。PDU263は、PDU種別271、リクエストID272、エラーステータス、エラーインデクス、複数個のVarBind273、…で構成される。PDU種別271は、管理装置100が管理対象装置200に対する制御の種類を指定するために使われるフィールドである。PDU種別271は、管理対象装置200が管理装置100から受け取った制御に対する応答であることを伝えるためにも用いられる。設定の場合には、SETを指定し、応答の場合には、RESPONSEを指定する。SETのSNMPメッセージをSETリクエストという。RESPONSEのSNMPメッセージをレスポンスという。
【0035】
リクエストID272は、管理装置100が管理対象装置200に送信したSNMPメッセージ253に対する、管理対象装置200から管理装置100へのレスポンスを区別するための識別子で整数値である。例えば、SNMPメッセージ作成のたびに基準値からインクリメントしても良いし、毎回乱数でも良い。
VarBind273は、操作したいOIDとそのOIDのオブジェクトに設定したい値のペアにしたものである。VarBind273は、PDU263内に複数あってもよい。
【0036】
図6は、VarBindの構成を示す概念図である。VarBind273は、OID281と、設定値282で構成される。OID281は、管理対象装置200が持つ管理情報毎の識別IDである。設定値282は、SETリクエストのとき、OID281に設定したい値を指定するために用いる。
【0037】
OID281とその設定値282の仕様は、RFCなどで定義された標準MIBや、ベンダー独自のMIBがある。例えば、RFC3418で定義されているSNMPv2−MIBでは、OID“.1.3.6.1.2.1.1.6(sysLocation)”は、管理対象装置200の物理的な設置場所情報のOIDであり、設定値には256文字未満の文字列(例えば、“Chiba”など)を使用するように定義されている。
【0038】
図7は、第二実施形態による管理装置100の機能的構成を示すブロック図である。なお、図1に対応する部分には同一の符号を付けて説明を省略する。図7において、管理装置100は、パケット送受信部110と、SNMPメッセージ生成処理部120と、SNMPメッセージ解析処理部130と、不揮発性装置140と、不揮発性装置140内に記憶している共通鍵テーブル141とを備える。
【0039】
共通鍵テーブル141は、ネットワーク300上の管理対象装置200のアドレスと対応させた共通鍵101を記憶する。パケット送受信部110は、SNMPメッセージ生成処理部120から受け取ったSNMPメッセージ253とあて先アドレスとからパケット240を作成して送信する。また、パケット送受信部110は、管理対象装置200から受信したパケット240をSNMPメッセージ解析処理部130に処理させる。
【0040】
SNMPメッセージ生成処理部120は、SNMPメッセージ253を作成してパケット送受信部6110に処理させる機能を持つ。但し、認証付SETリクエスト作成時は、共通鍵テーブル141から取得した共通鍵101でSETリクエストのMACを求め、認証用VarBindを作成して、SNMPメッセージ253に付与する機能を持つ。
【0041】
MACは、例えば、HMAC(Keyed-Hashing for MAC)を使用する。ハッシュ関数は、SHA1(Secure Hash Algorithm1)や、MD5(Message Digest algorithm 5)などを使用する。HMACは、RFC2104、SHA1は、FIPS180−1、MD5は、RFC1321で標準化されている。
SNMPメッセージ解析処理部130は、パケット送受信部110から受け取った内容を管理者に通知する。
【0042】
図8は、第二実施形態による、管理装置100内に具備する共通鍵テーブル141の一例を示す概念図である。共通鍵テーブル141内の共通鍵101は、各アドレスに対する認証付SETリクエストを作成する場合に求めるMACに使用する鍵である。例えば、アドレスが“ADDR1”である装置(ここでは、管理対象装置200のこと)に対するSETリクエストのMAC算出に使用する共通鍵101は、“CK(1)”である。共通鍵CK(1)、CK(2)、・・・、CK(n)は、すべて同じでも良い。なお、共通鍵テーブル141では、管理装置100自身のアドレスに対する共通鍵も管理できる。共通鍵テーブル141では、アドレスを“ADDRM”、共通鍵を“CK(M)”で表している。
【0043】
図9は、第二実施形態による管理対象装置200の機能的構成を示すブロック図である。図9において、管理対象装置200は、パケット送受信部210と、SNMPメッセージ生成処理部220と、SNMPメッセージ解析処理部230と、不揮発性装置250と、不揮発性装置250内に記憶している共通鍵テーブル242と、記憶装置260と、記憶装置260内に記憶しているMACキャッシュ243と、MIBモジュール231とを備える。MIBモジュール231は、通常、複数存在し、その中の1つとして認証MIBモジュール241を備える。
【0044】
共通鍵テーブル242は、ネットワーク300上の管理装置100のアドレスと対応させた共通鍵を記憶する。パケット送受信部210は、SNMPメッセージ生成処理部220から受け取ったSNMPメッセージとあて先アドレスとからパケットを作成して送信する。また、パケット送受信部210は、受信したパケットをSNMPメッセージ解析処理部230に処理させる。
【0045】
SNMPメッセージ解析処理部230は、パケットがSETリクエスト(SETリクエストまたは認証付SETリクエスト)であれば、認証用VarBindの有無を調べ、無ければパケットを廃棄する。一方、認証用VarBindがある場合には、SNMPメッセージ内の各VarBindに対応しているMIBモジュール231にパケットを処理させ、その応答を待つ。特に、認証用VarBindの場合には、認証MIBモジュール241にパケットを処理させる。
【0046】
例えば、VarBindのOIDが“.1.3.6.1.2.1.1.6”の場合には、SNMPv2−MIBモジュールに処理させ、VarBindのOIDが認証用OIDの場合(VarBindが認証用VarBindの場合)には、認証MIBモジュール241に処理させる。
【0047】
SNMPメッセージ解析処理部230は、各MIBモジュール231からの応答を受け取り、全て正常終了であれば解析結果を正常とする。各MIBモジュール231のうち、一つ以上のMIBモジュールから異常終了を受け取ると、解析結果を異常とする。
【0048】
SNMPの仕様上(RFC1157,3416)、解析結果が異常の場合、SNMPメッセージ解析処理部230は、SNMPメッセージによる処理を無効にしなければならない。例えば、OID“.1.3.6.1.2.1.1.6”は、256文字未満の文字列を指定する必要がある。このため、SETリクエストの中が、このOIDに対して256文字以上の文字列の設定を要求するVarBindを持つと、SNMPv2−MIBモジュールは、異常終了をSNMPメッセージ解析処理部230に返す。異常終了を受け取ったSNMPメッセージ解析処理部230は、他のVarBindの設定内容を無効にする。
【0049】
SNMPメッセージ解析処理部230は、解析結果と、レスポンス生成に必要な情報(例えば、各VarBindや、異常終了したVarBindの位置など)と、パケット内の送信元アドレス(管理装置100のアドレス)をあて先アドレスとして、SNMPメッセージ生成処理部220に処理させる。
【0050】
MIBモジュール231は、SNMPメッセージ解析処理部230から受け取ったVarBindを定義に従って処理し、その結果をSNMPメッセージ解析処理部230に返す。MIBモジュール231の動作仕様は、RFCなどで定義された個々のMIB定義に従う。例えば、OID“.1.3.6.1.2.1.1.6”の動作は、RFC3418に、IPの情報を管理するIP−MIBは、RFC4293、LLDPの管理情報LLDP−MIBは、IEEE802.1AB−2005等に定義されている。
【0051】
認証MIBモジュール241は、SNMPメッセージ解析処理部230から受け取ったパケットがSETリクエスト(SETリクエストまたは認証付SETリクエスト)以外の場合には何もしないで、SNMPメッセージ解析処理部230に正常終了を返す。一方、認証MIBモジュール241は、SNMPメッセージ解析処理部230から受け取ったパケットが認証付SETリクエストの場合には、認証用VarBind内の設定値(MAC−Mとする)がMACキャッシュ243内に含まれているか検査する。
【0052】
認証MIBモジュール241は、MAC−MがMACキャッシュ243内に含まれていた場合には、リプレイ攻撃と考え、SNMPメッセージ解析処理230に異常終了を返す。一方、認証MIBモジュール241は、MAC−MがMACキャッシュ243内に含まれていなかった場合には、共通鍵テーブル242を参照して、受信したパケットの送信元アドレスに対応する共通鍵101を用いて、認証用VarBindを除いたSNMPメッセージのMACを、管理装置100と同じ方法で算出する(このMACをMAC−1とする)。
【0053】
認証MIBモジュール241は、MAC−MとMAC−1とが一致するか調べ、MAC−1とMAC−Mとが不一致の場合には、SNMPメッセージが改ざんされたと判断して、SNMPメッセージ解析処理部230に異常終了を返す。一方、認証MIBモジュール241は、MAC−1とMAC−Mとが一致すれば、SNMPメッセージが改ざんされておらず、管理装置100からの正当なSNMPメッセージであると判断し、MACキャッシュ243にMAC−1を追加して、SNMPメッセージ解析処理部230に正常終了を返す。
【0054】
図10は、第二実施形態による、管理対象装置200が備える共通鍵テーブル242の一例を示す概念図である。共通鍵テーブル242における、共通鍵101は、各アドレスに対するMACを算出するために使用する鍵である。例えば、図10では、アドレスが“ADDRM”である装置(ここでは管理装置100のこと)に対して、MACの算出に使用する共通鍵は、“CK(M)”である。共通鍵CK(1)、CK(2)、…、CK(n)は、すべて同じでも良い。なお、共通鍵テーブル242では、管理対象装置200自身のアドレスに対する共通鍵も管理できる。図10では、アドレスを“ADDR1”、共通鍵を“CK(1)”で表している。
管理装置100のアドレスが“ADDRM”、管理対象装置200のアドレスが“ADDR1”であれば、管理装置100内の共通鍵テーブル141の“CK(1)”と管理対象装置200内の共通鍵テーブル242の“CK(M)”は同じものである。
【0055】
MACキャッシュ243は、認証MIBモジュール241が認証に成功したMACの履歴を記憶している。該MACの履歴は、認証MIBモジュール241が新たに認証するとき、認証用VarBind内のMACが過去に認証で使用したMACと一致するかを検索するために用いられる。MACキャッシュ243は、どのような実装でも良い。例えば、管理対象装置200が再開するまで記憶してもよいし、保存後一定時間が経ったMACは削除するようにしてもよいし、あらかじめMACキャッシュ243のサイズを決めて、空きサイズが不足すれば、古いMACを削除するようにしてもよい。なお、記憶装置260は、不揮発性、揮発性どちらでも良い。
【0056】
SNMPメッセージ生成処理部220は、SNMPメッセージ解析処理部230から解析結果、レスポンス生成に必要な情報、あて先アドレス(管理装置100のアドレス)を受け取り、レスポンスを作成して、レスポンスとあて先アドレスとをパケット送受信部210に処理させる。
【0057】
次に、第二実施形態によるネットワーク管理システムの動作について説明する。
図11は、第二実施形態による管理装置100がSNMPメッセージを送信するまでの動作を説明するためのフローチャートである。まず、管理装置100において、管理者による操作、あるいは定期的な情報収集に基づいて、SNMPメッセージ生成処理部120に対して、管理対象装置200に対するSNMPメッセージの作成を要求する(ステップS101)。
【0058】
次に、管理者は、管理対象装置200のアドレス、バージョン261、コミュニティ名262、PDU種別271、VarBind273を、SNMPメッセージ生成処理部120に与える。SNMPメッセージ生成処理部120は、適当な乱数などをリクエストID272にしてSNMPメッセージI110を作成する(ステップS102)。リクエストID272は、他のSNMPメッセージのリクエストIDと異なれば何でも良い。
【0059】
次に、SNMPメッセージ生成処理部120は、作成したSNMPメッセージI110のPDU種別271がSETか否かを検査する(ステップS103)。そして、SETの場合には(ステップS103のYES)、SNMPメッセージ生成処理部120は、認証用VarBindの作成処理を行う(ステップS104〜S107へ進む)。一方、SETでは無い場合には(ステップS103のNO)、何もせず、パケット作成の準備をする(ステップS108へ進む)。
【0060】
まず、PDU種別271がSETである場合について説明する。SNMPメッセージ生成処理部120は、共通鍵テーブル141から、管理者が指定した管理装置200のアドレスに対応する共通鍵I101を取得する(ステップS104)。例えば、共通鍵テーブル141において、管理対象装置200のアドレスが“ADDR1”であれば、取得する共通鍵I101は“CK(1)”である。
【0061】
次に、SNMPメッセージ生成処理部120は、取得した共通鍵I101“CK(1)”で、ステップS102で作成したSNMPメッセージI110のMACを計算する(ステップS105)。次に、SNMPメッセージ生成処理部120は、求めたMACと認証用OIDとで認証用VarBindを作成する(ステップS106)。その後、SNMPメッセージ生成処理部120は、作成した認証用VarBindを、ステップS102で作成したSNMPメッセージI110に付け加え、認証付SNMPメッセージI111を作成する(ステップS107)。
【0062】
次に、PDU種別271がSETでは無い場合(ステップS103のNO)、あるいは、上記ステップS107が終了すると、SNMPメッセージ生成処理部120は、管理者から受け取った管理対象装置200のアドレスをあて先アドレスにして、SNMPメッセージをパケット送受信部110に供給してパケット作成を要求する(ステップS108)。
【0063】
パケット送受信部110に処理させるSNMPメッセージは、ステップS103でNOだった場合には、SNMPメッセージI110、ステップS103でYESだった場合には、SNMPメッセージI111になる。
【0064】
パケット送受信部110は、管理装置100のアドレスを送信元アドレスとして、SNMPメッセージ生成処理部120から受け取ったSNMPメッセージ(I110またはI111)と、あて先アドレスとからパケットI112を作成する(ステップS109)。パケット送受信部110は、パケットI112を管理対象装置200に送信する(ステップS110)。
【0065】
次に、図12は、第二実施形態による管理対象装置200が管理装置100から受信したSNMPメッセージを処理する動作を説明するためのフローチャートである。まず、パケット送受信部210は、管理装置100から受信したパケットI112を受信し、SNMPメッセージ解析処理部230に処理させる(ステップS201)。次に、SNMPメッセージ解析処理部230は、パケット受信部210から受け取ったパケットI112のPDU種別がSETか否かを調べる(ステップS202)。
【0066】
そして、PDU種別がSETだった場合には(ステップS202のYES)、パケットI112中のVarBindに認証用VarBindがあるか否かを調べる(ステップS203)。そして、VarBindに認証用VarBindがない場合には(ステップS203のNO)、パケットI112を廃棄する(ステップS204)。
【0067】
一方、PDU種別がSETではなかった場合(ステップS202のNO)、もしくは、認証用VarBindがあった場合には(ステップS203のYES)、SNMPメッセージ解析処理部230は、各VarBindに対応したMIBモジュール231にパケットI112を処理させ、結果を待つ(ステップS205)。特に、認証用VarBindは、認証MIBモジュール241にパケットI112を処理させ、処理の結果を待つ。なお、認証MIBモジュール241の動作については後述する。
【0068】
次に、SNMPメッセージ解析処理部230は、異常終了を返したMIBモジュールがあるかを調べる(ステップS206)。調べる対象は、MIBモジュール231と認証MIBモジュール241である。そして、異常終了を返したMIBモジュールがない場合には(ステップS206のNO)、解析結果(正常終了)と、レスポンス作成に必要な情報と、あて先アドレス(パケットI112の送信元アドレス)とを、SNMPメッセージ生成処理部220に処理させるべく、正常終了用のレスポンスの作成を要求する(ステップS207)。
【0069】
一方、異常終了を返したMIBモジュールがあった場合には(ステップS206のYES)は、SNMPの仕様(RFC1157,3416)に従って、SNMPメッセージによる処理を無効にする(ステップS208)。SNMPメッセージ解析処理部230は、解析結果(異常終了)、レスポンス生成に必要な情報(例えば、各VarBindや異常終了したVarBindの位置など)と、あて先アドレス(パケットI112の送信元アドレス)とを、SNMPメッセージ生成処理部220に処理させるべく、異常終了用のレスポンスの作成を要求する(ステップS209)。
【0070】
異常終了、正常終了いずれの場合も、SNMPメッセージ生成処理部220は、SNMPメッセージ解析処理部230から受け取った解析結果(正常終了または異常終了)、レスポンス情報からレスポンスを作成する(ステップS210)。SNMPメッセージ生成処理部8220は、作成したレスポンスをあて先アドレスと共にパケット送受信部8210に供給し、パケット作成を要求する(ステップS211)。
【0071】
パケット送受信部210は、管理対象装置200のアドレスを送信元アドレスとして、SNMPメッセージ生成処理部220から受け取ったレスポンスと、あて先アドレスとからパケットを作成する(ステップS212)。パケット送受信部210は、作成したパケットを管理装置100に送信する(ステップS213)。
【0072】
図13は、第二実施形態による、認証MIBモジュール241の動作を説明するためのフローチャートである。認証MIBモジュール241は、SNMPメッセージ解析処理部230からパケットI112を受け取る(S301)。次に、認証MIBモジュール241は、SNMPメッセージ解析処理部230から受け取ったパケットI112のPDU種別がSETか否かを調べる(ステップS302)。そして、PDU種別がSETではない場合には(ステップS302のNO)、SNMPメッセージ解析処理部230に正常終了を返す(ステップS303)。
【0073】
一方、PDU種別がSETである場合には(ステップS302のYES)、認証MIBモジュール241は、パケットI112から認証用VarBind内の設定値(MAC−Mとする)を取り出し、MACキャッシュ243に同じ値がないか検索する(ステップS304)。次に、認証MIBモジュール241は、MAC−MがMACキャッシュ243内に含まれているかを調べる(ステップS305)。
【0074】
そして、MAC−MがMACキャッシュ243内に含まれている場合には(ステップS305のYES)、認証MIBモジュール241は、SNMPメッセージ解析処理部230に異常終了を返す(ステップS306)。
【0075】
一方、MAC−MがMACキャッシュ243内に含まれていない場合には(ステップS305のNO)、認証MIBモジュール241は、共通鍵テーブル242を参照して、パケットI112の送信元アドレスに対応する共通鍵I101を取得する(ステップS307)。例えば、共通鍵テーブル242において、パケットI112の送信元アドレスが“ADDRM”であれば、共通鍵I101は“CK(M)”である。
【0076】
次に、認証MIBモジュール241は、パケットI112から、認証用VarBindを除いたSNMPメッセージI111を取り出す(ステップS308)。次に、共通鍵I101を使ってSNMPメッセージI111のMACを計算する(ステップS309)。これをMAC−1とする。MACは、管理装置100と同じ方法(S105)で算出する。
【0077】
次に、認証MIBモジュール241は、MAC−MとMAC−1とが一致するかを調べる(ステップS310)。そして、MAC−MとMAC−1とが一致しない場合には(ステップS310のNO)は、SNMPメッセージ解析処理部230に異常終了を返す(ステップS311)。一方、MAC−MとMAC−1とが一致した場合には(ステップS310のYES)、MACキャッシュ243にMAC−1を登録する(ステップS312)。そして、SNMPメッセージ解析処理部230に正常終了を返す(ステップS313)。
以上のようにして、認証MIBモジュール241は、SNMPメッセージ解析処理部230に異常終了か、正常終了を返す。
【0078】
上述した第二実施形態によれば、以下の効果が得られる。
(1)管理装置100がSETリクエストに認証用VarBindを付与すること、
(2)管理対象装置200内のSNMPメッセージ解析処理部230が受信したSNMPメッセージ内に認証用VarBindが存在するかを検査すること、
(3)認証MIBモジュール241において、認証用VarBind内の設定値(MAC)と同じMACがMACキャッシュ243に含まれるか検査すること、
(4)認証MIBモジュール241が再計算したMACと認証用VarBind内の設定値(MAC)とが一致するかを検査すること、
(5)MAC認証処理の大部分を、SNMPのプロトコル処理とは独立した認証MIBモジュール241で実現すること、
により、以下の効果を奏する。
【0079】
上記(1)、(2)、(4)より、管理対象装置200に対するSETリクエストにおいてMACによる認証を行える。これにより、盗聴によってコミュニティ名が第三者に知られても不正なSETリクエストによって管理対象装置200に設定することを防ぐことができる。
上記(1)、(2)、(4)より、管理対象装置200に対するSETリクエストにおいてのMACによる認証で、第三者によるSETリクエストの改ざんを検知できる。
【0080】
上記(1)、(2)、(3)より、同じMACのSETリクエストを受け付けないようになる。これにより、過去に認証できたSETリクエストと同じSETリクエストを第三者が管理対象装置200に送ったとしても、管理対象装置200は、その設定を受け付けないようにできる。
上記(5)より、MACによる認証で失敗したとき(同じMACがMACキャッシュ243内にあった場合、MACが不一致の場合)、認証が失敗したことをレスポンスで管理装置100に通知できる。
【0081】
上記(5)より、管理対象装置200のSNMPプロトコル処理実装の改修をほとんど必要とせず、他のプロトコル処理実装に置き換えたとしても、容易に移植できる。
なお、上述した第一、第二実施形態では、認証にMACを使用したが、公開鍵・秘密鍵によるデジタル署名も使用できる。
【0082】
また、上述した第一、第二実施形態では、SETリクエストの認証のみであったが、管理対象装置200が自発的に管理装置100へ通知するTRAP、INFORMリクエストについても応用できる。
そのためには、管理対象装置200のSNMPメッセージ生成処理部220が、管理装置100のように、TRAP、INFORMリクエストのSNMPメッセージの認証用VarBindを、SNMPメッセージに付与して管理装置100に送信するようにする。一方、管理装置100は、受信したTRAP、INFORMリクエストを、管理対象装置200のSNMPメッセージ解析処理部230、認証MIBモジュール241と同様に認証処理行う必要がある。
【0083】
また、例えば、特許文献1の技術と組み合わせて、暗号化と本発明による認証とでの運用も可能である。さらに、特許文献2の技術と組み合わせて、動的なコミュニティ名と本発明による認証とでの運用も可能である。
【0084】
以上、この発明の実施形態について図面を参照して詳述してきたが、具体的な構成はこの実施形態に限られるものではなく、この発明の要旨を逸脱しない範囲の設計等も含まれる。
【符号の説明】
【0085】
10…認証付SETリクエスト, 11…コミュニティ名, 12…認証用VarBind, 13…その他VarBind, 100…管理装置, 101…共通鍵, 110…パケット送受信部, 120…SNMPメッセージ生成処理部, 130…SNMPメッセージ解析処理部, 140…不揮発性記憶, 200,200−1〜200−3…管理対象装置, 210…パケット送受信部, 220…SNMPメッセージ生成処理部, 230…SNMPメッセージ解析処理部, 231…MIBモジュール, 240…パケット, 241…認証MIBモジュール, 242…共通鍵テーブル, 243…MACキャッシュ, 250…不揮発性装置, 251…あて先アドレス, 252…送信元アドレス, 253…SNMPメッセージ, 261…バージョンヘッダ, 262…コミュニティ名, 263…PDU, 271…PDU種別, 272…リクエストID, 273…VarBind
【技術分野】
【0001】
本発明は、ネットワーク管理プロトコルの技術に関する。
【背景技術】
【0002】
ネットワーク管理プロトコルとして、広く使用されているSNMP(Simple Network Management Protocol)v1、SNMPv2cでは、認証用の識別情報(コミュニティ名)が、暗号化されていない原文のままネットワーク上を流れる。このため、第三者によってSNMPメッセージを盗聴されると、不正に取得されたコミュニティ名によって管理対象装置の情報を不正に取得、または設定されてしまう問題があった。特に、装置に対する不正な設定は、サービスをダウンさせてしまうなど深刻な問題を引き起こす可能性があり、重要な問題である。
【0003】
SNMPv1、v2cに対して、セキュリティを向上させる方法がいくつか考えられている。例えば、特許文献1に開示された技術では、コミュニティ名、もしくは、SNMPメッセージ全体を暗号化している。また、特許文献2に開示された技術では、コミュニティ名を動的に生成することで、一度使用したコミュニティ名を何度も使用できないようにしている。また、SNMPv3では、プロトコルとして認証機能を強化し、かつSNMPメッセージの暗号化を具備するようになった。
【0004】
なお、SNMPv1は、RFC1155〜1157、SNMPv2cは、RFC1901、3416、SNMPv3は、RFC3411〜3418で標準化されている。
【先行技術文献】
【特許文献】
【0005】
【特許文献1】特開2003−122650号公報
【特許文献2】特開2003−316672号公報
【発明の概要】
【発明が解決しようとする課題】
【0006】
しかしながら、上述した特許文献1に開示された技術では、コミュニティ名、もしくは、SNMPメッセージ全体を暗号化しているため、運用時に発生した問題を解決する場合、可読性が悪化するという問題がある。
また、特許文献2に開示された技術では、動的に生成されたコミュニティ名が原文のままネットワーク上を流れるため、コミュニティ名が盗聴されると、不正な操作が可能となってしまうという問題がある。また、管理装置は、管理対象装置が動的に生成したコミュニティ名を要求・取得する必要があり、そのためのネットワークトラヒックが増加してしまうという問題がある。
【0007】
また、SNMPv3では、従来のSNMPv1、v2cと比較して、仕様が複雑になっており、プロトコル処理に時間がかかるという問題がある。また、SNMPv3とSNMPv1、v2cとでは、全体のフレームワークや、パケットフォーマットも異なり、互換性がない。ゆえに、既存のSNMPv1、v2c処理機能を活用できないため、SNMPv3の導入にはコストがかかるという問題がある。
【0008】
上記事情に鑑み、本発明は、盗聴によって認証用識別情報が第三者に知られた場合でも、管理対象装置への不正な設定を防ぐことを可能とする技術を提供することを目的としている。
【課題を解決するための手段】
【0009】
本発明の一態様は、ネットワーク管理プロトコルとしてSNMPを用いて、管理装置と管理対象装置とがネットワークを介して、SNMPメッセージを送受信するネットワーク管理システムであって、前記管理装置は、共通鍵を用いて、SETリクエストのメッセージ認証情報を算出し、該メッセージ認証情報を含む認証用VarBindを作成し、該認証用VarBindを含むSNMPメッセージを作成するSNMPメッセージ生成処理部と、前記SNMPメッセージ生成処理部で作成したSNMPメッセージとあて先アドレスとからパケットを作成して送信するパケット送信部とを備え、前記管理対象装置は、前記管理装置からのパケットを受信するパケット受信部と、前記パケットがSETリクエストであれば、認証用VarBindの有無を調べ、無ければ前記パケットを廃棄するSNMPメッセージ解析処理部と、既に認証で使用したメッセージ認証情報が記憶されているメッセージ認証情報キャッシュと、前記認証用VarBindがある場合には、前記認証用VarBind内の前記メッセージ認証情報が前記メッセージ認証情報キャッシュ内に存在するか調べ、前記メッセージ認証情報がメッセージ認証情報キャッシュ内に存在する場合には、リプレイ攻撃と判定し、前記SNMPメッセージ解析処理部に異常終了を返す認証MIBモジュールと、を備える。
【0010】
本発明の一態様は、ネットワーク管理プロトコルとしてSNMPを用いて、ネットワークを介して、管理対象装置とSNMPメッセージを送受信する管理装置であって、共通鍵を用いて、SETリクエストのメッセージ認証情報を算出し、該メッセージ認証情報を含む認証用VarBindを作成し、該認証用VarBindを含むSNMPメッセージを作成するSNMPメッセージ生成処理部と、前記SNMPメッセージ生成処理部で作成したSNMPメッセージとあて先アドレスとからパケットを作成して送信するパケット送信部と、を備える。
【0011】
本発明の一態様は、ネットワーク管理プロトコルとしてSNMPを用いて、ネットワークを介して、管理装置とSNMPメッセージを送受信する管理対象装置であって、前記管理装置からのパケットを受信するパケット受信部と、前記パケットがSETリクエストであれば、認証用VarBindの有無を調べ、無ければ前記パケットを廃棄するSNMPメッセージ解析処理部と、既に認証で使用したメッセージ認証情報が記憶されているメッセージ認証情報キャッシュと、前記認証用VarBindがある場合には、前記認証用VarBind内の前記メッセージ認証情報が前記メッセージ認証情報キャッシュ内に存在するか調べ、前記メッセージ認証情報がメッセージ認証情報キャッシュ内に存在する場合には、リプレイ攻撃と判定し、前記SNMPメッセージ解析処理部に異常終了を返す認証MIBモジュールと、を備える。
【0012】
本発明の一態様は、ネットワーク管理プロトコルとしてSNMPv1、SNMPv2cを用いて、管理装置と管理対象装置とがネットワークを介して、SNMPメッセージを送受信するネットワーク管理方法であって、前記管理装置が、共通鍵を用いて、SETリクエストのメッセージ認証情報を算出する第1の算出ステップと、前記管理装置が、前記メッセージ認証情報を含む認証用VarBindを作成する作成ステップと、前記管理装置が、前記認証用VarBindを含むSNMPメッセージを作成するSNMPメッセージ生成ステップと、前記管理装置が、前記SNMPメッセージ生成ステップで作成したSNMPメッセージとあて先アドレスとからパケットを作成して送信するパケット送信ステップと、前記管理対象装置が、前記管理装置からのパケットを受信するパケット受信ステップと、前記管理対象装置が、前記パケットがSETリクエストであれば、認証用VarBindの有無を調べる有無調査ステップと、前記管理対象装置が、前記認証用VarBindが無い場合には、前記パケットを廃棄する廃棄ステップと、前記管理対象装置が、前記認証用VarBindがある場合には、前記認証用VarBind内の前記メッセージ認証情報が、既に認証で使用したメッセージ認証情報が記憶されているメッセージ認証情報キャッシュ内に存在するか調べる第1のメッセージ認証情報調査ステップと、前記管理対象装置が、前記メッセージ認証情報がメッセージ認証情報キャッシュ内に存在する場合には、リプレイ攻撃と判定し、異常終了を返す第1の異常終了ステップと、を有する。
【0013】
本発明の一態様は、ネットワーク管理プロトコルとしてSNMPを用いて、ネットワークを介して、管理対象装置とSNMPメッセージを送受信する管理装置のコンピュータに対し、共通鍵を用いて、SETリクエストのメッセージ認証情報を算出する算出ステップと、前記メッセージ認証情報を含む認証用VarBindを作成する作成ステップと、前記認証用VarBindを含むSNMPメッセージを作成するSNMPメッセージ生成ステップと、前記SNMPメッセージとあて先アドレスとからパケットを作成して送信するパケット送信ステップと、を実行させるためのコンピュータプログラムである。
【0014】
本発明の一態様は、ネットワーク管理プロトコルとしてSNMPを用いて、ネットワークを介して、管理装置とSNMPメッセージを送受信する管理対象装置のコンピュータに対し、前記管理装置からのパケットを受信するパケット受信ステップと、前記パケットがSETリクエストであれば、認証用VarBindの有無を調べる有無調査ステップと、前記認証用VarBindが無い場合には、前記パケットを廃棄する廃棄ステップと、前記認証用VarBindがある場合には、前記認証用VarBind内の前記メッセージ認証情報が、既に認証で使用したメッセージ認証情報が記憶されているメッセージ認証情報キャッシュ内に存在するか調べる第1のメッセージ認証情報調査ステップと、前記メッセージ認証情報がメッセージ認証情報キャッシュ内に存在する場合には、リプレイ攻撃と判定し、異常終了を返す第1の異常終了ステップと、を実行させるためのコンピュータプログラムである。
【発明の効果】
【0015】
本発明により、盗聴によって認証用識別情報が第三者に知られた場合でも、管理対象装置への不正な設定を防ぐことが可能となる。
【図面の簡単な説明】
【0016】
【図1】本発明の第一実施形態によるネットワーク管理システムの構成を示すブロック図である。
【図2】本発明の第二実施形態によるネットワーク管理システムの全体構成を示したブロック図である。
【図3】パケットの構成を示す概念図である。
【図4】SNMPメッセージの構成を示す概念図である。
【図5】PDUの構成を示す概念図である。
【図6】VarBindの構成を示す概念図である。
【図7】第二実施形態による管理装置100の機能的構成を示すブロック図である。
【図8】第二実施形態による、管理装置100内に具備する共通鍵テーブル141の一例を示す概念図である。
【図9】第二実施形態による管理対象装置200の機能的構成を示すブロック図である。
【図10】第二実施形態による、管理対象装置200が備える共通鍵テーブル242の一例を示す概念図である。
【図11】第二実施形態による管理装置100がSNMPメッセージを送信するまでの動作を説明するためのフローチャートである。
【図12】第二実施形態による管理対象装置200が管理装置100から受信したSNMPメッセージを処理する動作を説明するためのフローチャートである。
【図13】第二実施形態による、認証MIBモジュール241の動作を説明するためのフローチャートである。
【発明を実施するための形態】
【0017】
まず、ネットワーク管理システムの概略について説明する。ネットワーク管理システムは、SNMPv1やSNMPv2cのエージェント機能を具備する装置に対する設定用SNMPメッセージ(SETリクエスト)に関して、SNMPのプロトコル処理部分の改変を小さく留めた上で、セキュリティを向上させる。具体的には、ネットワーク管理システムでは、セキュリティ向上のために以下の事項が実現される。
【0018】
(a)従来のコミュニティ名による認証方法に加え、SNMPメッセージのMAC(Message Authentication Code)による認証を使用する。なお、コミュニティ名とは、SNMPが管理するネットワークシステムの範囲を表す識別情報であり、認証に用いられる識別情報(認証用識別情報)でもある。
(b)上記(a)における認証において、MACの性質上、SNMPメッセージの改ざんを検知できる。
(c)リプレイ攻撃に備え、認証済みMACのキャッシュを用意することで、同一MACのSNMPメッセージは受け付けないようにする。
【0019】
[第一実施形態]
図1は、第一実施形態によるネットワーク管理システムの構成を示すブロック図である。図1において、管理装置100と管理対象装置200は、互いに共通する秘密鍵(共通鍵)101を保持する。管理対象装置200は、認証MIB(Management Information Base)モジュール241を持ち、認証用OID(Object IDentifer)を持ったインタフェースを具備する。通常、認証MIBモジュール241は、SNMPのプロトコル処理部(図示略)とは独立している。また、第一実施形態では、認証はSNMPv1/SNMPv2cの機能のみで実現している。また、対向装置に設定したい内容を含むSETリクエストのパケットに認証情報を含んでいる。
【0020】
管理装置100は、バスで接続されたCPU(Central Processing Unit)やメモリや補助記憶装置などを備え、管理プログラムを実行する。管理装置100の機能の全て又は一部は、ASIC(Application Specific Integrated Circuit)やPLD(Programmable Logic Device)やFPGA(Field Programmable Gate Array)等のハードウェアを用いて実現されても良い。管理プログラムは、コンピュータ読み取り可能な記録媒体に記録されても良い。コンピュータ読み取り可能な記録媒体とは、例えばフレキシブルディスク、光磁気ディスク、ROM、CD−ROM等の可搬媒体、コンピュータシステムに内蔵されるハードディスク等の記憶装置である。
管理対象装置200は、バスで接続されたCPUやメモリや補助記憶装置などを備え、管理対象プログラムを実行する。管理対象装置200の機能の全て又は一部は、ASICやPLDやFPGA等のハードウェアを用いて実現されても良い。管理対象プログラムは、コンピュータ読み取り可能な記録媒体に記録されても良い。
【0021】
管理装置100は、共通鍵101を使用して、コミュニティ名11及びその他VarBind(Variable-Bindings)13の組み合わせを含むSETリクエストから、SETリクエストのMAC(Message Authentication Code:メッセージ認証符号)を計算する。MACは、メッセージ認証情報の一例である。また、管理装置100は、コミュニティ名11と、VarBind(Variable-Bindings、OIDとそのOIDのオブジェクトに設定したい値のペア)として、認証用VarBind(認証用OIDと算出したMACのペア)12と、その他VarBind13とを含めた認証付SETリクエスト10を作成して、管理対象装置200に送信する。
【0022】
上記により、SETリクエスト10が第三者に盗聴され、コミュニティ名11が知られても、第三者は共通鍵101を知らないため、正しいMACを計算することができず、認証可能な認証付SETリクエストを作成できない。
続いて、以下の処理により、リプレイ攻撃を防ぐことが可能となっている。
管理対象装置200内のSNMPメッセージ解析処理部230は、受信した認証付SETリクエスト10内のVarBindに、認証用VarBind12が含まれているかを調べ、含まれていない場合には、SETリクエストである判別して廃棄し、含まれている場合には、認証用VarBind12を認証MIBモジュール241で処理する。
【0023】
認証MIBモジュール241は、認証用VarBind12内のMACがMACキャッシュ243に含まれているかを調べる。MACキャッシュ243は、既に認証で使用したMACが記憶されている。SNMPの仕様上、SNMPメッセージ内のリクエストIDは、メッセージ毎に異なるため、MACは常に異なる。
【0024】
したがって、認証用VarBind12内のMACがMACキャッシュ243に含まれていた場合には、SNMPメッセージ解析処理部230に異常終了を返す。このように、第三者が認証付SETリクエスト10を盗聴し、変更無しで再送しても、MACキャッシュ243による検査でSETリクエストは失敗する。
【0025】
続いて、以下の処理により、認証付SETリクエスト10の認証を行う。
受信した認証付SETリクエスト10のMACを共通鍵101で算出して、認証用VarBind12内のMACと比較する。双方のMACが一致した場合には、SNMPメッセージ解析処理部230に正常終了を返す(認証完了)。これに対して、双方のMACが一致しなかった場合には、SNMP解析処理部230に異常終了を返す(認証失敗)。
【0026】
SNMPの仕様上、SNMPメッセージ解析処理部230は、MIBモジュールのうち、どれか一つでも異常終了を返せば、SETリクエスト全体をエラーとしてSET処理を無効にする。そのため、上述したように、認証MIBモジュール241が異常終了を返すことで、装置への設定を失敗させることができる。
上述した第一実施形態によれば、盗聴によってコミュニティ名が第三者に知られた場合でも、管理対象装置への不正な設定を防ぐことができる。
【0027】
[第二実施形態]
図2は、本発明の第二実施形態によるネットワーク管理システムの全体構成を示したブロック図である。図2において、ネットワーク管理システムは、1つの管理装置100と3つの管理対象装置200−1〜200−3(以下、総称して管理対象装置200ともいう)と、ネットワーク300とを備える。図2では、管理装置100を1つとしているが複数あってもよい。また、管理対象装置200−1〜200−3も3つとしているが4つ以上であってもよい。
【0028】
管理装置100は、ネットワーク300を介して、管理対象装置200−1〜200−3の監視、及び設定を行う。管理対象装置200−1〜200−3は、管理装置100からの指示に基づき、自身が保有する情報をネットワーク300を介して、管理装置100に通知する。また、管理対象装置200−1〜200−3は、管理装置100からの指示に基づき、自身が保有する情報を更新して自身の動作を変更する。
【0029】
ここで、管理対象装置200−1〜200−3として、例えば、ルータ、スイッチングハブ、パーソナルコンピュータ、プリンタ、テレビなどがある。ネットワーク300は、例えば、LAN(Local Area Network)などである。
【0030】
管理装置100と管理対象装置200−1〜200−3との間の管理情報(例えば、MIB)のやりとりには、ネットワーク管理プロトコルとして標準化されたSNMPが用いられる。SNMPは、ネットワークに接続された装置をネットワーク経由で監視したり、設定したりするためのプロトコルである。管理装置100と管理対象装置200−1〜200−3との間は、パケットの送受信によって管理情報のやり取りが行われる。
【0031】
図3は、パケットの構成を示す概念図である。図3において、パケット240には、送信元アドレス251と、あて先アドレス252と、SNMPメッセージ253が含まれている。送信元アドレス251は、パケット240を送信した装置のアドレスである。あて先アドレス252は、パケット240の送信先のアドレスである。例えば、IPネットワークでは、パケット240は、IPパケット、送信元アドレス251は、送信元IPアドレス、あて先アドレス252は、あて先IPアドレスである。
SNMPメッセージ253の詳細は、RFC1157、1901、3417で規定されている。以下、本発明で必要な部分のみを説明する。
【0032】
図4は、SNMPメッセージの構成を示す概念図である。図4において、SNMPメッセージ253は、バージョンヘッダ261、コミュニティ名262、PDU(Protocol Data Unit)263で構成される。バージョンヘッダ261は、SNMPのバージョンを表し、SNMPv1であれば数値“0”、SNMPv2cであれば数値“1”である。
【0033】
コミュニティ名262は、ネットワーク管理者のみが知る識別情報で、管理装置100、及び管理対象装置200にそれぞれ設定されている。管理対象装置200は、コミュニティ名262を照合して、SNMPメッセージが正当なネットワーク管理者からであるか否かを判断する。コミュニティ名262は、例えば、文字列で“public”や、“private”などである。
なお、本実施形態は、SNMPv1、v2cのセキュリティを向上するためのものだが、SNMPのバージョンは、“0”、“1”以外でもよい。
【0034】
図5は、PDUの構成を示す概念図である。PDU263は、PDU種別271、リクエストID272、エラーステータス、エラーインデクス、複数個のVarBind273、…で構成される。PDU種別271は、管理装置100が管理対象装置200に対する制御の種類を指定するために使われるフィールドである。PDU種別271は、管理対象装置200が管理装置100から受け取った制御に対する応答であることを伝えるためにも用いられる。設定の場合には、SETを指定し、応答の場合には、RESPONSEを指定する。SETのSNMPメッセージをSETリクエストという。RESPONSEのSNMPメッセージをレスポンスという。
【0035】
リクエストID272は、管理装置100が管理対象装置200に送信したSNMPメッセージ253に対する、管理対象装置200から管理装置100へのレスポンスを区別するための識別子で整数値である。例えば、SNMPメッセージ作成のたびに基準値からインクリメントしても良いし、毎回乱数でも良い。
VarBind273は、操作したいOIDとそのOIDのオブジェクトに設定したい値のペアにしたものである。VarBind273は、PDU263内に複数あってもよい。
【0036】
図6は、VarBindの構成を示す概念図である。VarBind273は、OID281と、設定値282で構成される。OID281は、管理対象装置200が持つ管理情報毎の識別IDである。設定値282は、SETリクエストのとき、OID281に設定したい値を指定するために用いる。
【0037】
OID281とその設定値282の仕様は、RFCなどで定義された標準MIBや、ベンダー独自のMIBがある。例えば、RFC3418で定義されているSNMPv2−MIBでは、OID“.1.3.6.1.2.1.1.6(sysLocation)”は、管理対象装置200の物理的な設置場所情報のOIDであり、設定値には256文字未満の文字列(例えば、“Chiba”など)を使用するように定義されている。
【0038】
図7は、第二実施形態による管理装置100の機能的構成を示すブロック図である。なお、図1に対応する部分には同一の符号を付けて説明を省略する。図7において、管理装置100は、パケット送受信部110と、SNMPメッセージ生成処理部120と、SNMPメッセージ解析処理部130と、不揮発性装置140と、不揮発性装置140内に記憶している共通鍵テーブル141とを備える。
【0039】
共通鍵テーブル141は、ネットワーク300上の管理対象装置200のアドレスと対応させた共通鍵101を記憶する。パケット送受信部110は、SNMPメッセージ生成処理部120から受け取ったSNMPメッセージ253とあて先アドレスとからパケット240を作成して送信する。また、パケット送受信部110は、管理対象装置200から受信したパケット240をSNMPメッセージ解析処理部130に処理させる。
【0040】
SNMPメッセージ生成処理部120は、SNMPメッセージ253を作成してパケット送受信部6110に処理させる機能を持つ。但し、認証付SETリクエスト作成時は、共通鍵テーブル141から取得した共通鍵101でSETリクエストのMACを求め、認証用VarBindを作成して、SNMPメッセージ253に付与する機能を持つ。
【0041】
MACは、例えば、HMAC(Keyed-Hashing for MAC)を使用する。ハッシュ関数は、SHA1(Secure Hash Algorithm1)や、MD5(Message Digest algorithm 5)などを使用する。HMACは、RFC2104、SHA1は、FIPS180−1、MD5は、RFC1321で標準化されている。
SNMPメッセージ解析処理部130は、パケット送受信部110から受け取った内容を管理者に通知する。
【0042】
図8は、第二実施形態による、管理装置100内に具備する共通鍵テーブル141の一例を示す概念図である。共通鍵テーブル141内の共通鍵101は、各アドレスに対する認証付SETリクエストを作成する場合に求めるMACに使用する鍵である。例えば、アドレスが“ADDR1”である装置(ここでは、管理対象装置200のこと)に対するSETリクエストのMAC算出に使用する共通鍵101は、“CK(1)”である。共通鍵CK(1)、CK(2)、・・・、CK(n)は、すべて同じでも良い。なお、共通鍵テーブル141では、管理装置100自身のアドレスに対する共通鍵も管理できる。共通鍵テーブル141では、アドレスを“ADDRM”、共通鍵を“CK(M)”で表している。
【0043】
図9は、第二実施形態による管理対象装置200の機能的構成を示すブロック図である。図9において、管理対象装置200は、パケット送受信部210と、SNMPメッセージ生成処理部220と、SNMPメッセージ解析処理部230と、不揮発性装置250と、不揮発性装置250内に記憶している共通鍵テーブル242と、記憶装置260と、記憶装置260内に記憶しているMACキャッシュ243と、MIBモジュール231とを備える。MIBモジュール231は、通常、複数存在し、その中の1つとして認証MIBモジュール241を備える。
【0044】
共通鍵テーブル242は、ネットワーク300上の管理装置100のアドレスと対応させた共通鍵を記憶する。パケット送受信部210は、SNMPメッセージ生成処理部220から受け取ったSNMPメッセージとあて先アドレスとからパケットを作成して送信する。また、パケット送受信部210は、受信したパケットをSNMPメッセージ解析処理部230に処理させる。
【0045】
SNMPメッセージ解析処理部230は、パケットがSETリクエスト(SETリクエストまたは認証付SETリクエスト)であれば、認証用VarBindの有無を調べ、無ければパケットを廃棄する。一方、認証用VarBindがある場合には、SNMPメッセージ内の各VarBindに対応しているMIBモジュール231にパケットを処理させ、その応答を待つ。特に、認証用VarBindの場合には、認証MIBモジュール241にパケットを処理させる。
【0046】
例えば、VarBindのOIDが“.1.3.6.1.2.1.1.6”の場合には、SNMPv2−MIBモジュールに処理させ、VarBindのOIDが認証用OIDの場合(VarBindが認証用VarBindの場合)には、認証MIBモジュール241に処理させる。
【0047】
SNMPメッセージ解析処理部230は、各MIBモジュール231からの応答を受け取り、全て正常終了であれば解析結果を正常とする。各MIBモジュール231のうち、一つ以上のMIBモジュールから異常終了を受け取ると、解析結果を異常とする。
【0048】
SNMPの仕様上(RFC1157,3416)、解析結果が異常の場合、SNMPメッセージ解析処理部230は、SNMPメッセージによる処理を無効にしなければならない。例えば、OID“.1.3.6.1.2.1.1.6”は、256文字未満の文字列を指定する必要がある。このため、SETリクエストの中が、このOIDに対して256文字以上の文字列の設定を要求するVarBindを持つと、SNMPv2−MIBモジュールは、異常終了をSNMPメッセージ解析処理部230に返す。異常終了を受け取ったSNMPメッセージ解析処理部230は、他のVarBindの設定内容を無効にする。
【0049】
SNMPメッセージ解析処理部230は、解析結果と、レスポンス生成に必要な情報(例えば、各VarBindや、異常終了したVarBindの位置など)と、パケット内の送信元アドレス(管理装置100のアドレス)をあて先アドレスとして、SNMPメッセージ生成処理部220に処理させる。
【0050】
MIBモジュール231は、SNMPメッセージ解析処理部230から受け取ったVarBindを定義に従って処理し、その結果をSNMPメッセージ解析処理部230に返す。MIBモジュール231の動作仕様は、RFCなどで定義された個々のMIB定義に従う。例えば、OID“.1.3.6.1.2.1.1.6”の動作は、RFC3418に、IPの情報を管理するIP−MIBは、RFC4293、LLDPの管理情報LLDP−MIBは、IEEE802.1AB−2005等に定義されている。
【0051】
認証MIBモジュール241は、SNMPメッセージ解析処理部230から受け取ったパケットがSETリクエスト(SETリクエストまたは認証付SETリクエスト)以外の場合には何もしないで、SNMPメッセージ解析処理部230に正常終了を返す。一方、認証MIBモジュール241は、SNMPメッセージ解析処理部230から受け取ったパケットが認証付SETリクエストの場合には、認証用VarBind内の設定値(MAC−Mとする)がMACキャッシュ243内に含まれているか検査する。
【0052】
認証MIBモジュール241は、MAC−MがMACキャッシュ243内に含まれていた場合には、リプレイ攻撃と考え、SNMPメッセージ解析処理230に異常終了を返す。一方、認証MIBモジュール241は、MAC−MがMACキャッシュ243内に含まれていなかった場合には、共通鍵テーブル242を参照して、受信したパケットの送信元アドレスに対応する共通鍵101を用いて、認証用VarBindを除いたSNMPメッセージのMACを、管理装置100と同じ方法で算出する(このMACをMAC−1とする)。
【0053】
認証MIBモジュール241は、MAC−MとMAC−1とが一致するか調べ、MAC−1とMAC−Mとが不一致の場合には、SNMPメッセージが改ざんされたと判断して、SNMPメッセージ解析処理部230に異常終了を返す。一方、認証MIBモジュール241は、MAC−1とMAC−Mとが一致すれば、SNMPメッセージが改ざんされておらず、管理装置100からの正当なSNMPメッセージであると判断し、MACキャッシュ243にMAC−1を追加して、SNMPメッセージ解析処理部230に正常終了を返す。
【0054】
図10は、第二実施形態による、管理対象装置200が備える共通鍵テーブル242の一例を示す概念図である。共通鍵テーブル242における、共通鍵101は、各アドレスに対するMACを算出するために使用する鍵である。例えば、図10では、アドレスが“ADDRM”である装置(ここでは管理装置100のこと)に対して、MACの算出に使用する共通鍵は、“CK(M)”である。共通鍵CK(1)、CK(2)、…、CK(n)は、すべて同じでも良い。なお、共通鍵テーブル242では、管理対象装置200自身のアドレスに対する共通鍵も管理できる。図10では、アドレスを“ADDR1”、共通鍵を“CK(1)”で表している。
管理装置100のアドレスが“ADDRM”、管理対象装置200のアドレスが“ADDR1”であれば、管理装置100内の共通鍵テーブル141の“CK(1)”と管理対象装置200内の共通鍵テーブル242の“CK(M)”は同じものである。
【0055】
MACキャッシュ243は、認証MIBモジュール241が認証に成功したMACの履歴を記憶している。該MACの履歴は、認証MIBモジュール241が新たに認証するとき、認証用VarBind内のMACが過去に認証で使用したMACと一致するかを検索するために用いられる。MACキャッシュ243は、どのような実装でも良い。例えば、管理対象装置200が再開するまで記憶してもよいし、保存後一定時間が経ったMACは削除するようにしてもよいし、あらかじめMACキャッシュ243のサイズを決めて、空きサイズが不足すれば、古いMACを削除するようにしてもよい。なお、記憶装置260は、不揮発性、揮発性どちらでも良い。
【0056】
SNMPメッセージ生成処理部220は、SNMPメッセージ解析処理部230から解析結果、レスポンス生成に必要な情報、あて先アドレス(管理装置100のアドレス)を受け取り、レスポンスを作成して、レスポンスとあて先アドレスとをパケット送受信部210に処理させる。
【0057】
次に、第二実施形態によるネットワーク管理システムの動作について説明する。
図11は、第二実施形態による管理装置100がSNMPメッセージを送信するまでの動作を説明するためのフローチャートである。まず、管理装置100において、管理者による操作、あるいは定期的な情報収集に基づいて、SNMPメッセージ生成処理部120に対して、管理対象装置200に対するSNMPメッセージの作成を要求する(ステップS101)。
【0058】
次に、管理者は、管理対象装置200のアドレス、バージョン261、コミュニティ名262、PDU種別271、VarBind273を、SNMPメッセージ生成処理部120に与える。SNMPメッセージ生成処理部120は、適当な乱数などをリクエストID272にしてSNMPメッセージI110を作成する(ステップS102)。リクエストID272は、他のSNMPメッセージのリクエストIDと異なれば何でも良い。
【0059】
次に、SNMPメッセージ生成処理部120は、作成したSNMPメッセージI110のPDU種別271がSETか否かを検査する(ステップS103)。そして、SETの場合には(ステップS103のYES)、SNMPメッセージ生成処理部120は、認証用VarBindの作成処理を行う(ステップS104〜S107へ進む)。一方、SETでは無い場合には(ステップS103のNO)、何もせず、パケット作成の準備をする(ステップS108へ進む)。
【0060】
まず、PDU種別271がSETである場合について説明する。SNMPメッセージ生成処理部120は、共通鍵テーブル141から、管理者が指定した管理装置200のアドレスに対応する共通鍵I101を取得する(ステップS104)。例えば、共通鍵テーブル141において、管理対象装置200のアドレスが“ADDR1”であれば、取得する共通鍵I101は“CK(1)”である。
【0061】
次に、SNMPメッセージ生成処理部120は、取得した共通鍵I101“CK(1)”で、ステップS102で作成したSNMPメッセージI110のMACを計算する(ステップS105)。次に、SNMPメッセージ生成処理部120は、求めたMACと認証用OIDとで認証用VarBindを作成する(ステップS106)。その後、SNMPメッセージ生成処理部120は、作成した認証用VarBindを、ステップS102で作成したSNMPメッセージI110に付け加え、認証付SNMPメッセージI111を作成する(ステップS107)。
【0062】
次に、PDU種別271がSETでは無い場合(ステップS103のNO)、あるいは、上記ステップS107が終了すると、SNMPメッセージ生成処理部120は、管理者から受け取った管理対象装置200のアドレスをあて先アドレスにして、SNMPメッセージをパケット送受信部110に供給してパケット作成を要求する(ステップS108)。
【0063】
パケット送受信部110に処理させるSNMPメッセージは、ステップS103でNOだった場合には、SNMPメッセージI110、ステップS103でYESだった場合には、SNMPメッセージI111になる。
【0064】
パケット送受信部110は、管理装置100のアドレスを送信元アドレスとして、SNMPメッセージ生成処理部120から受け取ったSNMPメッセージ(I110またはI111)と、あて先アドレスとからパケットI112を作成する(ステップS109)。パケット送受信部110は、パケットI112を管理対象装置200に送信する(ステップS110)。
【0065】
次に、図12は、第二実施形態による管理対象装置200が管理装置100から受信したSNMPメッセージを処理する動作を説明するためのフローチャートである。まず、パケット送受信部210は、管理装置100から受信したパケットI112を受信し、SNMPメッセージ解析処理部230に処理させる(ステップS201)。次に、SNMPメッセージ解析処理部230は、パケット受信部210から受け取ったパケットI112のPDU種別がSETか否かを調べる(ステップS202)。
【0066】
そして、PDU種別がSETだった場合には(ステップS202のYES)、パケットI112中のVarBindに認証用VarBindがあるか否かを調べる(ステップS203)。そして、VarBindに認証用VarBindがない場合には(ステップS203のNO)、パケットI112を廃棄する(ステップS204)。
【0067】
一方、PDU種別がSETではなかった場合(ステップS202のNO)、もしくは、認証用VarBindがあった場合には(ステップS203のYES)、SNMPメッセージ解析処理部230は、各VarBindに対応したMIBモジュール231にパケットI112を処理させ、結果を待つ(ステップS205)。特に、認証用VarBindは、認証MIBモジュール241にパケットI112を処理させ、処理の結果を待つ。なお、認証MIBモジュール241の動作については後述する。
【0068】
次に、SNMPメッセージ解析処理部230は、異常終了を返したMIBモジュールがあるかを調べる(ステップS206)。調べる対象は、MIBモジュール231と認証MIBモジュール241である。そして、異常終了を返したMIBモジュールがない場合には(ステップS206のNO)、解析結果(正常終了)と、レスポンス作成に必要な情報と、あて先アドレス(パケットI112の送信元アドレス)とを、SNMPメッセージ生成処理部220に処理させるべく、正常終了用のレスポンスの作成を要求する(ステップS207)。
【0069】
一方、異常終了を返したMIBモジュールがあった場合には(ステップS206のYES)は、SNMPの仕様(RFC1157,3416)に従って、SNMPメッセージによる処理を無効にする(ステップS208)。SNMPメッセージ解析処理部230は、解析結果(異常終了)、レスポンス生成に必要な情報(例えば、各VarBindや異常終了したVarBindの位置など)と、あて先アドレス(パケットI112の送信元アドレス)とを、SNMPメッセージ生成処理部220に処理させるべく、異常終了用のレスポンスの作成を要求する(ステップS209)。
【0070】
異常終了、正常終了いずれの場合も、SNMPメッセージ生成処理部220は、SNMPメッセージ解析処理部230から受け取った解析結果(正常終了または異常終了)、レスポンス情報からレスポンスを作成する(ステップS210)。SNMPメッセージ生成処理部8220は、作成したレスポンスをあて先アドレスと共にパケット送受信部8210に供給し、パケット作成を要求する(ステップS211)。
【0071】
パケット送受信部210は、管理対象装置200のアドレスを送信元アドレスとして、SNMPメッセージ生成処理部220から受け取ったレスポンスと、あて先アドレスとからパケットを作成する(ステップS212)。パケット送受信部210は、作成したパケットを管理装置100に送信する(ステップS213)。
【0072】
図13は、第二実施形態による、認証MIBモジュール241の動作を説明するためのフローチャートである。認証MIBモジュール241は、SNMPメッセージ解析処理部230からパケットI112を受け取る(S301)。次に、認証MIBモジュール241は、SNMPメッセージ解析処理部230から受け取ったパケットI112のPDU種別がSETか否かを調べる(ステップS302)。そして、PDU種別がSETではない場合には(ステップS302のNO)、SNMPメッセージ解析処理部230に正常終了を返す(ステップS303)。
【0073】
一方、PDU種別がSETである場合には(ステップS302のYES)、認証MIBモジュール241は、パケットI112から認証用VarBind内の設定値(MAC−Mとする)を取り出し、MACキャッシュ243に同じ値がないか検索する(ステップS304)。次に、認証MIBモジュール241は、MAC−MがMACキャッシュ243内に含まれているかを調べる(ステップS305)。
【0074】
そして、MAC−MがMACキャッシュ243内に含まれている場合には(ステップS305のYES)、認証MIBモジュール241は、SNMPメッセージ解析処理部230に異常終了を返す(ステップS306)。
【0075】
一方、MAC−MがMACキャッシュ243内に含まれていない場合には(ステップS305のNO)、認証MIBモジュール241は、共通鍵テーブル242を参照して、パケットI112の送信元アドレスに対応する共通鍵I101を取得する(ステップS307)。例えば、共通鍵テーブル242において、パケットI112の送信元アドレスが“ADDRM”であれば、共通鍵I101は“CK(M)”である。
【0076】
次に、認証MIBモジュール241は、パケットI112から、認証用VarBindを除いたSNMPメッセージI111を取り出す(ステップS308)。次に、共通鍵I101を使ってSNMPメッセージI111のMACを計算する(ステップS309)。これをMAC−1とする。MACは、管理装置100と同じ方法(S105)で算出する。
【0077】
次に、認証MIBモジュール241は、MAC−MとMAC−1とが一致するかを調べる(ステップS310)。そして、MAC−MとMAC−1とが一致しない場合には(ステップS310のNO)は、SNMPメッセージ解析処理部230に異常終了を返す(ステップS311)。一方、MAC−MとMAC−1とが一致した場合には(ステップS310のYES)、MACキャッシュ243にMAC−1を登録する(ステップS312)。そして、SNMPメッセージ解析処理部230に正常終了を返す(ステップS313)。
以上のようにして、認証MIBモジュール241は、SNMPメッセージ解析処理部230に異常終了か、正常終了を返す。
【0078】
上述した第二実施形態によれば、以下の効果が得られる。
(1)管理装置100がSETリクエストに認証用VarBindを付与すること、
(2)管理対象装置200内のSNMPメッセージ解析処理部230が受信したSNMPメッセージ内に認証用VarBindが存在するかを検査すること、
(3)認証MIBモジュール241において、認証用VarBind内の設定値(MAC)と同じMACがMACキャッシュ243に含まれるか検査すること、
(4)認証MIBモジュール241が再計算したMACと認証用VarBind内の設定値(MAC)とが一致するかを検査すること、
(5)MAC認証処理の大部分を、SNMPのプロトコル処理とは独立した認証MIBモジュール241で実現すること、
により、以下の効果を奏する。
【0079】
上記(1)、(2)、(4)より、管理対象装置200に対するSETリクエストにおいてMACによる認証を行える。これにより、盗聴によってコミュニティ名が第三者に知られても不正なSETリクエストによって管理対象装置200に設定することを防ぐことができる。
上記(1)、(2)、(4)より、管理対象装置200に対するSETリクエストにおいてのMACによる認証で、第三者によるSETリクエストの改ざんを検知できる。
【0080】
上記(1)、(2)、(3)より、同じMACのSETリクエストを受け付けないようになる。これにより、過去に認証できたSETリクエストと同じSETリクエストを第三者が管理対象装置200に送ったとしても、管理対象装置200は、その設定を受け付けないようにできる。
上記(5)より、MACによる認証で失敗したとき(同じMACがMACキャッシュ243内にあった場合、MACが不一致の場合)、認証が失敗したことをレスポンスで管理装置100に通知できる。
【0081】
上記(5)より、管理対象装置200のSNMPプロトコル処理実装の改修をほとんど必要とせず、他のプロトコル処理実装に置き換えたとしても、容易に移植できる。
なお、上述した第一、第二実施形態では、認証にMACを使用したが、公開鍵・秘密鍵によるデジタル署名も使用できる。
【0082】
また、上述した第一、第二実施形態では、SETリクエストの認証のみであったが、管理対象装置200が自発的に管理装置100へ通知するTRAP、INFORMリクエストについても応用できる。
そのためには、管理対象装置200のSNMPメッセージ生成処理部220が、管理装置100のように、TRAP、INFORMリクエストのSNMPメッセージの認証用VarBindを、SNMPメッセージに付与して管理装置100に送信するようにする。一方、管理装置100は、受信したTRAP、INFORMリクエストを、管理対象装置200のSNMPメッセージ解析処理部230、認証MIBモジュール241と同様に認証処理行う必要がある。
【0083】
また、例えば、特許文献1の技術と組み合わせて、暗号化と本発明による認証とでの運用も可能である。さらに、特許文献2の技術と組み合わせて、動的なコミュニティ名と本発明による認証とでの運用も可能である。
【0084】
以上、この発明の実施形態について図面を参照して詳述してきたが、具体的な構成はこの実施形態に限られるものではなく、この発明の要旨を逸脱しない範囲の設計等も含まれる。
【符号の説明】
【0085】
10…認証付SETリクエスト, 11…コミュニティ名, 12…認証用VarBind, 13…その他VarBind, 100…管理装置, 101…共通鍵, 110…パケット送受信部, 120…SNMPメッセージ生成処理部, 130…SNMPメッセージ解析処理部, 140…不揮発性記憶, 200,200−1〜200−3…管理対象装置, 210…パケット送受信部, 220…SNMPメッセージ生成処理部, 230…SNMPメッセージ解析処理部, 231…MIBモジュール, 240…パケット, 241…認証MIBモジュール, 242…共通鍵テーブル, 243…MACキャッシュ, 250…不揮発性装置, 251…あて先アドレス, 252…送信元アドレス, 253…SNMPメッセージ, 261…バージョンヘッダ, 262…コミュニティ名, 263…PDU, 271…PDU種別, 272…リクエストID, 273…VarBind
【特許請求の範囲】
【請求項1】
ネットワーク管理プロトコルとしてSNMPを用いて、管理装置と管理対象装置とがネットワークを介して、SNMPメッセージを送受信するネットワーク管理システムであって、
前記管理装置は、
共通鍵を用いて、SETリクエストのメッセージ認証情報を算出し、該メッセージ認証情報を含む認証用VarBindを作成し、該認証用VarBindを含むSNMPメッセージを作成するSNMPメッセージ生成処理部と、
前記SNMPメッセージ生成処理部で作成したSNMPメッセージとあて先アドレスとからパケットを作成して送信するパケット送信部と
を備え、
前記管理対象装置は、
前記管理装置からのパケットを受信するパケット受信部と、
前記パケットがSETリクエストであれば、認証用VarBindの有無を調べ、無ければ前記パケットを廃棄するSNMPメッセージ解析処理部と、
既に認証で使用したメッセージ認証情報が記憶されているメッセージ認証情報キャッシュと、
前記認証用VarBindがある場合には、前記認証用VarBind内の前記メッセージ認証情報が前記メッセージ認証情報キャッシュ内に存在するか調べ、前記メッセージ認証情報がメッセージ認証情報キャッシュ内に存在する場合には、リプレイ攻撃と判定し、前記SNMPメッセージ解析処理部に異常終了を返す認証MIBモジュールと
を備えるネットワーク管理システム。
【請求項2】
前記認証MIBモジュールは、
前記メッセージ認証情報が前記メッセージ認証情報キャッシュ内に含まれていなかった場合には、受信したパケットの送信元アドレスに対応する共通鍵を用いて、認証用VarBindを除いたSNMPメッセージのメッセージ認証情報を算出し、
前記認証用VarBindに含まれていたメッセージ認証情報と前記MIBモジュールが算出したメッセージ認証情報とが一致するか調べ、両者が不一致の場合には、SNMPメッセージが改ざんされたと判断して、前記SNMPメッセージ解析処理部に異常終了を返し、
両者が一致した場合には、前記SNMPメッセージが改ざんされておらず、前記管理装置からの正当なSNMPメッセージであると判断し、前記メッセージ認証情報キャッシュに前記メッセージ認証情報を追加して、前記SNMPメッセージ解析処理部に正常終了を返す請求項1に記載のネットワーク管理システム。
【請求項3】
前記認証MIBモジュールは、前記SNMPメッセージ解析処理部から受け取ったパケットがSETリクエスト以外の場合には何もしないで、前記SNMPメッセージ解析処理部に正常終了を返す請求項1又は2に記載のネットワーク管理システム。
【請求項4】
前記SNMPメッセージ解析処理部は、いずれか一つでも異常終了を返せば、SETリクエスト全体をエラーとしてSET処理を無効にする請求項1〜3のいずれかに記載のネットワーク管理システム。
【請求項5】
ネットワーク管理プロトコルとしてSNMPを用いて、ネットワークを介して、管理対象装置とSNMPメッセージを送受信する管理装置であって、
共通鍵を用いて、SETリクエストのメッセージ認証情報を算出し、該メッセージ認証情報を含む認証用VarBindを作成し、該認証用VarBindを含むSNMPメッセージを作成するSNMPメッセージ生成処理部と、
前記SNMPメッセージ生成処理部で作成したSNMPメッセージとあて先アドレスとからパケットを作成して送信するパケット送信部と
を備える管理装置。
【請求項6】
ネットワーク管理プロトコルとしてSNMPを用いて、ネットワークを介して、管理装置とSNMPメッセージを送受信する管理対象装置であって、
前記管理装置からのパケットを受信するパケット受信部と、
前記パケットがSETリクエストであれば、認証用VarBindの有無を調べ、無ければ前記パケットを廃棄するSNMPメッセージ解析処理部と、
既に認証で使用したメッセージ認証情報が記憶されているメッセージ認証情報キャッシュと、
前記認証用VarBindがある場合には、前記認証用VarBind内の前記メッセージ認証情報が前記メッセージ認証情報キャッシュ内に存在するか調べ、前記メッセージ認証情報がメッセージ認証情報キャッシュ内に存在する場合には、リプレイ攻撃と判定し、前記SNMPメッセージ解析処理部に異常終了を返す認証MIBモジュールと
を備える管理対象装置。
【請求項7】
ネットワーク管理プロトコルとしてSNMPv1、SNMPv2cを用いて、管理装置と管理対象装置とがネットワークを介して、SNMPメッセージを送受信するネットワーク管理方法であって、
前記管理装置が、共通鍵を用いて、SETリクエストのメッセージ認証情報を算出する第1の算出ステップと、
前記管理装置が、前記メッセージ認証情報を含む認証用VarBindを作成する作成ステップと、
前記管理装置が、前記認証用VarBindを含むSNMPメッセージを作成するSNMPメッセージ生成ステップと、
前記管理装置が、前記SNMPメッセージ生成ステップで作成したSNMPメッセージとあて先アドレスとからパケットを作成して送信するパケット送信ステップと、
前記管理対象装置が、前記管理装置からのパケットを受信するパケット受信ステップと、
前記管理対象装置が、前記パケットがSETリクエストであれば、認証用VarBindの有無を調べる有無調査ステップと、
前記管理対象装置が、前記認証用VarBindが無い場合には、前記パケットを廃棄する廃棄ステップと、
前記管理対象装置が、前記認証用VarBindがある場合には、前記認証用VarBind内の前記メッセージ認証情報が、既に認証で使用したメッセージ認証情報が記憶されているメッセージ認証情報キャッシュ内に存在するか調べる第1のメッセージ認証情報調査ステップと、
前記管理対象装置が、前記メッセージ認証情報がメッセージ認証情報キャッシュ内に存在する場合には、リプレイ攻撃と判定し、異常終了を返す第1の異常終了ステップと
を有するネットワーク管理方法。
【請求項8】
ネットワーク管理プロトコルとしてSNMPを用いて、ネットワークを介して、管理対象装置とSNMPメッセージを送受信する管理装置のコンピュータに対し、
共通鍵を用いて、SETリクエストのメッセージ認証情報を算出する算出ステップと、
前記メッセージ認証情報を含む認証用VarBindを作成する作成ステップと、
前記認証用VarBindを含むSNMPメッセージを作成するSNMPメッセージ生成ステップと、
前記SNMPメッセージとあて先アドレスとからパケットを作成して送信するパケット送信ステップと、
を実行させるためのコンピュータプログラム。
【請求項9】
ネットワーク管理プロトコルとしてSNMPを用いて、ネットワークを介して、管理装置とSNMPメッセージを送受信する管理対象装置のコンピュータに対し、
前記管理装置からのパケットを受信するパケット受信ステップと、
前記パケットがSETリクエストであれば、認証用VarBindの有無を調べる有無調査ステップと、
前記認証用VarBindが無い場合には、前記パケットを廃棄する廃棄ステップと、
前記認証用VarBindがある場合には、前記認証用VarBind内の前記メッセージ認証情報が、既に認証で使用したメッセージ認証情報が記憶されているメッセージ認証情報キャッシュ内に存在するか調べる第1のメッセージ認証情報調査ステップと、
前記メッセージ認証情報がメッセージ認証情報キャッシュ内に存在する場合には、リプレイ攻撃と判定し、異常終了を返す第1の異常終了ステップと、
を実行させるためのコンピュータプログラム。
【請求項1】
ネットワーク管理プロトコルとしてSNMPを用いて、管理装置と管理対象装置とがネットワークを介して、SNMPメッセージを送受信するネットワーク管理システムであって、
前記管理装置は、
共通鍵を用いて、SETリクエストのメッセージ認証情報を算出し、該メッセージ認証情報を含む認証用VarBindを作成し、該認証用VarBindを含むSNMPメッセージを作成するSNMPメッセージ生成処理部と、
前記SNMPメッセージ生成処理部で作成したSNMPメッセージとあて先アドレスとからパケットを作成して送信するパケット送信部と
を備え、
前記管理対象装置は、
前記管理装置からのパケットを受信するパケット受信部と、
前記パケットがSETリクエストであれば、認証用VarBindの有無を調べ、無ければ前記パケットを廃棄するSNMPメッセージ解析処理部と、
既に認証で使用したメッセージ認証情報が記憶されているメッセージ認証情報キャッシュと、
前記認証用VarBindがある場合には、前記認証用VarBind内の前記メッセージ認証情報が前記メッセージ認証情報キャッシュ内に存在するか調べ、前記メッセージ認証情報がメッセージ認証情報キャッシュ内に存在する場合には、リプレイ攻撃と判定し、前記SNMPメッセージ解析処理部に異常終了を返す認証MIBモジュールと
を備えるネットワーク管理システム。
【請求項2】
前記認証MIBモジュールは、
前記メッセージ認証情報が前記メッセージ認証情報キャッシュ内に含まれていなかった場合には、受信したパケットの送信元アドレスに対応する共通鍵を用いて、認証用VarBindを除いたSNMPメッセージのメッセージ認証情報を算出し、
前記認証用VarBindに含まれていたメッセージ認証情報と前記MIBモジュールが算出したメッセージ認証情報とが一致するか調べ、両者が不一致の場合には、SNMPメッセージが改ざんされたと判断して、前記SNMPメッセージ解析処理部に異常終了を返し、
両者が一致した場合には、前記SNMPメッセージが改ざんされておらず、前記管理装置からの正当なSNMPメッセージであると判断し、前記メッセージ認証情報キャッシュに前記メッセージ認証情報を追加して、前記SNMPメッセージ解析処理部に正常終了を返す請求項1に記載のネットワーク管理システム。
【請求項3】
前記認証MIBモジュールは、前記SNMPメッセージ解析処理部から受け取ったパケットがSETリクエスト以外の場合には何もしないで、前記SNMPメッセージ解析処理部に正常終了を返す請求項1又は2に記載のネットワーク管理システム。
【請求項4】
前記SNMPメッセージ解析処理部は、いずれか一つでも異常終了を返せば、SETリクエスト全体をエラーとしてSET処理を無効にする請求項1〜3のいずれかに記載のネットワーク管理システム。
【請求項5】
ネットワーク管理プロトコルとしてSNMPを用いて、ネットワークを介して、管理対象装置とSNMPメッセージを送受信する管理装置であって、
共通鍵を用いて、SETリクエストのメッセージ認証情報を算出し、該メッセージ認証情報を含む認証用VarBindを作成し、該認証用VarBindを含むSNMPメッセージを作成するSNMPメッセージ生成処理部と、
前記SNMPメッセージ生成処理部で作成したSNMPメッセージとあて先アドレスとからパケットを作成して送信するパケット送信部と
を備える管理装置。
【請求項6】
ネットワーク管理プロトコルとしてSNMPを用いて、ネットワークを介して、管理装置とSNMPメッセージを送受信する管理対象装置であって、
前記管理装置からのパケットを受信するパケット受信部と、
前記パケットがSETリクエストであれば、認証用VarBindの有無を調べ、無ければ前記パケットを廃棄するSNMPメッセージ解析処理部と、
既に認証で使用したメッセージ認証情報が記憶されているメッセージ認証情報キャッシュと、
前記認証用VarBindがある場合には、前記認証用VarBind内の前記メッセージ認証情報が前記メッセージ認証情報キャッシュ内に存在するか調べ、前記メッセージ認証情報がメッセージ認証情報キャッシュ内に存在する場合には、リプレイ攻撃と判定し、前記SNMPメッセージ解析処理部に異常終了を返す認証MIBモジュールと
を備える管理対象装置。
【請求項7】
ネットワーク管理プロトコルとしてSNMPv1、SNMPv2cを用いて、管理装置と管理対象装置とがネットワークを介して、SNMPメッセージを送受信するネットワーク管理方法であって、
前記管理装置が、共通鍵を用いて、SETリクエストのメッセージ認証情報を算出する第1の算出ステップと、
前記管理装置が、前記メッセージ認証情報を含む認証用VarBindを作成する作成ステップと、
前記管理装置が、前記認証用VarBindを含むSNMPメッセージを作成するSNMPメッセージ生成ステップと、
前記管理装置が、前記SNMPメッセージ生成ステップで作成したSNMPメッセージとあて先アドレスとからパケットを作成して送信するパケット送信ステップと、
前記管理対象装置が、前記管理装置からのパケットを受信するパケット受信ステップと、
前記管理対象装置が、前記パケットがSETリクエストであれば、認証用VarBindの有無を調べる有無調査ステップと、
前記管理対象装置が、前記認証用VarBindが無い場合には、前記パケットを廃棄する廃棄ステップと、
前記管理対象装置が、前記認証用VarBindがある場合には、前記認証用VarBind内の前記メッセージ認証情報が、既に認証で使用したメッセージ認証情報が記憶されているメッセージ認証情報キャッシュ内に存在するか調べる第1のメッセージ認証情報調査ステップと、
前記管理対象装置が、前記メッセージ認証情報がメッセージ認証情報キャッシュ内に存在する場合には、リプレイ攻撃と判定し、異常終了を返す第1の異常終了ステップと
を有するネットワーク管理方法。
【請求項8】
ネットワーク管理プロトコルとしてSNMPを用いて、ネットワークを介して、管理対象装置とSNMPメッセージを送受信する管理装置のコンピュータに対し、
共通鍵を用いて、SETリクエストのメッセージ認証情報を算出する算出ステップと、
前記メッセージ認証情報を含む認証用VarBindを作成する作成ステップと、
前記認証用VarBindを含むSNMPメッセージを作成するSNMPメッセージ生成ステップと、
前記SNMPメッセージとあて先アドレスとからパケットを作成して送信するパケット送信ステップと、
を実行させるためのコンピュータプログラム。
【請求項9】
ネットワーク管理プロトコルとしてSNMPを用いて、ネットワークを介して、管理装置とSNMPメッセージを送受信する管理対象装置のコンピュータに対し、
前記管理装置からのパケットを受信するパケット受信ステップと、
前記パケットがSETリクエストであれば、認証用VarBindの有無を調べる有無調査ステップと、
前記認証用VarBindが無い場合には、前記パケットを廃棄する廃棄ステップと、
前記認証用VarBindがある場合には、前記認証用VarBind内の前記メッセージ認証情報が、既に認証で使用したメッセージ認証情報が記憶されているメッセージ認証情報キャッシュ内に存在するか調べる第1のメッセージ認証情報調査ステップと、
前記メッセージ認証情報がメッセージ認証情報キャッシュ内に存在する場合には、リプレイ攻撃と判定し、異常終了を返す第1の異常終了ステップと、
を実行させるためのコンピュータプログラム。
【図1】
【図2】
【図3】
【図4】
【図5】
【図6】
【図7】
【図8】
【図9】
【図10】
【図11】
【図12】
【図13】
【図2】
【図3】
【図4】
【図5】
【図6】
【図7】
【図8】
【図9】
【図10】
【図11】
【図12】
【図13】
【公開番号】特開2012−220975(P2012−220975A)
【公開日】平成24年11月12日(2012.11.12)
【国際特許分類】
【出願番号】特願2011−82541(P2011−82541)
【出願日】平成23年4月4日(2011.4.4)
【出願人】(000004237)日本電気株式会社 (19,353)
【Fターム(参考)】
【公開日】平成24年11月12日(2012.11.12)
【国際特許分類】
【出願日】平成23年4月4日(2011.4.4)
【出願人】(000004237)日本電気株式会社 (19,353)
【Fターム(参考)】
[ Back to top ]