DNS Summer Day 2018

本記事は、DNS Summer Day 2018で発表した内容を記事として書き起こし、加筆修正したものです。

BINDとは

世界で一番沢山使われているOSS(オープンソースソフトウェア)DNSサーバー(ソフトウェア)です。インターネット黎明期に開発され、繰り返し修正されているので、コードが複雑で脆弱性が潜みやすいと言われており、今日でも毎年10件近い脆弱性が見つかっています。

XACK DNSとは

純国産100%自社開発のDNSサーバー(ソフトウェア)です。プログラムのモジュール化より、軽快な動作、可用性の向上、容易な機能追加を実現します。セキュリティ重視のフルスクラッチ自社開発の為、脆弱性の影響がなく、大手国内キャリアを始め、通信事業者を中心に活用頂いています。

BINDをXACK DNSに置き変えてみよう!

更改要件

  • 現在はOSS(オープンソースソフトウェア)のBINDだが、次期システムはサポートのしっかりした商用製品を希望
  • 権威サーバーとキャッシュサーバー(フルサービスリゾルバー)を、1台のサーバーで共用したい(権威キャッシュ共用を現IPで継続したい)
  • 上図①②③全てのパターンが可能なDNSソフトウェアが必要

そうだ! XACK DNSなら全部できる!

動作確認

BINDは懐が深くて、やさしくて、(適当で)、学ぶことが多くありました!

【事例1:ゾーン転送】

よくあるシーケンス

ケース1: 色々応答してくれない
ケース2: RR毎にDNSパケットを分割する。ID違いで
ケース3: AXFR応答の最初と最後のSOAが違う
対処: 色々失敗してもフォールバック、応答のチェックを許容的に

【事例2:ゾーンファイル読み込み】

ケース4: 委任先のグルーがない
  • 委任先内部名のグルーがないと委任先の権威サーバーのIPアドレスが分からずその先の問い合わせができない。
  • 設定でそのようなゾーンファイルを許容できる機能を追加(推奨しません)

ケース5: TTLが10進数でない

RFC1035 5.1項では以下のように書かれています。

→TTLは10進数の整数である。

しかし色々なゾーンファイルを見てみると…

SOAのRDATAでこんなの見たことある!→TTLでも許容するようにしました。

【事例3:メッセージ圧縮】

  • この応答の違い、分かりますか?
  • メッセージサイズが違う!

同一の名前が存在する場合、他方を参照するポインターを設定することで圧縮することが出来ます。

ケース6:後方参照圧縮

→ “example.jp.”のPTRレコードを問い合わせると…

drillの場合
digの場合

→BINDは(2)の解釈に失敗しますが、Unboundは対応しているようです。

【事例4:誰も守っていないRFC】

ケース7: 応答のEDNS0のサイズ

RFC6891 6.1.2項では以下のように記載されています。

OPT RRのCLASSフィールドには「要求者」、つまるところクエリを送信した側のUDPペイロードサイズを設定するように定められているようです。

(昔はsender’s UDP payload sizeでした)。

尚、実際の所誰も守っていません。皆さん自身のサーバーの設定を返すようです。

これらの事例を受けて

  • RFCに書かれていること、書かれていないこと含めて様々な想定外の動作、差分があることが判明
    • 差分を洗い出したい!
  • どうやって?
    • 全通り試せばいい(白目)
  • 対象となる通信
  • やったこと
    • ヘッダーについては概ね全通り試せる。
  • COUNTはRRの数に依存するので、気にしなければならないのは先頭32ビットだけ、しかもうち16ビットはID
  • 質問部の数については0個、1個、2個で試す(2個以上の質問部をサポートしていないことを想定)。
  • 要求の場合、QTYPE、QCLASSは32ビットなので全通り試せる。
  • 応答の場合、QNAME、QTYPE、QCLASSは要求との一致不一致の2通りに畳み込む。
  • 資源レコード(回答部、権威部、追加部)はパターン分けする。
    • ポジティブ応答、ネガティブ応答、委任、etc。。。
  • これらから回答部、権威部、追加部のパターンを作成して組み合わせる。
    • ざっくり10億通りくらい
    • 現実的!!
  • やりたいこと
  • DNSパケットのビットレベルでの比較
    • 思い付き+提供いただけたものについては実施
  • 様々なゾーンファイルの読み込み
    • 思い付き+提供いただけたものについては実施
  • 資源レコード
    • 個々のリソースレコードタイプ毎に深堀したい

おわりに

今回の経験を得てXACK DNSもよりやさしく、懐深くなりました。

今後も安心・安定してご使用いただけるソフトウェア、システムを目指して参ります。

DNSの新規構築や更改の際には、是非XACKへお声かけください。


XACK製品一覧



課題抽出やどの製品を選定すればよいかの整理からご相談ください

システムの新規構築や更改にお悩みのお客様もお待ちしています。
現状の課題抽出や要件の整理、解決に導くための機能紹介やシステム
構成まで、アプライアンス・ソフトウェア問わずご提案します。