構築事例:unboundによるDNSキャッシュサーバ
加入ユーザ向けのDNSキャッシュサーバをunboundを使って構築し、DNSセキュリティの向上を計りました。
- お客様が悩まれていた課題
- DNSのセキュリティ問題が多い
- セキュリティ対策のため管理者の負担が大きい
- 利用者に安全なシステムを提供できていない
- +導入企業プロフィール
- ★
導入企業業種
情報・通信(岐阜県)
ユーザー規模
10,000人
利用OS
Linux(Red Hat Enterprise Linux 7)
導入月
2010年3月頃
デージーネットが提案した「unboundによるDNSキャッシュサーバ」
unboundを利用し、DNSキャッシュサーバを分離
メール・Webシステム更改にあわせて、DNSについても整理したいと思っているので、提案をしてほしいというご要望をいただきました。
DNSキャッシュサーバにunboundを提案
DNSサーバとしては、bindを利用するのが一般的ですが、頻繁にキャッシュ制御の脆弱性が発見されます。bindをDNSマスタ・スレーブ兼キャッシュサーバとして利用していると、管理しているデータを改竄され、大きな影響が出る可能性がありました。
そのため、DNSキャッシュサーバを分離したDNSの構成を提案しました。さらに、DNSキャッシュサーバとしては、オープンソースソフトウェアのunboundを導入しました。unboundは、DNSキャッシュサーバに特化したソフトウェアです。そのため、unboundは動作が高速です。unboundには、DNSキャッシュが汚染されない工夫がされており、セキュリティ面でも優れています。
提案前にOSSを検証
デージーネットでは、独自にunboundを検証し、導入・運用方法を確立しました。その実績を元に、unboundを利用することを提案しましたので、安心して導入していただくことができました。
ご参考資料
- DNS水責め攻撃対策の調査報告書
2014年初旬からDNS水責めと呼ばれるDNSのDDoS攻撃が見られるようになりました。日本国内でもこの攻撃によるDNS障害が多く発生しております。本書は、OSSのunboundとunbound-reqmonを使用したDNS水責め攻撃対策について調査した内容をまとめたものです。
導入後の結果
【Webセミナー】自社でOSSを採用しよう!今更聞けないOSSの基本セミナー
日程: | 11月22日(金)Webセミナー「BigBlueButton」を使用します。 |
内容: | OSSを導入したいけど、どこから手をつければいいかわからない方必見! |
ご興味のあるかたはぜひご参加ください。 |
unboundとは
unboundは、DNSキャッシュに特化したDNSで、オランダのNLnet Labsが開発しています。unboundはIPv6対応(デュアルスタック)、DNSSECにも対応しています。そのため、今後DNSキャッシュに求められる機能がunboundには実装済みです。
unboundの特徴
- unboundはキャッシュ機能に特化している
unboundはキャッシュ機能に特化しており高速に動作します。
- unboundは設定が容易
unboundの設定は比較的簡単です。unboundを小規模サイトで利用する分には、unboundインストール時のデフォルトの設定ファイルでそのまま動作させることができます。また、unboundを大規模サイトで利用する場合であっても、並列スレッド数やキャッシュで利用するメモリサイズを大きくするなど、比較的簡単なチューニングで運用できます。
- unboundはIPv6対応デュアルスタック
unboundはIPv6に対応しています。unboundはIPv4/IPv6デュアルスタックであるため、IPv4/IPv6の両方へアクセスが可能です。
- unboundはDNSSECに対応
DNSキャッシュ汚染を防ぐためには重要です。近年、DNSSECの実装が進んでいます。unboundもDNSSECに対応しています。
unboundのキャッシュ汚染への耐性
DNSといえばBINDが有名でした。しかし、BINDのDNSキャッシュに関する脆弱性が頻繁に発見されるようになり、ソフトウェアのバージョンアップの対策を実施する必要が出てきました。一方で、unboundは、bindよりも脆弱性がすくなく、DNSキャッシュへの攻撃に対する防御システムを多数備えています。例えば、unboundの標準的な設定ファイルを見ると、次のようなパラメータが記載されています。
# グルーレコードを使ったDNSスプーフィング攻撃を回避する機能の有効化 harden-glue: yes # DNSSEC機能に対する防御設定 harden-dnssec-stripped: yes # 上位ゾーンと下位ゾーンのNSセットが同期していない場合の挙動の設定 harden-below-nxdomain: yes # DNSSECの署名の検証時に参照パスの検証を行う設定 harden-referral-path: yes # 0x20に符号化されたランダムビットを使った偽造攻撃の検出設定 use-caps-for-id: no # 望まない回答を受け取った回数によりキャッシュをクリアする機能の設定 unwanted-reply-threshold: 10000000
また、unboundは、動的にキャッシュをコントロールする機能を持っています。例えば、次のようなコマンドで、現在キャッシュされている情報を出力することができます。
# unbound-control dump_cache
もし、万一、不正なキャッシュがある場合には、キャッシュを削除することができます。
# unbound-control flush www.example.com
ドメインを指定して、該当ドメインの全キャッシュを削除することもできます。
# unbound-control flush_zone example.com
さらに、特定のドメインへのアクセスを禁止するような設定も追加できます。
# unbound-control local_zone example.com unsafe
unboundは、脆弱性が少ないだけではなく、このような多数の攻撃防御機能を備えたセキュアなDNSキャッシュサーバなのです。
unboundを利用したセキュリティの高いDNS
今回の事例のように、unboundによりDNSキャッシュを分離したシステム構成とすることで、DNSキャッシュ汚染に強いシステムにすることができます。また、BINDと、unbound双方を利用することで、登録等の使い勝手はBINDのままに、unboundによりDNSキャッシュを高速化できます。また、BINDには再帰クエリを禁止することでDNSキャッシュ汚染に関する問題を防ぐことができます。
デージーネットとunbound
BINDとunbound双方を利用したシステムでも、セキュリティ向上を図れますが、デージーネットでは、さらにDNSのセキュリティを高めるため、PowerDNSとunboundの利用を推奨しています。PowerDNSはPoweradminと組み合わせて使うことで、DNSSECに関連する処理も自動的に行われます。
デージーネットでは、unboundを利用したDNS水責め攻撃への対策も提案しています。その内容は、DNS水責め攻撃対策の調査報告書にまとめられています。unboundとunbound-reqmonを使用し、容易に導入できる対策となっています。
unboundによるDNSキャッシュサーバの関連ページ
- DNSキャッシュサーバの水責め攻撃対策
- 児童ポルノブロッキング対応DNSキャッシュサーバ
- DNS水責め攻撃対策調査報告書
- Unbound水責め攻撃対策調査報告書
- unbound〜攻撃に強いDNSキャッシュサーバ〜
- BIND〜DNSサーバの特徴と弱点〜
- DNSサーバのおすすめOSS比較9選!選定ポイントも解説