(57)【要約】【課題】ＤＮＳフルサービスリゾルバーにおいて、攻撃対象の権威ＤＮＳサーバーへの問い合わせ負荷の増加を抑制させることにより実在しないランダムサブドメインを含む複数の再帰問い合わせクエリーによるＤＮＳ水責め攻撃を防御する方法、プログラム、及び装置を提供する。【解決手段】ＤＮＳフルサービスリゾルバー１０は正規クライアント群５０及び攻撃クライアント群６０から送信された複数の再帰問い合わせクエリーに応じた権威ＤＮＳサーバー７３からの応答内容により得られた応答パケットに含まれる回答セクションの存否により定まる成功数及び失敗数をクライアント毎及びゾーン毎にそれぞれ集計した結果に基づき攻撃クエリー判定を実施し、攻撃クエリーの場合にレート制限により一定の割合だけ反復問い合わせすることなく破棄又は失敗を示す応答コードを返答する。【選択図】図１
2019186659.tif 000002
【特許請求の範囲】
【請求項１】
クライアントにより送信された再帰問い合わせクエリーを受信し権威ＤＮＳサーバーへの反復問い合わせにより名前解決した結果を返答するＤＮＳフルサービスリゾルバーにおいて、受信した複数の再帰問い合わせクエリーに応じた反復問い合わせにより得られた単位時間当たりの権威ＤＮＳサーバーからの権威ある応答のうち、クライアント毎に集計した回答セクションが存在する成功数Ｎｃ、及び一定のタイムアウト時間が経過しても応答がない場合を含む回答セクションが存在しない失敗数Ｆｃをクライアント毎に保持する記憶手段に記憶するステップと、定数倍及び平行移動したランプ関数にＮｃを代入した値をＦｃが超過する場合に一定の攻撃判定期限が経過するまで該クライアントは攻撃クライアントであると判定するステップと、該攻撃判定を前記したクライアント毎に保持する記憶手段に記憶するステップと、受信した複数の再帰問い合わせクエリーに応じた反復問い合わせにより得られた単位時間当たりの権威ＤＮＳサーバーからの権威ある応答のうち、権威ＤＮＳサーバーのゾーン毎に集計した回答セクションが存在する成功数Ｎｚ、及び一定のタイムアウト時間が経過しても応答がない場合を含む回答セクションが存在しない失敗数Ｆｚをゾーン毎に保持する記憶手段に記憶するステップと、定数倍及び平行移動したランプ関数にＮｚを代入した値をＦｚが超過する場合に一定の攻撃判定期限が経過するまで該ゾーンは攻撃ゾーンであると判定するステップと、該攻撃判定を前記したゾーン毎に保持する記憶手段に記憶するステップと、受信した再帰問い合わせクエリーを送信したクライアントを前記したクライアント毎の記憶手段から検索した結果が攻撃クライアントであり、かつ該クエリーのゾーンを前記したゾーン毎の記憶手段から検索した結果が攻撃ゾーンである場合に該クエリーを攻撃クエリーであると判定するステップと、該クエリーが攻撃クエリーであると判定された場合にレート制限により一定の割合だけ反復問い合わせすることなく破棄又は失敗を示す応答コードを返答するステップとを有することを特徴とする実在しないランダムサブドメインを含む複数の再帰問い合わせクエリーによるＤＮＳ水責め攻撃を防御する方法。
【請求項２】
コンピューターに請求項１記載の方法を実行させるためのプログラムを含むことを特徴とするＤＮＳフルサービスリゾルバープログラム。
【請求項３】
請求項２記載のプログラムを内蔵することを特徴とするＤＮＳフルサービスリゾルバー装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ＤＮＳフルサービスリゾルバーにおいて、実在しないランダムサブドメインを含む複数の再帰問い合わせクエリーによる水責め攻撃を受けても攻撃対象の権威ＤＮＳサーバーへの問い合わせ負荷の増加を抑制することにより水責め攻撃を防御する方法、ＤＮＳフルサービスリゾルバープログラム、及びＤＮＳフルサービスリゾルバー装置に関する。
【背景技術】
【０００２】
ＤＮＳ水責め攻撃とは、西暦２０１４年初頭から世界的に観測されるようになったボットネット及びボット感染機器を含む複数のクライアントから実在しないランダムサブドメインを含む再帰問い合わせクエリーを複数のＤＮＳフルサービスリゾルバーに送信することにより攻撃対象の権威ＤＮＳサーバーへの複数の問い合わせを発生させるＤＤｏＳ攻撃の一種である。
【０００３】
従来ＤＮＳフルサービスリゾルバーで実施可能な対策として、ゾーン毎又は権威ＤＮＳサーバー毎の問い合わせ制限（非特許文献１参照）及びブルームフィルターを利用したドメイン名毎の問い合わせ制限（非特許文献２参照）が考案され実現されている。
【０００４】
ここでゾーンとは、再帰問い合わせクエリーに含まれる質問ドメイン名を反復問い合わせにより名前解決する処理において、ＤＮＳルートサーバーを最上位として権威が委任された権威ＤＮＳサーバーが権威ある応答内容を返答した場合にその委任されたドメイン名のことであり、応答パケットの権威セクションに含まれるＮＳリソースレコードの所有者ドメイン名に設定される。
【０００５】
ゾーン毎の問い合わせ制限は、この権威が委任された権威ＤＮＳサーバーが管理するゾーン毎に権威ＤＮＳサーバーへの問い合わせを制限する。
【０００６】
権威ＤＮＳサーバー毎の問い合わせ制限は、再帰問い合わせクエリーに含まれる質問ドメイン名を反復問い合わせにより名前解決する処理において、最終的に権威ある応答が得られた権威ＤＮＳサーバー毎への問い合わせを制限する。
【０００７】
ブルームフィルターを利用したドメイン名毎の問い合わせ制限は、過去一定時間まで実在が確認された質問ドメイン名をブルームフィルターで記憶し、名前解決に２秒以上が経過した再帰問い合わせクエリーの個数が１００個を越えたゾーンを対象とし、ブルームフィルターに一致しないドメイン名を含む再帰問い合わせクエリーをレート制限する。
【先行技術文献】
【非特許文献】
【０００８】
【非特許文献１】末松慶文、“見抜く力を！データを見て対策を考える（フルリゾルバ）”、ｐ．１７〜２２、［ｏｎｌｉｎｅ］、平成２８年１２月１日、日本ネットワークインフォメーションセンター、［平成３０年４月３日検索］、インターネット〈URL：https://www.nic.ad.jp/ja/materials/iw/2016/proceedings/d3/d3-2-suematsu.pdf〉
【非特許文献２】東大亮、“ブルームフィルタを利用したランダムサブドメイン攻撃からのＤＮＳキャッシュサーバの防御”、ｐ．７〜１５、［ｏｎｌｉｎｅ］、平成２６年１１月２２日、スライドシェア、［平成３０年４月３日検索］、インターネット〈URL：https://www.slideshare.net/hdais/ss-41897131〉
【発明の概要】
【発明が解決しようとする課題】
【０００９】
しかしながら従来の方法はドメイン名毎、ゾーン毎、又は権威ＤＮＳサーバー毎に再帰問い合わせクエリーを制限していたため、攻撃の原因となる再帰問い合わせクエリーを発生する攻撃クライアントだけではなく攻撃対象のゾーン、又は過去一定時間まで実在が確認されなかった実在するドメイン名を含む再帰問い合わせクエリーを発生する正規クライアントも一律に制限される問題があった。
【００１０】
更にゾーンに収容されるドメイン名の数はゾーンにより異なり、ゾーン頂点のドメイン名だけしか存在しない１から、サブドメイン形式のブログサービスのように加入したユーザー数分存在する場合があり、効果的なゾーン毎の規制値を決定することが難しく、運用で規制値をゾーン毎または権威ＤＮＳサーバー毎に細かく設定することが非現実的であるという問題があった。
【００１１】
そこで本発明は、ゾーンに収容されるドメイン名の数による影響を緩和し、正規クライアントへの制限を抑制し、ＤＮＳ水責め攻撃の原因となる攻撃クエリーを効果的に制限する方法、ＤＮＳフルサービスリゾルバープログラム、及びＤＮＳフルサービスリゾルバー装置を提供することを目的とする。
【課題を解決するための手段】
【００１２】
ＤＮＳフルサービスリゾルバーがＤＮＳ水責め攻撃を受けていない場合にゾーンに収容されるドメイン名の数が多いほど実在しないドメイン名の再帰問い合わせクエリー数もまた多くなる現象に着目し、まずは攻撃クライアントを特定するため、ＤＮＳフルサービスリゾルバーが受信した複数の再帰問い合わせクエリーに応じた反復問い合わせにより得られた単位時間当たりの権威ＤＮＳサーバーからの権威ある応答のうち、クライアント毎に集計した回答セクションが存在する成功数Ｎｃ、及び一定のタイムアウト時間が経過しても応答がない場合を含む回答セクションが存在しない失敗数Ｆｃをクライアント毎に保持する記憶手段に記憶し、定数倍及び平行移動したランプ関数にＮｃを代入した値をＦｃが超過する場合に一定の攻撃判定期限が経過するまで該クライアントは攻撃クライアントであると判定し、該攻撃判定を前記したクライアント毎に保持する記憶手段に記憶する。
【００１３】
次に攻撃対象となる攻撃ゾーンを特定するため、上記のクライアント毎の判定をゾーン毎に対しても実施する。すなわち、ＤＮＳフルサービスリゾルバーが受信した複数の再帰問い合わせクエリーに応じた反復問い合わせにより得られた単位時間当たりの権威ＤＮＳサーバーからの権威ある応答のうち、権威ＤＮＳサーバーのゾーン毎に集計した回答セクションが存在する成功数Ｎｚ、及び一定のタイムアウト時間が経過しても応答がない場合を含む回答セクションが存在しない失敗数Ｆｚをゾーン毎に保持する記憶手段に記憶し、定数倍及び平行移動したランプ関数にＮｚを代入した値をＦｚが超過する場合に一定の攻撃判定期限が経過するまで該ゾーンは攻撃ゾーンであると判定し、該攻撃判定を前記したゾーン毎に保持する記憶手段に記憶する。
【００１４】
受信した再帰問い合わせクエリーを送信したクライアントを前記したクライアント毎の記憶手段から検索した結果が攻撃クライアントであり、かつ該クエリーのゾーンを前記したゾーン毎の記憶手段から検索した結果が攻撃ゾーンである場合に該クエリーを攻撃クエリーであると判定する。該クエリーが攻撃クエリーであると判定された場合にレート制限により一定の割合だけ反復問い合わせすることなく破棄又は失敗を示す応答コードを返答する。
【発明の効果】
【００１５】
本発明によれば、実在しないランダムサブドメインを含む複数の再帰問い合わせクエリーによるＤＮＳ水責め攻撃を受けても問い合わせ先の権威ＤＮＳサーバーへの問い合わせ負荷の増加を抑制することにより水責め攻撃を防御し、攻撃とは無関係のクライアントからの再帰問い合わせクエリー、及び攻撃とは無関係のゾーンに収容されるドメイン名を含む再帰問い合わせクエリーは制限なく反復問い合わせが実行され、ＤＮＳフルサービスリゾルバーのサービスを継続して提供することができる。
【図面の簡単な説明】
【００１６】
【図１】図１は実施形態に係るＤＮＳ水責め攻撃を防御する方法を実施するシステム構成の一例を示すブロック図である。
【図２】図２は実施形態に係る攻撃クライアントを判定するための定数倍及び平行移動したランプ関数のグラフを示す図である。
【図３】図３は実施形態に係る攻撃ゾーンを判定するための定数倍及び平行移動したランプ関数のグラフを示す図である。
【図４】図４は実施形態に係るキャッシュを保持する記憶手段に関する一例を示すデータフロー図である。
【図５】図５は実施形態に係るクライアント毎に保持する記憶手段及びゾーン毎に保持する記憶手段に関するデータフロー図である。
【図６】図６は実施形態に係るＤＮＳ水責め攻撃を防御するＤＮＳフルサービスリゾルバーのフローチャートを示す図である。
【図７】図７は実施形態に係る更新処理サブルーチンのフローチャートを示す図である。
【図８】図８は実施形態に係る判定処理サブルーチンのフローチャートを示す図である。
【図９】図９は実施形態に係るＤＮＳ水責め攻撃を防御するＤＮＳフルサービスリゾルバー装置を示す図である。
【発明を実施するための形態】
【００１７】
図１は実施形態に係るＤＮＳ水責め攻撃を防御する方法を実施するシステム構成の一例を示すブロック図である。ＤＮＳフルサービスリゾルバー１０は、通信部１１、制御部１２、及び記憶部１３を備える。
【００１８】
ＤＮＳフルサービスリゾルバー１０は、正規クライアント群５０に含まれる複数の正規クライアントが送信する正規クエリー、及び攻撃クライアント群６０に含まれる複数の攻撃クライアントが送信する攻撃クエリーを受信する。正規クエリー及び攻撃クエリーは、ＤＮＳパケットのヘッダーセクションに含まれるＲＤフラグが１に設定された再帰問い合わせクエリーを対象とする。ＲＤフラグが０に設定された非再帰問い合わせクエリーは反復問い合わせをすることはないため非対象とする。
【００１９】
通信部１１は、ＤＮＳフルサービスリゾルバー１０と、正規クライアント群５０、攻撃クライアント群６０、ＤＮＳルートサーバー７１、トップレベルドメインの権威ＤＮＳサーバー７２、及びゾーンの権威ＤＮＳサーバー７３の間のそれぞれのネットワーク経路を経由してＤＮＳパケットを受信及び送信する。
【００２０】
記憶部１３は、反復問い合わせの結果として得られるドメイン名毎のリソースレコードを最長でもＴＴＬ時間まで記憶するキャッシュ３１を保持する記憶手段、クライアント毎のＮｃ、Ｆｃ、及び攻撃判定３２を保持する記憶手段、並びにゾーン毎のＮｚ、Ｆｚ、及び攻撃判定３３を保持する記憶手段を備える。
【００２１】
クライアント毎の保持単位は、例えばクライアントのソースＩＰｖ４アドレス毎としても良いし、ソースＩＰｖ６アドレスのプレフィックス毎としても良い。ゾーン毎の保持単位はＤＮＳプロトコルの仕様に基づき大文字と小文字の相違は区別せずに同一のものとみなす。
【００２２】
キャッシュ３１はＤＮＳフルサービスリゾルバー１０が通常備えるものであるが、本発明の実施に必要不可欠なものではない。正規クライアント群５０及び攻撃クライアント群６０に属するクライアントから受信した再帰問い合わせクエリー及びキャッシュ３１の内容に応じて、ＤＮＳルートサーバー７１、トップレベルドメインの権威ＤＮＳサーバー７２、及びゾーンの権威ＤＮＳサーバー７３に対して送信した反復問い合わせクエリーの応答内容をキャッシュする。
【００２３】
クライアント毎のＮｃ、Ｆｃ、及び攻撃判定３２、並びにゾーン毎のＮｚ、Ｆｚ、及び攻撃判定３３は本発明に固有のものであり、更新部２５により更新され、判定部２２により参照される。
【００２４】
制御部１２は、受信部２１、判定部２２、制限部２３、反復問い合わせ部２４、更新部２５、及び送信部２７の各処理手順を備える。
【００２５】
受信部２１は、通信部１１からＤＮＳパケットを受信し、再帰問い合わせクエリーであることを確認し、再帰問い合わせクエリーに含まれる質問ドメイン名に最長一致するドメイン名をキャッシュ３１から検索し、キャッシュに回答が有るか否かを判断する。
【００２６】
判定部２２は、クライアント毎のＮｃ、Ｆｃ、及び攻撃判定３２、並びにゾーン毎のＮｚ、Ｆｚ、及び攻撃判定３３の内容から受信部２１により受信した再帰問い合わせクエリーが攻撃クエリーであるか否かを判断する。
【００２７】
制限部２３は、判定部２２により再帰問い合わせクエリーが攻撃クエリーであると判定された場合にレート制限により、反復問い合わせを実行する代わりに再帰問い合わせクエリーを破棄するか、又は失敗を意味する応答コード（例えばＳｅｒｖＦａｉｌ）を応答パケットに設定する。
【００２８】
反復問い合わせ部２４は、ＤＮＳプロトコルの仕様に基づきキャッシュ３１の内容に応じてＤＮＳルートサーバー７１、トップレベルドメインの権威ＤＮＳサーバー７２、及びゾーンの権威ＤＮＳサーバー７３に対して反復問い合わせを実行する。
【００２９】
更新部２５は、反復問い合わせを実行して得た応答パケットに含まれる回答セクション、クライアント、及びゾーンから、クライアント毎のＮｃ、Ｆｃ、及び攻撃判定３２、並びにゾーン毎のＮｚ、Ｆｚ、及び攻撃判定３３の内容を更新する。
【００３０】
図２は実施形態に係る攻撃クライアントを判定するための定数倍及び平行移動したランプ関数のグラフを示す図であり、単位時間（例えば１０秒）当たりのクライアント毎に集計した回答セクションが存在する成功数Ｎｃ、及び単位時間当たりのクライアント毎に集計した、一定のタイムアウト時間（例えば５秒）経過しても応答がない場合を含む回答セクションが存在しない失敗数Ｆｃから、Ａｃで定数倍し、水平軸に（Ｔｃ−Ｂｃ）／Ａｃ、垂直軸にＴｃだけ平行移動したランプ関数によりクライアントを攻撃クライアントと正規クライアントに分けることを示す。ＦｃがＡｃ×Ｎｃ＋Ｂｃ及びＴｃを超過する場合に攻撃クライアント、それ以外の場合に正規クライアントと判定する。該関数のパラメーターであるＡｃ、Ｂｃ、及びＴｃは単位時間当たりの最繁時における水責め攻撃を受けていない場合のＮｃ及びＦｃの関係性から決定する。
【００３１】
図３は実施形態に係る攻撃ゾーンを判定するための定数倍及び平行移動したランプ関数のグラフを示す図であり、単位時間（例えば１０秒）当たりのゾーン毎に集計した回答セクションが存在する成功数Ｎｚ、及び単位時間当たりのゾーン毎に集計した、一定のタイムアウト時間（例えば５秒）経過しても応答がない場合を含む回答セクションが存在しない失敗数Ｆｚから、Ａｚで定数倍し、水平軸に（Ｔｚ−Ｂｚ）／Ａｚ、垂直軸にＴｚだけ平行移動したランプ関数によりゾーンを攻撃ゾーンと正規ゾーンに分けることを示す。ＦｚがＡｚ×Ｎｚ＋Ｂｚ及びＴｚを超過する場合に攻撃ゾーン、それ以外の場合に正規ゾーンと判定する。該関数のパラメーターであるＡｚ、Ｂｚ、及びＴｚは単位時間当たりの最繁時における水責め攻撃を受けていない場合のＮｚ及びＦｚの関係性から決定する。
【００３２】
図４は実施形態に係るキャッシュを保持する記憶手段に関する一例を示すデータフロー図であり、キャッシュを保持する記憶手段３１に関するデータの入出力と処理の関係を示す。クライアント４２、ゾーン４５、及びクライアントに返答する応答パケット４６を得ることが可能であれば、他のデータフローであっても良い。
【００３３】
受信処理２１０はクライアントが送信した再帰問い合わせクエリー４１を受信し、クライアント４２を得るとともに、クライアントが送信した再帰問い合わせクエリー４１のＤＮＳパケットに含まれる質問セクションの第１項目から質問ドメイン名４３を、質問セクションの第２項目から質問リソースレコードタイプ４４を得る。質問セクションの第３項目から得られる質問クラスはグローバルなインターネットを示すＩＮを対象とする。
【００３４】
最長一致検索２１１は質問ドメイン名４３に最長一致するドメイン名をキャッシュ３１から検索することによりゾーン４５を得る。もしキャッシュ３１が空であるならばゾーン４５をルートドメインとする。
【００３５】
反復問い合わせ２４０はゾーン４５及びキャッシュ３１により最初に問い合わせる権威ＤＮＳサーバーを決定し、その権威ＤＮＳサーバーに反復問い合わせクエリーを送信し、受信した応答内容をキャッシュ３１に格納し、もし応答内容が委任応答であれば権威ＤＮＳサーバーを委任先の権威ＤＮＳサーバーに改め、権威ある応答内容が得られるまで繰り返し処理し、委任されたドメイン名からゾーン４５を確定させ、クライアントに返答する応答パケット４６を得る。
【００３６】
図５は実施形態に係るゾーン毎に保持する記憶手段及びクライアント毎に保持する記憶手段に関するデータフロー図であり、ゾーン毎のＮｚ、Ｆｚ、及び攻撃判定を保持する記憶手段３２、並びにクライアント毎にＮｃ、Ｆｃ、及び攻撃判定を保持する記憶手段３３に関するデータの入出力と処理の関係を示す。
【００３７】
更新処理２５０はクライアント４２、ゾーン４５、及び応答パケット４６を参照し、クライアント毎に保持する記憶手段３２にＮｃ、Ｆｃ、及び攻撃判定を、ゾーン毎に保持する記憶手段３３にＮｚ、Ｆｚ、及び攻撃判定を、それぞれ記憶する。
【００３８】
判定処理２２０はクライアント４２、ゾーン４５、ゾーン毎のＮｚ、Ｆｚ、及び攻撃判定を保持する記憶手段に保持する記憶手段３２、並びにクライアント毎のＮｃ、Ｆｃ、及び攻撃判定を保持する記憶手段３３を参照し攻撃クエリー判定を得る。
【００３９】
レート制限２３０は攻撃クエリー判定が黒の場合に一定の割合（例えば確率９０％）だけ反復問い合わせすることなく破棄又は失敗を示す応答コード（例えばＳｅｒｖＦａｉｌ）を返答するために参照される破棄又は失敗の指示４８を得る。
【００４０】
図６は実施形態に係るＤＮＳ水責め攻撃を防御するＤＮＳフルサービスリゾルバーのフローチャートを示す図であり、開始２００から始まり、受信処理２１０及び最長一致検索２１１を実行する。キャッシュに回答有の判断２１２が真の場合にはキャッシュ応答作成２４１及び送信処理２７０を実行し、終了２８０に至る。キャッシュに回答有の判断２１２が偽の場合には判定処理２２０を呼び出し、攻撃クエリー判定は白の判断２２６が真の場合には反復問い合わせ２４０を実行し、更新処理２５０を呼び出し、送信処理２７０を実行し、終了２８０に至る。攻撃クエリー判定は白の判断２２６が偽の場合にはレート制限２３０を実行し、破棄又は失敗の指示の判断２３１が真の場合には破棄又は失敗２３２及び送信処理２７０を実行し、終了２８０に至る。破棄又は失敗の指示の判断２３１が偽の場合には攻撃クエリー判定は白の判断２２６が真の場合と同様に、反復問い合わせ２４０を実行し、更新処理２５０を呼び出し、送信処理２７０を実行し、終了２８０に至る。
【００４１】
図７は実施形態に係る更新処理サブルーチンのフローチャートを示す図であり、更新処理２５０から始まり、最初に単位時間当たりのＮｃ、Ｎｚ、Ｆｃ、及びＦｚを集計する。単位時間が経過の判断２５１が真の場合にはＮｃ、Ｎｚ、Ｆｃ、及びＦｚを零に設定２５２を実行する。反復問い合わせ２４０により得られた応答パケット４６に含まれる回答セクションが存在の判断２５３が真の場合にはＮｃ及びＮｚを１加算２５４を実行する。回答セクションが存在の判断２５３が偽の場合にはＦｃ及びＦｚを１加算２５５を実行する。
【００４２】
攻撃判定期限内に攻撃クライアントの判断２５６が真の場合、すなわち過去にクライアント毎のＮｃ及びＦｃから図２のグラフにより攻撃クライアントであると判定されたことがあり、かつ攻撃クライアントであると判定された最後の時刻を起点として現在の時刻が攻撃判定期限（例えば１分）内にあるならば、クライアント毎の攻撃判定を黒に設定２５７を実行する。攻撃判定期限内に攻撃ゾーンの判断２５６が偽の場合にはクライアント毎の攻撃判定を白に設定２５８を実行する。
【００４３】
攻撃判定期限内に攻撃ゾーンの判断２５９が真の場合、すなわち過去にゾーン毎のＮｚ及びＦｚから図３のグラフにより攻撃ゾーンであると判定されたことがあり、かつ攻撃ゾーンであると判定された最後の時刻を起点として現在の時刻が攻撃判定期限（例えば１分）内にあるならば、ゾーン毎の攻撃判定を黒に設定２６０を実行し、呼び出し元に戻る２６２に至る。攻撃判定期限内に攻撃ゾーンの判断２５９が偽の場合にはゾーン毎の攻撃判定を白に設定２６１を実行し、呼び出し元に戻る２６２に至る。
【００４４】
図８は実施形態に係る判定処理サブルーチンのフローチャートを示す図であり、判定処理２２０から始まり、クライアント毎の攻撃判定は黒の判断２２１が偽の場合には攻撃クエリー判定を白に設定２２４を実行し、呼び出し元に戻る２２５に至る。クライアント毎の攻撃判定は黒の判断２２１が真であり、ゾーン毎の攻撃判定は黒の判断２２２が偽の場合には攻撃クエリー判定を白に設定２２４を実行し、呼び出し元に戻る２２５に至る。ゾーン毎の攻撃判定は黒の判断２２２が真の場合には攻撃クエリー判定を黒に設定２２３を実行し、呼び出し元に戻る２２５に至る。
【００４５】
図９は実施形態に係るＤＮＳ水責め攻撃を防御するＤＮＳフルサービスリゾルバー装置８０の一例を示す図であり、ネットワークインターフェイス８１、中央演算処理装置８２、主記憶装置８３、不揮発性記憶装置８４、ストレージコントローラー８５の各部はバスにより接続されている。
【００４６】
ストレージ８６はストレージコントローラー８５に接続され、例えばハードディスクドライブ（ＨＤＤ）や、ソリッドステートドライブ（ＳＳＤ）により実現される。ストレージ８６に格納された基本ソフト（ＯＳ）８８は、ＤＮＳフルサービスリゾルバー装置８０が起動時に不揮発性記憶装置８４に記憶されたブートストラップローダーにより主記憶装置８３にロードされ、基本ソフト（ＯＳ）８８が備える機能の提供を開始する。
【００４７】
上記実施形態において説明したＤＮＳ水責め攻撃を防御するＤＮＳフルサービスリゾルバー１０はレート制限２３０において破棄又は失敗の指示４８を確率的に決定する必要があるが、疑似乱数生成法を利用することにより確定的に計算可能となり、ＤＮＳフルサービスリゾルバー１０もまた確定的に計算可能となることから、コンピューターが実行可能な言語で記述されたプログラムとして作成することができる。
【００４８】
このようにして作成されたＤＮＳフルサービスリゾルバープログラム８７は、コンピューターの機能を有するＤＮＳフルサービスリゾルバー装置８０が起動時に基本ソフト（ＯＳ）８８が備えるサービス自動起動の機能により主記憶装置８３にロードされ、中央演算処理装置８２が実行することにより上記実施形態と同様の効果が得られる。
【００４９】
ＤＮＳフルサービスリゾルバープログラム８７は、受信部８７１及び送信部８７５を含むＤＳＯモジュール対応ＤＮＳサーバー主プログラム８７０、クライアントＤＳＯモジュール８７２、判定制限更新ＤＳＯモジュール８７３、並びにキャッシュＤＳＯモジュール８７４を備える。
【００５０】
クライアントＤＳＯモジュール８７２、判定制限更新ＤＳＯモジュール８７３、及びキャッシュＤＳＯモジュール８７４は、ＤＳＯモジュール対応ＤＮＳサーバー主プログラム８７０が呼び出し可能な統一されたインターフェイスを有する動的共有オブジェクトとして実現され、個別のオブジェクトファイルとしてストレージ８６に格納され、ＤＳＯモジュール対応ＤＮＳサーバー主プログラム８７０が起動時に主記憶装置８３にロードされ、動的リンクされ一体となり、ＤＮＳフルサービスリゾルバープログラム８７として機能する。
【００５１】
従来のＤＮＳフルサービスリゾルバープログラムは最初から一体となったプログラム構成を採用している。本発明に係る更新処理２５０で必要なデータは前段で取得するクライアント４２、中段の反復問い合わせ２４０で確定するゾーン４５、後段の応答パケット４６のように参照するデータが処理の最初から最後まで分散しているため、従来のＤＮＳフルサービスリゾルバープログラムで本発明を実現することは容易ではなかった。
【００５２】
本実施形態では、ＤＳＯモジュール対応ＤＮＳサーバー主プログラム８７０とＤＳＯモジュールの間のインターフェイスであるＤＳＯモジュールインターフェイスにより定義されたＤＮＳコンテキストにクライアント４２、ゾーン４５、及び応答パケット４６が格納されているため、本発明に係る判定制限更新ＤＳＯモジュール８７３から容易に参照することができる。
【００５３】
ＤＳＯモジュールインターフェイスは各種の状況に応じたハンドラー関数のインターフェイスをも備える。ＤＳＯモジュール対応ＤＮＳサーバー主プログラム８７０は各ＤＳＯモジュールに備えられたｑｕｅｒｙハンドラー関数を順番に呼び出し、ｑｕｅｒｙハンドラー関数は受信部８７１により受信したＤＮＳパケットを参照して応答パケットを作成することを基本とする。
【００５４】
クライアントＤＳＯモジュール８７２のｑｕｅｒｙハンドラー関数は再帰問い合わせクエリーを送信したクライアントを許可しない場合に破棄又は失敗を示す応答コード（例えばＳｅｒｖＦａｉｌ）を応答する。キャッシュＤＳＯモジュール８７４のｑｕｅｒｙハンドラー関数は反復問い合わせ部２４を実行して応答パケットを作成する。
【００５５】
判定制限更新ＤＳＯモジュール８７３は、判定部２２、制限部２３、及び更新部２５を備える。判定制限更新ＤＳＯモジュール８７３のｑｕｅｒｙハンドラー関数は判定部２２及び制限部２３を実行する。破棄又は失敗２３２が実行された場合にＤＳＯモジュールインターフェイスに含まれる結果コードを名前解決済みであると設定することにより、後段のキャッシュＤＳＯモジュール８７４の反復問い合わせ処理を阻止する。更に破棄又は失敗２３２が実行されない場合に更新処理２５０の実行が必要であることを記憶しておく。
【００５６】
ＤＳＯモジュール対応ＤＮＳサーバー主プログラム８７０が各ＤＳＯモジュールに備えられたｑｕｅｒｙハンドラー関数の呼び出しを完了させると、送信部８７５は応答パケット４６をクライアントに返答する。
【００５７】
送信部８７５の処理が完了するとＤＳＯモジュール対応ＤＮＳサーバー主プログラム８７０はｐｏｓｔハンドラー関数を順番に呼び出すことにより事後処理を開始する。
【００５８】
クライアントＤＳＯモジュール８７２及びキャッシュＤＳＯモジュール８７４が備えるｐｏｓｔハンドラー関数は何も処理をしない。
【００５９】
判定制限更新ＤＳＯモジュール８７３のｐｏｓｔハンドラー関数は更新部２５を実行する。送信部８７５はクライアント４２、ゾーン４５、及び応答パケット４６を変更しないため更新部２５と実行順序の交換が可能である。判定制限更新ＤＳＯモジュール８７３のｑｕｅｒｙハンドラー関数で記憶された更新処理２５０の実行が必要である場合だけ更新処理２５０を実行する。
【産業上の利用可能性】
【００６０】
本発明は、企業、学校、官公庁等の組織で運用されるＤＮＳフルサービスリゾルバー及び電気通信事業者が加入者に提供するＤＮＳフルサービスリゾルバーのうち、ユーザー数が数万を越える大規模なＤＮＳフルサービスリゾルバーに利用でき、ＤＮＳ水責め攻撃を受けた場合に有用である。
【符号の説明】
【００６１】
１０  ＤＮＳフルサービスリゾルバー
１１  通信部
１２  制御部
１３  記憶部
２１  受信部
２２  判定部
２３  制限部
２４  反復問い合わせ部
２５  更新部
２７  送信部
３１  キャッシュを保持する記憶手段
３２  クライアント毎のＮｃ、Ｆｃ、及び攻撃判定を保持する記憶手段
３３  ゾーン毎のＮｚ、Ｆｚ、及び攻撃判定を保持する記憶手段
４１  クライアントから受信した再帰問い合わせクエリー
４２  クライアント
４３  質問ドメイン名
４４  質問リソースレコードタイプ
４５  ゾーン
４６  クライアントへ返答する応答パケット
４７  攻撃クエリー判定
４８  破棄又は失敗の指示
５０  正規クライアント群
５１  正規クライアントＡ
５２  正規クライアントＢ
５３  正規クライアントＣ
６０  攻撃クライアント群
６１  攻撃クライアントＸ
６２  攻撃クライアントＹ
６３  攻撃クライアントＺ
７１  ＤＮＳルートサーバー
７２  トップレベルドメインの権威ＤＮＳサーバー
７３  ゾーンの権威ＤＮＳサーバー
８０  ＤＮＳフルサービスリゾルバー装置
８１  ネットワークインターフェイス
８２  中央演算処理装置
８３  主記憶装置
８４  不揮発性記憶装置
８５  ストレージコントローラー
８６  ストレージ
８７  ＤＮＳフルサービスリゾルバープログラム
８８  基本ソフト（ＯＳ）
【図１】
2019186659.tif 000003
【図２】
2019186659.tif 000004
【図３】
2019186659.tif 000005
【図４】
2019186659.tif 000006
【図５】
2019186659.tif 000007
【図６】
2019186659.tif 000008
【図７】
2019186659.tif 000009
【図８】
2019186659.tif 000010
【図９】
2019186659.tif 000011