IP Force 特許公報掲載プロジェクト 2022.1.31 β版

知財求人 - 知財ポータルサイト「IP Force」

▶ 河之邊 浩の特許一覧

特許7018810DNS水責め攻撃を防御する方法、プログラム、及び装置
<>
  • 特許-DNS水責め攻撃を防御する方法、プログラム、及び装置 図1
  • 特許-DNS水責め攻撃を防御する方法、プログラム、及び装置 図2
  • 特許-DNS水責め攻撃を防御する方法、プログラム、及び装置 図3
  • 特許-DNS水責め攻撃を防御する方法、プログラム、及び装置 図4
  • 特許-DNS水責め攻撃を防御する方法、プログラム、及び装置 図5
  • 特許-DNS水責め攻撃を防御する方法、プログラム、及び装置 図6
  • 特許-DNS水責め攻撃を防御する方法、プログラム、及び装置 図7
  • 特許-DNS水責め攻撃を防御する方法、プログラム、及び装置 図8
  • 特許-DNS水責め攻撃を防御する方法、プログラム、及び装置 図9
< >
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2022-02-03
(45)【発行日】2022-02-14
(54)【発明の名称】DNS水責め攻撃を防御する方法、プログラム、及び装置
(51)【国際特許分類】
   H04L 12/66 20060101AFI20220204BHJP
   H04L 12/22 20060101ALI20220204BHJP
【FI】
H04L12/66
H04L12/22
【請求項の数】 3
(21)【出願番号】P 2018072799
(22)【出願日】2018-04-05
(65)【公開番号】P2019186659
(43)【公開日】2019-10-24
【審査請求日】2021-03-30
(73)【特許権者】
【識別番号】305010355
【氏名又は名称】河之邊 浩
(72)【発明者】
【氏名】河之邊 浩
【審査官】野元 久道
(56)【参考文献】
【文献】特表2017-534110(JP,A)
【文献】特開2007-251282(JP,A)
【文献】米国特許出願公開第2018/0351976(US,A1)
【文献】米国特許出願公開第2013/0263259(US,A1)
(58)【調査した分野】(Int.Cl.,DB名)
H04L 12/00
(57)【特許請求の範囲】
【請求項1】
クライアントにより送信された再帰問い合わせクエリーを受信し権威DNSサーバーへの反復問い合わせにより名前解決した結果を返答するDNSフルサービスリゾルバーにおいて、受信した複数の再帰問い合わせクエリーに応じた反復問い合わせにより得られた単位時間当たりの権威DNSサーバーからの権威ある応答のうち、クライアント毎に集計した回答セクションが存在する成功数Nc、及び一定のタイムアウト時間が経過しても応答がない場合を含む回答セクションが存在しない失敗数Fcをクライアント毎に保持する記憶手段に記憶するステップと、定数倍及び平行移動したランプ関数にNcを代入した値をFcが超過する場合に一定の攻撃判定期限が経過するまで該クライアントは攻撃クライアントであると判定するステップと、該攻撃判定を前記したクライアント毎に保持する記憶手段に記憶するステップと、受信した複数の再帰問い合わせクエリーに応じた反復問い合わせにより得られた単位時間当たりの権威DNSサーバーからの権威ある応答のうち、権威DNSサーバーのゾーン毎に集計した回答セクションが存在する成功数Nz、及び一定のタイムアウト時間が経過しても応答がない場合を含む回答セクションが存在しない失敗数Fzをゾーン毎に保持する記憶手段に記憶するステップと、定数倍及び平行移動したランプ関数にNzを代入した値をFzが超過する場合に一定の攻撃判定期限が経過するまで該ゾーンは攻撃ゾーンであると判定するステップと、該攻撃判定を前記したゾーン毎に保持する記憶手段に記憶するステップと、受信した再帰問い合わせクエリーを送信したクライアントを前記したクライアント毎の記憶手段から検索した結果が攻撃クライアントであり、かつ該クエリーのゾーンを前記したゾーン毎の記憶手段から検索した結果が攻撃ゾーンである場合に該クエリーを攻撃クエリーであると判定するステップと、該クエリーが攻撃クエリーであると判定された場合にレート制限により一定の割合だけ反復問い合わせすることなく破棄又は失敗を示す応答コードを返答するステップとを有することを特徴とする実在しないランダムサブドメインを含む複数の再帰問い合わせクエリーによるDNS水責め攻撃を防御する方法。
【請求項2】
コンピューターに請求項1記載の方法を実行させるためのプログラムを含むことを特徴とするDNSフルサービスリゾルバープログラム。
【請求項3】
請求項2記載のプログラムを内蔵することを特徴とするDNSフルサービスリゾルバー装置。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、DNSフルサービスリゾルバーにおいて、実在しないランダムサブドメインを含む複数の再帰問い合わせクエリーによる水責め攻撃を受けても攻撃対象の権威DNSサーバーへの問い合わせ負荷の増加を抑制することにより水責め攻撃を防御する方法、DNSフルサービスリゾルバープログラム、及びDNSフルサービスリゾルバー装置に関する。
【背景技術】
【0002】
DNS水責め攻撃とは、西暦2014年初頭から世界的に観測されるようになったボットネット及びボット感染機器を含む複数のクライアントから実在しないランダムサブドメインを含む再帰問い合わせクエリーを複数のDNSフルサービスリゾルバーに送信することにより攻撃対象の権威DNSサーバーへの複数の問い合わせを発生させるDDoS攻撃の一種である。
【0003】
従来DNSフルサービスリゾルバーで実施可能な対策として、ゾーン毎又は権威DNSサーバー毎の問い合わせ制限(非特許文献1参照)及びブルームフィルターを利用したドメイン名毎の問い合わせ制限(非特許文献2参照)が考案され実現されている。
【0004】
ここでゾーンとは、再帰問い合わせクエリーに含まれる質問ドメイン名を反復問い合わせにより名前解決する処理において、DNSルートサーバーを最上位として権威が委任された権威DNSサーバーが権威ある応答内容を返答した場合にその委任されたドメイン名のことであり、応答パケットの権威セクションに含まれるNSリソースレコードの所有者ドメイン名に設定される。
【0005】
ゾーン毎の問い合わせ制限は、この権威が委任された権威DNSサーバーが管理するゾーン毎に権威DNSサーバーへの問い合わせを制限する。
【0006】
権威DNSサーバー毎の問い合わせ制限は、再帰問い合わせクエリーに含まれる質問ドメイン名を反復問い合わせにより名前解決する処理において、最終的に権威ある応答が得られた権威DNSサーバー毎への問い合わせを制限する。
【0007】
ブルームフィルターを利用したドメイン名毎の問い合わせ制限は、過去一定時間まで実在が確認された質問ドメイン名をブルームフィルターで記憶し、名前解決に2秒以上が経過した再帰問い合わせクエリーの個数が100個を越えたゾーンを対象とし、ブルームフィルターに一致しないドメイン名を含む再帰問い合わせクエリーをレート制限する。
【先行技術文献】
【非特許文献】
【0008】
【文献】末松慶文、“見抜く力を!データを見て対策を考える(フルリゾルバ)”、p.17~22、[online]、平成28年12月1日、日本ネットワークインフォメーションセンター、[平成30年4月3日検索]、インターネット〈URL:https://www.nic.ad.jp/ja/materials/iw/2016/proceedings/d3/d3-2-suematsu.pdf〉
【文献】東大亮、“ブルームフィルタを利用したランダムサブドメイン攻撃からのDNSキャッシュサーバの防御”、p.7~15、[online]、平成26年11月22日、スライドシェア、[平成30年4月3日検索]、インターネット〈URL:https://www.slideshare.net/hdais/ss-41897131〉
【発明の概要】
【発明が解決しようとする課題】
【0009】
しかしながら従来の方法はドメイン名毎、ゾーン毎、又は権威DNSサーバー毎に再帰問い合わせクエリーを制限していたため、攻撃の原因となる再帰問い合わせクエリーを発生する攻撃クライアントだけではなく攻撃対象のゾーン、又は過去一定時間まで実在が確認されなかった実在するドメイン名を含む再帰問い合わせクエリーを発生する正規クライアントも一律に制限される問題があった。
【0010】
更にゾーンに収容されるドメイン名の数はゾーンにより異なり、ゾーン頂点のドメイン名だけしか存在しない1から、サブドメイン形式のブログサービスのように加入したユーザー数分存在する場合があり、効果的なゾーン毎の規制値を決定することが難しく、運用で規制値をゾーン毎または権威DNSサーバー毎に細かく設定することが非現実的であるという問題があった。
【0011】
そこで本発明は、ゾーンに収容されるドメイン名の数による影響を緩和し、正規クライアントへの制限を抑制し、DNS水責め攻撃の原因となる攻撃クエリーを効果的に制限する方法、DNSフルサービスリゾルバープログラム、及びDNSフルサービスリゾルバー装置を提供することを目的とする。
【課題を解決するための手段】
【0012】
DNSフルサービスリゾルバーがDNS水責め攻撃を受けていない場合にゾーンに収容されるドメイン名の数が多いほど実在しないドメイン名の再帰問い合わせクエリー数もまた多くなる現象に着目し、まずは攻撃クライアントを特定するため、DNSフルサービスリゾルバーが受信した複数の再帰問い合わせクエリーに応じた反復問い合わせにより得られた単位時間当たりの権威DNSサーバーからの権威ある応答のうち、クライアント毎に集計した回答セクションが存在する成功数Nc、及び一定のタイムアウト時間が経過しても応答がない場合を含む回答セクションが存在しない失敗数Fcをクライアント毎に保持する記憶手段に記憶し、定数倍及び平行移動したランプ関数にNcを代入した値をFcが超過する場合に一定の攻撃判定期限が経過するまで該クライアントは攻撃クライアントであると判定し、該攻撃判定を前記したクライアント毎に保持する記憶手段に記憶する。
【0013】
次に攻撃対象となる攻撃ゾーンを特定するため、上記のクライアント毎の判定をゾーン毎に対しても実施する。すなわち、DNSフルサービスリゾルバーが受信した複数の再帰問い合わせクエリーに応じた反復問い合わせにより得られた単位時間当たりの権威DNSサーバーからの権威ある応答のうち、権威DNSサーバーのゾーン毎に集計した回答セクションが存在する成功数Nz、及び一定のタイムアウト時間が経過しても応答がない場合を含む回答セクションが存在しない失敗数Fzをゾーン毎に保持する記憶手段に記憶し、定数倍及び平行移動したランプ関数にNzを代入した値をFzが超過する場合に一定の攻撃判定期限が経過するまで該ゾーンは攻撃ゾーンであると判定し、該攻撃判定を前記したゾーン毎に保持する記憶手段に記憶する。
【0014】
受信した再帰問い合わせクエリーを送信したクライアントを前記したクライアント毎の記憶手段から検索した結果が攻撃クライアントであり、かつ該クエリーのゾーンを前記したゾーン毎の記憶手段から検索した結果が攻撃ゾーンである場合に該クエリーを攻撃クエリーであると判定する。該クエリーが攻撃クエリーであると判定された場合にレート制限により一定の割合だけ反復問い合わせすることなく破棄又は失敗を示す応答コードを返答する。
【発明の効果】
【0015】
本発明によれば、実在しないランダムサブドメインを含む複数の再帰問い合わせクエリーによるDNS水責め攻撃を受けても問い合わせ先の権威DNSサーバーへの問い合わせ負荷の増加を抑制することにより水責め攻撃を防御し、攻撃とは無関係のクライアントからの再帰問い合わせクエリー、及び攻撃とは無関係のゾーンに収容されるドメイン名を含む再帰問い合わせクエリーは制限なく反復問い合わせが実行され、DNSフルサービスリゾルバーのサービスを継続して提供することができる。
【図面の簡単な説明】
【0016】
図1図1は実施形態に係るDNS水責め攻撃を防御する方法を実施するシステム構成の一例を示すブロック図である。
図2図2は実施形態に係る攻撃クライアントを判定するための定数倍及び平行移動したランプ関数のグラフを示す図である。
図3図3は実施形態に係る攻撃ゾーンを判定するための定数倍及び平行移動したランプ関数のグラフを示す図である。
図4図4は実施形態に係るキャッシュを保持する記憶手段に関する一例を示すデータフロー図である。
図5図5は実施形態に係るクライアント毎に保持する記憶手段及びゾーン毎に保持する記憶手段に関するデータフロー図である。
図6図6は実施形態に係るDNS水責め攻撃を防御するDNSフルサービスリゾルバーのフローチャートを示す図である。
図7図7は実施形態に係る更新処理サブルーチンのフローチャートを示す図である。
図8図8は実施形態に係る判定処理サブルーチンのフローチャートを示す図である。
図9図9は実施形態に係るDNS水責め攻撃を防御するDNSフルサービスリゾルバー装置を示す図である。
【発明を実施するための形態】
【0017】
図1は実施形態に係るDNS水責め攻撃を防御する方法を実施するシステム構成の一例を示すブロック図である。DNSフルサービスリゾルバー10は、通信部11、制御部12、及び記憶部13を備える。
【0018】
DNSフルサービスリゾルバー10は、正規クライアント群50に含まれる複数の正規クライアントが送信する正規クエリー、及び攻撃クライアント群60に含まれる複数の攻撃クライアントが送信する攻撃クエリーを受信する。正規クエリー及び攻撃クエリーは、DNSパケットのヘッダーセクションに含まれるRDフラグが1に設定された再帰問い合わせクエリーを対象とする。RDフラグが0に設定された非再帰問い合わせクエリーは反復問い合わせをすることはないため非対象とする。
【0019】
通信部11は、DNSフルサービスリゾルバー10と、正規クライアント群50、攻撃クライアント群60、DNSルートサーバー71、トップレベルドメインの権威DNSサーバー72、及びゾーンの権威DNSサーバー73の間のそれぞれのネットワーク経路を経由してDNSパケットを受信及び送信する。
【0020】
記憶部13は、反復問い合わせの結果として得られるドメイン名毎のリソースレコードを最長でもTTL時間まで記憶するキャッシュ31を保持する記憶手段、クライアント毎のNc、Fc、及び攻撃判定32を保持する記憶手段、並びにゾーン毎のNz、Fz、及び攻撃判定33を保持する記憶手段を備える。
【0021】
クライアント毎の保持単位は、例えばクライアントのソースIPv4アドレス毎としても良いし、ソースIPv6アドレスのプレフィックス毎としても良い。ゾーン毎の保持単位はDNSプロトコルの仕様に基づき大文字と小文字の相違は区別せずに同一のものとみなす。
【0022】
キャッシュ31はDNSフルサービスリゾルバー10が通常備えるものであるが、本発明の実施に必要不可欠なものではない。正規クライアント群50及び攻撃クライアント群60に属するクライアントから受信した再帰問い合わせクエリー及びキャッシュ31の内容に応じて、DNSルートサーバー71、トップレベルドメインの権威DNSサーバー72、及びゾーンの権威DNSサーバー73に対して送信した反復問い合わせクエリーの応答内容をキャッシュする。
【0023】
クライアント毎のNc、Fc、及び攻撃判定32、並びにゾーン毎のNz、Fz、及び攻撃判定33は本発明に固有のものであり、更新部25により更新され、判定部22により参照される。
【0024】
制御部12は、受信部21、判定部22、制限部23、反復問い合わせ部24、更新部25、及び送信部27の各処理手順を備える。
【0025】
受信部21は、通信部11からDNSパケットを受信し、再帰問い合わせクエリーであることを確認し、再帰問い合わせクエリーに含まれる質問ドメイン名に最長一致するドメイン名をキャッシュ31から検索し、キャッシュに回答が有るか否かを判断する。
【0026】
判定部22は、クライアント毎のNc、Fc、及び攻撃判定32、並びにゾーン毎のNz、Fz、及び攻撃判定33の内容から受信部21により受信した再帰問い合わせクエリーが攻撃クエリーであるか否かを判断する。
【0027】
制限部23は、判定部22により再帰問い合わせクエリーが攻撃クエリーであると判定された場合にレート制限により、反復問い合わせを実行する代わりに再帰問い合わせクエリーを破棄するか、又は失敗を意味する応答コード(例えばServFail)を応答パケットに設定する。
【0028】
反復問い合わせ部24は、DNSプロトコルの仕様に基づきキャッシュ31の内容に応じてDNSルートサーバー71、トップレベルドメインの権威DNSサーバー72、及びゾーンの権威DNSサーバー73に対して反復問い合わせを実行する。
【0029】
更新部25は、反復問い合わせを実行して得た応答パケットに含まれる回答セクション、クライアント、及びゾーンから、クライアント毎のNc、Fc、及び攻撃判定32、並びにゾーン毎のNz、Fz、及び攻撃判定33の内容を更新する。
【0030】
図2は実施形態に係る攻撃クライアントを判定するための定数倍及び平行移動したランプ関数のグラフを示す図であり、単位時間(例えば10秒)当たりのクライアント毎に集計した回答セクションが存在する成功数Nc、及び単位時間当たりのクライアント毎に集計した、一定のタイムアウト時間(例えば5秒)経過しても応答がない場合を含む回答セクションが存在しない失敗数Fcから、Acで定数倍し、水平軸に(Tc-Bc)/Ac、垂直軸にTcだけ平行移動したランプ関数によりクライアントを攻撃クライアントと正規クライアントに分けることを示す。FcがAc×Nc+Bc及びTcを超過する場合に攻撃クライアント、それ以外の場合に正規クライアントと判定する。該関数のパラメーターであるAc、Bc、及びTcは単位時間当たりの最繁時における水責め攻撃を受けていない場合のNc及びFcの関係性から決定する。
【0031】
図3は実施形態に係る攻撃ゾーンを判定するための定数倍及び平行移動したランプ関数のグラフを示す図であり、単位時間(例えば10秒)当たりのゾーン毎に集計した回答セクションが存在する成功数Nz、及び単位時間当たりのゾーン毎に集計した、一定のタイムアウト時間(例えば5秒)経過しても応答がない場合を含む回答セクションが存在しない失敗数Fzから、Azで定数倍し、水平軸に(Tz-Bz)/Az、垂直軸にTzだけ平行移動したランプ関数によりゾーンを攻撃ゾーンと正規ゾーンに分けることを示す。FzがAz×Nz+Bz及びTzを超過する場合に攻撃ゾーン、それ以外の場合に正規ゾーンと判定する。該関数のパラメーターであるAz、Bz、及びTzは単位時間当たりの最繁時における水責め攻撃を受けていない場合のNz及びFzの関係性から決定する。
【0032】
図4は実施形態に係るキャッシュを保持する記憶手段に関する一例を示すデータフロー図であり、キャッシュを保持する記憶手段31に関するデータの入出力と処理の関係を示す。クライアント42、ゾーン45、及びクライアントに返答する応答パケット46を得ることが可能であれば、他のデータフローであっても良い。
【0033】
受信処理210はクライアントが送信した再帰問い合わせクエリー41を受信し、クライアント42を得るとともに、クライアントが送信した再帰問い合わせクエリー41のDNSパケットに含まれる質問セクションの第1項目から質問ドメイン名43を、質問セクションの第2項目から質問リソースレコードタイプ44を得る。質問セクションの第3項目から得られる質問クラスはグローバルなインターネットを示すINを対象とする。
【0034】
最長一致検索211は質問ドメイン名43に最長一致するドメイン名をキャッシュ31から検索することによりゾーン45を得る。もしキャッシュ31が空であるならばゾーン45をルートドメインとする。
【0035】
反復問い合わせ240はゾーン45及びキャッシュ31により最初に問い合わせる権威DNSサーバーを決定し、その権威DNSサーバーに反復問い合わせクエリーを送信し、受信した応答内容をキャッシュ31に格納し、もし応答内容が委任応答であれば権威DNSサーバーを委任先の権威DNSサーバーに改め、権威ある応答内容が得られるまで繰り返し処理し、委任されたドメイン名からゾーン45を確定させ、クライアントに返答する応答パケット46を得る。
【0036】
図5は実施形態に係るゾーン毎に保持する記憶手段及びクライアント毎に保持する記憶手段に関するデータフロー図であり、ゾーン毎のNz、Fz、及び攻撃判定を保持する記憶手段32、並びにクライアント毎にNc、Fc、及び攻撃判定を保持する記憶手段33に関するデータの入出力と処理の関係を示す。
【0037】
更新処理250はクライアント42、ゾーン45、及び応答パケット46を参照し、クライアント毎に保持する記憶手段32にNc、Fc、及び攻撃判定を、ゾーン毎に保持する記憶手段33にNz、Fz、及び攻撃判定を、それぞれ記憶する。
【0038】
判定処理220はクライアント42、ゾーン45、ゾーン毎のNz、Fz、及び攻撃判定を保持する記憶手段に保持する記憶手段32、並びにクライアント毎のNc、Fc、及び攻撃判定を保持する記憶手段33を参照し攻撃クエリー判定を得る。
【0039】
レート制限230は攻撃クエリー判定が黒の場合に一定の割合(例えば確率90%)だけ反復問い合わせすることなく破棄又は失敗を示す応答コード(例えばServFail)を返答するために参照される破棄又は失敗の指示48を得る。
【0040】
図6は実施形態に係るDNS水責め攻撃を防御するDNSフルサービスリゾルバーのフローチャートを示す図であり、開始200から始まり、受信処理210及び最長一致検索211を実行する。キャッシュに回答有の判断212が真の場合にはキャッシュ応答作成241及び送信処理270を実行し、終了280に至る。キャッシュに回答有の判断212が偽の場合には判定処理220を呼び出し、攻撃クエリー判定は白の判断226が真の場合には反復問い合わせ240を実行し、更新処理250を呼び出し、送信処理270を実行し、終了280に至る。攻撃クエリー判定は白の判断226が偽の場合にはレート制限230を実行し、破棄又は失敗の指示の判断231が真の場合には破棄又は失敗232及び送信処理270を実行し、終了280に至る。破棄又は失敗の指示の判断231が偽の場合には攻撃クエリー判定は白の判断226が真の場合と同様に、反復問い合わせ240を実行し、更新処理250を呼び出し、送信処理270を実行し、終了280に至る。
【0041】
図7は実施形態に係る更新処理サブルーチンのフローチャートを示す図であり、更新処理250から始まり、最初に単位時間当たりのNc、Nz、Fc、及びFzを集計する。単位時間が経過の判断251が真の場合にはNc、Nz、Fc、及びFzを零に設定252を実行する。反復問い合わせ240により得られた応答パケット46に含まれる回答セクションが存在の判断253が真の場合にはNc及びNzを1加算254を実行する。回答セクションが存在の判断253が偽の場合にはFc及びFzを1加算255を実行する。
【0042】
攻撃判定期限内に攻撃クライアントの判断256が真の場合、すなわち過去にクライアント毎のNc及びFcから図2のグラフにより攻撃クライアントであると判定されたことがあり、かつ攻撃クライアントであると判定された最後の時刻を起点として現在の時刻が攻撃判定期限(例えば1分)内にあるならば、クライアント毎の攻撃判定を黒に設定257を実行する。攻撃判定期限内に攻撃ゾーンの判断256が偽の場合にはクライアント毎の攻撃判定を白に設定258を実行する。
【0043】
攻撃判定期限内に攻撃ゾーンの判断259が真の場合、すなわち過去にゾーン毎のNz及びFzから図3のグラフにより攻撃ゾーンであると判定されたことがあり、かつ攻撃ゾーンであると判定された最後の時刻を起点として現在の時刻が攻撃判定期限(例えば1分)内にあるならば、ゾーン毎の攻撃判定を黒に設定260を実行し、呼び出し元に戻る262に至る。攻撃判定期限内に攻撃ゾーンの判断259が偽の場合にはゾーン毎の攻撃判定を白に設定261を実行し、呼び出し元に戻る262に至る。
【0044】
図8は実施形態に係る判定処理サブルーチンのフローチャートを示す図であり、判定処理220から始まり、クライアント毎の攻撃判定は黒の判断221が偽の場合には攻撃クエリー判定を白に設定224を実行し、呼び出し元に戻る225に至る。クライアント毎の攻撃判定は黒の判断221が真であり、ゾーン毎の攻撃判定は黒の判断222が偽の場合には攻撃クエリー判定を白に設定224を実行し、呼び出し元に戻る225に至る。ゾーン毎の攻撃判定は黒の判断222が真の場合には攻撃クエリー判定を黒に設定223を実行し、呼び出し元に戻る225に至る。
【0045】
図9は実施形態に係るDNS水責め攻撃を防御するDNSフルサービスリゾルバー装置80の一例を示す図であり、ネットワークインターフェイス81、中央演算処理装置82、主記憶装置83、不揮発性記憶装置84、ストレージコントローラー85の各部はバスにより接続されている。
【0046】
ストレージ86はストレージコントローラー85に接続され、例えばハードディスクドライブ(HDD)や、ソリッドステートドライブ(SSD)により実現される。ストレージ86に格納された基本ソフト(OS)88は、DNSフルサービスリゾルバー装置80が起動時に不揮発性記憶装置84に記憶されたブートストラップローダーにより主記憶装置83にロードされ、基本ソフト(OS)88が備える機能の提供を開始する。
【0047】
上記実施形態において説明したDNS水責め攻撃を防御するDNSフルサービスリゾルバー10はレート制限230において破棄又は失敗の指示48を確率的に決定する必要があるが、疑似乱数生成法を利用することにより確定的に計算可能となり、DNSフルサービスリゾルバー10もまた確定的に計算可能となることから、コンピューターが実行可能な言語で記述されたプログラムとして作成することができる。
【0048】
このようにして作成されたDNSフルサービスリゾルバープログラム87は、コンピューターの機能を有するDNSフルサービスリゾルバー装置80が起動時に基本ソフト(OS)88が備えるサービス自動起動の機能により主記憶装置83にロードされ、中央演算処理装置82が実行することにより上記実施形態と同様の効果が得られる。
【0049】
DNSフルサービスリゾルバープログラム87は、受信部871及び送信部875を含むDSOモジュール対応DNSサーバー主プログラム870、クライアントDSOモジュール872、判定制限更新DSOモジュール873、並びにキャッシュDSOモジュール874を備える。
【0050】
クライアントDSOモジュール872、判定制限更新DSOモジュール873、及びキャッシュDSOモジュール874は、DSOモジュール対応DNSサーバー主プログラム870が呼び出し可能な統一されたインターフェイスを有する動的共有オブジェクトとして実現され、個別のオブジェクトファイルとしてストレージ86に格納され、DSOモジュール対応DNSサーバー主プログラム870が起動時に主記憶装置83にロードされ、動的リンクされ一体となり、DNSフルサービスリゾルバープログラム87として機能する。
【0051】
従来のDNSフルサービスリゾルバープログラムは最初から一体となったプログラム構成を採用している。本発明に係る更新処理250で必要なデータは前段で取得するクライアント42、中段の反復問い合わせ240で確定するゾーン45、後段の応答パケット46のように参照するデータが処理の最初から最後まで分散しているため、従来のDNSフルサービスリゾルバープログラムで本発明を実現することは容易ではなかった。
【0052】
本実施形態では、DSOモジュール対応DNSサーバー主プログラム870とDSOモジュールの間のインターフェイスであるDSOモジュールインターフェイスにより定義されたDNSコンテキストにクライアント42、ゾーン45、及び応答パケット46が格納されているため、本発明に係る判定制限更新DSOモジュール873から容易に参照することができる。
【0053】
DSOモジュールインターフェイスは各種の状況に応じたハンドラー関数のインターフェイスをも備える。DSOモジュール対応DNSサーバー主プログラム870は各DSOモジュールに備えられたqueryハンドラー関数を順番に呼び出し、queryハンドラー関数は受信部871により受信したDNSパケットを参照して応答パケットを作成することを基本とする。
【0054】
クライアントDSOモジュール872のqueryハンドラー関数は再帰問い合わせクエリーを送信したクライアントを許可しない場合に破棄又は失敗を示す応答コード(例えばServFail)を応答する。キャッシュDSOモジュール874のqueryハンドラー関数は反復問い合わせ部24を実行して応答パケットを作成する。
【0055】
判定制限更新DSOモジュール873は、判定部22、制限部23、及び更新部25を備える。判定制限更新DSOモジュール873のqueryハンドラー関数は判定部22及び制限部23を実行する。破棄又は失敗232が実行された場合にDSOモジュールインターフェイスに含まれる結果コードを名前解決済みであると設定することにより、後段のキャッシュDSOモジュール874の反復問い合わせ処理を阻止する。更に破棄又は失敗232が実行されない場合に更新処理250の実行が必要であることを記憶しておく。
【0056】
DSOモジュール対応DNSサーバー主プログラム870が各DSOモジュールに備えられたqueryハンドラー関数の呼び出しを完了させると、送信部875は応答パケット46をクライアントに返答する。
【0057】
送信部875の処理が完了するとDSOモジュール対応DNSサーバー主プログラム870はpostハンドラー関数を順番に呼び出すことにより事後処理を開始する。
【0058】
クライアントDSOモジュール872及びキャッシュDSOモジュール874が備えるpostハンドラー関数は何も処理をしない。
【0059】
判定制限更新DSOモジュール873のpostハンドラー関数は更新部25を実行する。送信部875はクライアント42、ゾーン45、及び応答パケット46を変更しないため更新部25と実行順序の交換が可能である。判定制限更新DSOモジュール873のqueryハンドラー関数で記憶された更新処理250の実行が必要である場合だけ更新処理250を実行する。
【産業上の利用可能性】
【0060】
本発明は、企業、学校、官公庁等の組織で運用されるDNSフルサービスリゾルバー及び電気通信事業者が加入者に提供するDNSフルサービスリゾルバーのうち、ユーザー数が数万を越える大規模なDNSフルサービスリゾルバーに利用でき、DNS水責め攻撃を受けた場合に有用である。
【符号の説明】
【0061】
10 DNSフルサービスリゾルバー
11 通信部
12 制御部
13 記憶部
21 受信部
22 判定部
23 制限部
24 反復問い合わせ部
25 更新部
27 送信部
31 キャッシュを保持する記憶手段
32 クライアント毎のNc、Fc、及び攻撃判定を保持する記憶手段
33 ゾーン毎のNz、Fz、及び攻撃判定を保持する記憶手段
41 クライアントから受信した再帰問い合わせクエリー
42 クライアント
43 質問ドメイン名
44 質問リソースレコードタイプ
45 ゾーン
46 クライアントへ返答する応答パケット
47 攻撃クエリー判定
48 破棄又は失敗の指示
50 正規クライアント群
51 正規クライアントA
52 正規クライアントB
53 正規クライアントC
60 攻撃クライアント群
61 攻撃クライアントX
62 攻撃クライアントY
63 攻撃クライアントZ
71 DNSルートサーバー
72 トップレベルドメインの権威DNSサーバー
73 ゾーンの権威DNSサーバー
80 DNSフルサービスリゾルバー装置
81 ネットワークインターフェイス
82 中央演算処理装置
83 主記憶装置
84 不揮発性記憶装置
85 ストレージコントローラー
86 ストレージ
87 DNSフルサービスリゾルバープログラム
88 基本ソフト(OS)
図1
図2
図3
図4
図5
図6
図7
図8
図9