以前、「再帰問い合わせ有効のままの DNS サーバがあった件」というエントリーで書いたように、当社で管理しているコンテンツサーバの中に、キャッシュサーバの機能が有効になったままのものがあったので、再帰的クエリーの実行は一切許さない
allow-recursion { none; };
という設定をおこなった。
しかし、今回、お客さんがテストでこのサーバを一時的にキャッシュサーバとして使いたいということだったので、特定のホストからの問い合わせ要求だけ受けるように設定を変更した。
内容的には、named.conf の中の、上記の allow-recursion { none; }; 記述をコメントにして、以下のように設定。
acl my-network {124.XXX.XXX.XXX/32;202.XXX.XXX.XXX/32;180.XXX.XXX.XXX/32;};options {directory "/var/namedb";pid-file "/var/namedb/run/named.pid";allow-transfer {180.XXX.XXX.XXX;};allow-query {localhost;my-network;};allow-query-cache {localhost;my-network;};// allow-recursion { none; };};
まず acl で、my-network という IP アドレスグループを設定。
今回は 3台とも個別のサーバなので 32ビットマスクをかけて。
次に options で、allow-query と allow-query-cache に自分自身(localhost)と先ほど作成したグループを設定。
allow-query、allow-query-cache の設定で、これらのホストからの DNS クエリーは許すということで、つまりキャッシュサーバとして使わせるということ。
この設定を行うまでは、このサーバをキャッシュサーバとして使おうとしても、
% nslookup> www.yahoo.co.jpServer: named.exsample.comAddress: 124.XXX.XXX.XXX#53Non-authoritative answer:*** Can't find www.yahoo.co.jp: No answer
となっちゃうが、上記設定を行った後は、
% nslookup> www.yahoo.co.jpServer: named.exsample.comAddress: 124.XXX.XXX.XXX#53Non-authoritative answer:www.yahoo.co.jp canonical name = www.g.yahoo.co.jp.Name: www.g.yahoo.co.jpAddress: 203.216.231.189
という具合に、正しく名前が引けるようになる。
DNS サーバが、キャッシュサーバとして稼働しているということだ。
ちなみに、上記設定をして 10秒後には、
Dec 11 16:40:32 localhost named[1101]: client 49.XXX.XXX.XXX#44640: query 'host1.exsample.com/A/IN' denied
というようなログが数秒おきに山のように出力されるようになった。
他人の DNS を DDoS 攻撃の踏み台にしようとひたすらインターネット上のキャッシュサーバを探し続けている気持ち悪いやつが世の中には一杯いるんだな。
死ぬような痛みを感じながらも死ねないまま七転八倒したあげく、自分の糞を喉に詰まらせて死ぬとか、そういう末路をたどればいいのにな、こういう犯罪者どもは。
コメントする