一般化するDNSブロッキング機能

   このエントリをはてなブックマークに登録    2010/9/29-1

2ヶ月前の記事ですが、ISC BINDにブロッキング機能が標準搭載されるという発表がありました。 BIND(Berkeley Internet Name Domain)は、オープンソースのフリーソフトで、世界で最も利用されているDNSサーバです。 このBINDにブロッキング機能が搭載される予定であると発表されることには、非常に大きな意味があります。 ある意味、DNSブロッキングがインターネットの標準機能へと近づいていることを示唆しているのかも知れません。

その発表はBIND作者であるPaul Vixie氏によって行われましたが、最初の一文が「新しいドメイン名の大半は悪意のあるものだ」というものでした。 犯罪目的で取得されたドメイン名があまりに多いことを嘆きつつ、ISC BINDにDNSブロッキング機能を実装したことを報告しています。

Taking Back the DNS | Internet Systems Consortium

この記事と全く同じものがCircleIDにも掲載されていますが、コメント欄が半分炎上気味です。

ブロッキングの仕組み

ISC BINDに実装されるのは、Response Policy Zones(DNS RPZ)という機能です。 ISC BINDのDNS RPZ機能に関する仕様書は「DNS Response Policy Zones (DNS RPZ) 2010年9月時点」として公開されています。

非常にざっくりと言ってしまうと、「設定されたFQDN(Fully Qualified Domain Name)の名前解決を行わない」というものです。 DNSキャッシュサーバでDNS RPZ機能を利用すると、ユーザは設定に関連する名前解決ができなくなります。

DNS RPZが設定されていない通常状態では、ユーザは次のようにDNSキャッシュサーバに問い合わせを行って、名前解決をします。

DNSキャッシュサーバが以前に同じ問い合わせを受けていて、その結果のキャッシュを保持していれば、上記図のようにDNSキャッシュサーバとユーザだけの通信で完結しますが、キャッシュが無ければ次のように再帰検索が行われます。

DNS RPZ機能が有効化されていて、ブロック対象のFQDNに対する名前解決が要求された場合、次のようにDNSキャッシュサーバが偽の結果かNXDOMAIN(該当無し)を返します。

仕様書には、以下のようなサンプルが記述してあります。


 CNAMEを使って偽の結果を返す場合

 bad_domain     CNAME     walled-garden.isp.net.
 *.bad_domain   CNAME     walled-garden.isp.net.


 NXDOMAINにする場合

 bad_domain     CNAME     .
 *.bad_domain   CNAME     .


 メールとその他を別々にリダイレクトしたい場合

 bad_domain     MX      0 wgmail.isp.net.
 bad_domain     A       192.168.6.66
 *.bad_domain   MX      0 wgmail.isp.net.
 *.bad_domain   A       192.168.6.66

近い将来、標準的なBINDを使って、このように「手軽に」ブロッキングできるようになる環境が世界中で整えられて行くものと思われます。

ISC BINDは仕組みだけを提供

ISC BINDは、DNSブロッキングの仕組みだけを提供し、「何をブロックすべきか」に関しての情報は範疇外としています。

ブロッキングの話題

最近、日本のインターネットインフラ界隈でブロッキングに関する話題が増えてきました。 インフラ屋さんはブロッキングなどやりたくない人が非常に多い印象がありますが、話題にせざるを得ない状況が発生しているようです。

DNSによるブロッキングには、必要以上にブロックを行ってしまう「オーバーブロッキング」の問題などがあります(参考)。

たとえば、「このドメイン名の下に児童ポルノコンテンツを発見したから、このドメイン名のホストは全部ブロックする」とやったとき、同じホスティング事業者を使っている全く関係がない通常コンテンツまでブロックされるという状況が発生します。 JANOG26での楠さん(@masanork)の発表資料を見ると、日本国内にある「xdvi日本語化・拡張パッチ」というページがフィンランドでブロックされているという事例が紹介されています。

こういった運用的な問題が発生しがちな技術であることがわかっているとはいえ、ブロッキングを求める人々と、それを実現する環境が整備されていってしまっているのが現在の状況なのかも知れません。

最後に

現時点では、DNS RPZ用のパッチだけが公開されており、BINDの標準機能ではありません。 しかし、BIND9 9.7.3からは、このブロッキング機能が標準搭載されるようです。 実装に至った目的はSPAMやフィッシング詐欺などになのでしょうが、その他の目的に利用されるには時間がかからないのだろうと推測しています。

今まで、そういったことを出来る製品は色々ありましたが、BINDにまでその機能が入ったというのは、割と大きな変化なのだろうと思います。 「自前で実装すればできる」というのと「オプションをONにすればできる」には、技術的にはさほど大きな違いはありませんが、運用的な側面や心理的な側面には大きな違いがありそうな気がします。

今後も、明示的にブロッキング機能を設定しなければブロッキングは行われませんが、そのような機能が世界で最も利用されているDNSサーバに実装されることになったことは、今後各方面に対して大きな影響を与えて行きそうだと思う今日この頃です。

DNSブロッキング関連記事

   このエントリをはてなブックマークに登録