-
サーバ構築のデージーネットTOP
-
OSS情報
-
OSS紹介
-
unbound〜攻撃に強いDNSキャッシュサーバ〜
unbound〜攻撃に強いDNSキャッシュサーバ〜
unboundとは
unboundとは、DNSのキャッシュサーバに特化したオープンソースソフトウェアです。オランダのNLnet Labsが開発し公開しています。unboundは、IPv6対応(デュアルスタック)、DNSSECにも対応しており、今後、DNSキャッシュサーバに求められる機能は実装済です。また、unboundはDNSキャッシュポイズニング攻撃に対する防御の機能を多く備え、高いセキュリティを実現しています。unboundは、DNSキャッシュサーバに特化し、非常に高速に動作します。
unboundは、設定が非常に簡単です。小規模サイトで利用する場合には、インストールした時に設定されるデフォルトの設定ファイルに、リクエストを受け付けるアドレスを設定するだけで、そのまま動作させることが可能です。大規模サイト向けには、並列スレッド数やキャッシュで利用するメモリサイズを大きくするなど、比較的簡単なチューニングを行うことで、高速に動作をさせることができます。
DNSキャッシュサーバとDNSコンテンツサーバ
DNSサーバには、DNSキャッシュサーバとDNSコンテンツサーバの二つの種類があります。
DNSキャッシュサーバは、クライアントからの名前解決のリクエストを受け付けて、名前解決の一連の調査を行ってくれるサーバです。調査した結果はキャッシュします。そのため、次回以降の問い合わせでは、インターネットへの問い合わせを行わず、キャッシュから回答をします。DNS問い合わせの処理を高速に行うとともに、インターネットへトラフィックを減らすことができます。
DNSコンテンツサーバは、インターネット上でドメインやゾーンを管理するサーバです。例えば、designet.jpを管理するDNSコンテンツサーバは、www.designet.jpやmail.designet.jpなどの配下の名前とIPアドレスの情報を管理します。ドメインの名前空間はルートドメイン「.」を頂点とするツリー構造になっています。このツリーの特定のノード配下の一部または全部をゾーンと呼びます。DNSコンテンツサーバは、組織に割り当てられたゾーンの権威ある情報を管理することから、権威DNSサーバとも呼ばれます。
従来のDNSサーバでは、一台のサーバでDNSキャッシュサーバの機能とDNSコンテンツサーバの両方の機能を提供していました。
しかし、2010年前後に大規模なDNSキャッシュへの攻撃が観測されてからは、二つの機能を分離することが推奨されています。DNSキャッシュが攻撃によって汚染されても、権威あるゾーンの情報まで影響が及ばないようにするためです。万一、権威あるゾーンの情報を書き換えられると、メールサーバやWWWサーバのアドレスなどの重要な情報が書き換えられ、利用者が攻撃者のサイトに誘導されてしまう可能性があります。これによって、機密情報が漏洩する危険があります。こうした被害を避けるため、それぞれ専用のサーバに分離することが求められています。さらに、両方の機能を持つサーバソフトウェアよりも、専用のサーバソフトウェアの方が安全だと言われています。
こうした背景の中で、unboundはDNSキャッシュサーバに特化したソフトウェアとして注目されています。
unboundの特徴
従来使われていたbindと比較しても、unboundは多くの特徴があります。
インストールが簡単
Redhat Enterprise Linux、CentOSをはじめ、多くのディストリビューションでパッケージとして提供されています。そのため、入手が非常に簡単です。標準の設定に、リクエストを受け付けるIPアドレスや、利用を許可するクライアントのアドレスを定義するだけで、簡単に利用することができます。
安定し脆弱性が少ない
unboundは、コミュニティによる開発が活発に行われていて、機能追加も積極的に行われています。しかし、動作は安定していて、脆弱性が発見されることは多くありません。頻繁に脆弱性がみつかるBINDとくらべると、安定したソフトウェアです。
高速に動作する
unboundは、マルチCPU、マルチスレッドに対応しています。適切なリソースを定義することで、サーバの性能を効率よく利用して、高速に動作します。
設定が分かりやすい
unboundの設定は、用途に応じたファイルで管理することができます。そのため、可読性が高く、管理もしやすいのが特徴です。
DNSSECやIPv6に対応
DNSSECは、DNSコンテンツサーバが管理するゾーンの情報に電子署名をつけることで、情報の改竄を防ぐ機能です。DNSキャッシュへの攻撃を防ぐために導入された機能です。unboundは標準設定のままでDNSSECに対応しています。また、unboundはIPv6のディアルスタックに対応しています。IPv6とIPv4の両方のDNSリクエストに対して、一つのサーバで対応できます。また、AAAAなどのIPv6用のDNSレコードも処理することができます。DNSSECやIPv6に対応すると、DNSのパケットは従来のDNSが利用していたUDPのパケットには入りきらない場合があります。unboundは、標準的なUDPだけでなく、UDPを使った拡張プロトコルであるEDNS0やTCPへの切り替えにも対応しています。
ローカルゾーンによる簡易DNSサーバ
unboundは、DNSキャッシュ専用のサーバソフトウェアですが、ローカルにデータを管理することもできます。この機能は、簡易的なDNSコンテンツサーバとしても利用できます。また、インターネット上のDNS情報が不足していたり、間違っていた場合には、その情報に上書きして独自の情報を返すこともできます。例えば、SPFレコードが定義されていないドメインのメールは、標的型攻撃に利用される可能性が高く、迷惑メールと判定されてしまう可能性も高くなります。相手のメールサーバが分かっている場合には、ローカルにレコードを定義することで、迷惑メールの判定をより精度の高いものにすることができます。また、標的型メール攻撃を防ことにもなります。
スタブゾーンによるコンテンツサーバとの連携
unboundには、DNSコンテンツサーバとの連携をスムーズに行うため、スタブゾーンの機能が提供されています。unboundにスタブゾーンを定義することで、インターネット上のDNS情報とは関係なく、特定のゾーンを管理するサーバを設定できます。この機能があるため、unboundは組織の内部DNSサーバを作る場合にも、上手く連携することができます。
フォワーディングサーバとしても利用可能
unboundは、フォワーディングサーバとしても利用できます。フォワーディングサーバは、自分では名前解決の処理を行わず、他のサーバに依頼します。複数のDNSキャッシュサーバを利用する場合には、フォワーディングサーバ機能を使うことで、キャッシュを一元化できるメリットがあります。
攻撃に強い
unboundには様々な攻撃検知や防御の機能があります。これらの機能にはRFCに定められたものと、独自の機能があります。unbound独自の機能を利用する場合には、名前解決の振る舞いが変わる場合があります。そのため、選択的に設定ができるようになっています。最近unboundに追加されたRate Limit機能は、水責め攻撃などに対しても、非常に強力な防御として注目されています。
BINDとunboundとの違い
BINDは、非常に高機能なDNSソフトウェアで、DNSキャッシュサーバとDNSコンテンツサーバの両方の機能を持っています。一方、unboundも、DNSキャッシュサーバとして、非常に高機能なソフトウェアです。
BINDのみにある機能
BINDのみにあり、unboundにはない機能は、次の通りです。
DNSコンテンツサーバとしての機能
unboundは、DNSコンテンツサーバとして動作することはできません。ただし、ローカルデータを定義することで、簡易なDNSコンテンツサーバとして動作させることができます。
view機能
view機能は、クライアントのソースIPなどによって、DNSサーバとしての振る舞いを変える機能です。DNSコンテンツサーバの機能としては便利な機能です。bindでは、DNSキャッシュサーバとしても利用できます。ただし、DNSキャッシュサーバで利用することは、あまりないと思われます。
「BIND〜DNSサーバの特徴と弱点〜」へ
unboundのみにある機能
unboundのみにあり、BINDにはない機能は、次の通りです。
DNSSECの検証の除外機能
設定したドメインに対して、DNSSECの検証を行わない機能です。unboundでは、運用ミスや、DNSSEC鍵の一時的な失効など、何らかの原因でDNSSECの検証が失敗するようになったドメインをDNSSECの検査対象から外すことができます。
DNSキャッシュへの攻撃検知機能
unboundには、キャッシュポイズニング攻撃を検知する機能があります。一定の閾値を越えたら、ログを出力したり、キャッシュをクリアしたりすることができます。また、Rate Control機能では、問い合わせ先のドメイン毎に流量制限などの防御を行うこともできます。このようなキャッシュサーバへの攻撃に対抗するための機能は、unboundの方が豊富です。
性能
ベンチマークによると、unboundはBINDの約3倍の問合せを処理することができます。unboundは、名前解決しようとした対象がキャッシュにある場合も、ない場合でも同様に高速です。
unbound「構築事例/情報の一覧」
加入ユーザ向けのDNSキャッシュサーバをunboundを使って構成しました。提案前には、unboundを独自に検証しました。そのため、安心してunboundを導入していただくことができました。unboundを利用することで、DNSキャッシュサーバを分離した構成とし、DNSセキュリティの向上が実現できました。
近年、日本国内のISPでDNSキャッシュサーバの障害が報告されています。DNS水責め攻撃とよばれる攻撃が行われたためです。そのため、各ISPでは対策に追われています。本事例は、デージーネットがDNSキャッシュサーバにDNSサーバへの水責め攻撃の対策を行ったものです。
児童ポルノブロッキングは、ICSAから公開されている児童ポルノ掲載アドレスリストを使って、有害サイトを閲覧できなくする仕組みです。本事例は、DNSキャッシュサーバが問い合わせを受けたときに、児童ポルノ掲載サイトへの問い合わせを別サイトに誘導する仕組みを構築しました。
標的型攻撃で使われるメールは、送信者を偽装して送信されるものが多いことが知られています。本事例は、オープンソースソフトウェアのSaMMAとENMAを組み合わせて、送信者を偽装したメールの添付ファイルを自動的に削除することで、標的型攻撃を回避する機能を実現したものです。
NSDと同じコミュニティが開発しているキャッシュDNSサーバです。ここではOSSのDNSキャッシュサーバソフトウェアの選定ポイントを紹介し、比較してみます。
本書は、DNSサーバに対する水責めと呼ばれる攻撃の対策についての調査報告書です。高速・堅牢なキャッシュDNSサーバであるUnboundのセキュリティ機能が、攻撃の対策として有効であるか検証を行ないました。
DNSサーバとは、インターネットの名前解決を行うサーバーのことを言います。ここでは、おすすめの各DNSサーバのOSSの特徴を比較し、DNSサーバソフトウェアを選定する際に重視すべきポイントをまとめました。
デモのお申込み
もっと使い方が知りたい方へ
unboundの操作方法や操作性をデモにてご確認いただけます。使い方のイメージを把握したい、使えるか判断したい場合にご活用下さい。unboundのデモをご希望の方は、下記よりお申込みいただけます。
OSS情報「unbound」
- unboundのDNS攻撃対策
- unboundの特徴は、DNSに関連した攻撃に対して様々な対策を行うことができることです。ここでは、どのような対策を行うことができるのかを解説します。