DNSSECを実装してみた


今年中にDNSSECを実装を目指す、というお話を見たので、先に実装してみることにしました(ぉぃ)

手順としてはそれほど難しくない、というか、ある意味「本家」に当たるところが英文ながらガイドを出してくれてます。検証ツールまで出ています。

手順としては、おおむねこんな感じ(リンク先を読んだ方が正しいよ)

  1. KSK(key signing key)とZSK(zone signing key)を生成する
  2. ISCのサイトにログインし(アカウントを用意する必要あり)、ZSKを登録しておく
  3. 各設定ファイル(named.conf周辺とゾーン定義ファイル)に必要な修正を加える
  4. KSK/ZSKを使って、ゾーン定義ファイルに署名を追加する
  5. 追加したゾーン定義ファイルを有効にする(サーバの再起動、設定の読み直しなど)

鍵生成などで/dev/randomを使うところは、乱数生成源が不足すると、Linuxではブロッキングするという事態を招く(=すごく時間がかかる)ので、/dev/urandomを使うというのもありかもしれません。また、セカンダリを使っている場合、署名以外のデータが更新されていない場合にゾーン定義がスレーブに伝わらないという事態を招くことになるので、けっこう嫌なことになったりします。

ということで、いろいろと策を講じました。

  • 本来の定義ファイル→署名済みファイルに更新するためのMakefileを作った
  • シリアル値epoch秒から生成するように調整し、Makefileの中で処理するようにした

つまり、手を入れている本来のゾーン定義にはシリアルが空欄(正確にはシンボル)であり、make実行の際に、epoch秒ベースの中間ファイルが生成され、そこから署名済みファイルができる流れ。その後サーバが再起動され、notificationによりスレーブもデータを更新するという流れ。Makefileが見たいという方がいれば、稚拙なものですが見せても一応大丈夫、と。

署名自体に有効期限が設定されていると言うこともあるので、週1に更新されるように仕組みを作り、組み込んでみました。

DNS & BIND 第5版
DNS & BIND 第5版 小柏 伸夫

おすすめ平均
stars辞書的に使えます
starsDNS管理をするならこれを読め

Amazonで詳しく見る
by G-Tools

Leave a Reply