Chapter 05

フルサービスリゾルバを構築しよう

新しくフルサービスリゾルバ(キャッシュDNSサーバ、再帰的DNSサーバ)を構築する手順を示します。

構築する動機

internal.example.comなど組織内ネットワークからのみアクセス出来るゾーンがあるとします。これは、インターネットからアクセス出来ない、内部むけ権威サーバを設置することで可能となります。

このとき、外部のフルサービスリゾルバは内部むけ権威サーバにアクセス出来ないため、内部向けフルサービスリゾルバを構築する必要があります。

また、組織内ネットワークに属する全ての計算機は、その内部向けフルサービスリゾルバを参照する必要があります。参照するフルサービスリゾルバの変更は次章で紹介します。

キャッシュポイズニング攻撃対策を読もう

キャッシュDNSサーバー運用者向け―基本対策編を読みましょう。

この資料は(緊急)キャッシュポイズニング攻撃の危険性増加に伴うDNSサーバーの設定再確認についてから参照出来ます。

Unboundを使おう

先程までBINDの説明をしてきましたが、新しく構築するのであればUnboundがおすすめです。

理由として以下が挙げられます。

  • 設定が容易である(デフォルトで安全な設定ができる)
  • (BINDの次に)資料が豊富である

https://unbound.jp/unbound を読みましょう。BINDより設定の数が少ないので楽です。

access-controlをしっかりと設定しよう

内部向け権威サーバのアクセス制御がどうなっているのか、必ず調べてください。

権威サーバから見ると、クライアントはフルサービスリゾルバになるため、フルサービスリゾルバは権威サーバのそれよりも小さい範囲からアクセスを許可する必要があります

そうしなければ、本来許可されていないサーバがフルサービスリゾルバを介して権威サーバの資源レコードにアクセス出来てしまいます。

server:
  access-control: 172.16.0.0/12 allow

interface:0.0.0.0を使わない

wikipediaによると、0.0.0.0

サーバにおいては、0.0.0.0は「ローカルマシン上の全てのIPv4アドレス」を意味する。ホストに192.168.1.1と10.1.2.1の2つのIPアドレスがあり、そのホストで実行されているサーバが0.0.0.0で待ち受けするように構成されている場合、どちらのIPアドレスに対しても到達可能になる。

便利なアドレスですが、これを使わず1つ1つ設定しましょう

server:
  interface: 192.168.1.1
  interface: 10.1.2.1
  interface: 127.0.0.1

これは予想外のIPアドレスからアクセスされる可能性をなくすことと、127.0.0.53:53でlistenしているsystemd-resolvedのstub listenerと競合しないようにするためです。

ドキュメントを読もう

https://unbound.jp/unbound/unbound.conf/ は少なくとも一通り読みましょう。

特定のゾーンで権威サーバを指定する

internal.example.com.の権威をもつ内部向け権威サーバが192.168.0.3で動いているとき、このように設定できます。

stub-zone:
  name: "internal.example.com."
  stub-addr: 192.168.0.3

逆引きの設定は以下のようになります。

server:
  local-zone: "3.0.168.192.in-addr.arpa." nodefault
stub-zone:
  name: "3.0.168.192.in-addr.arpa."
  stub-addr: 192.168.0.3