bind9の基本的なセキュリティを備えた設定


ネームサーバのセキュリティ、DNSリフレクション、DNS ampなどを使って悪用されたりすることが多いと言われています。

http://web-tan.forum.impressrd.jp/e/2009/01/15/4414
http://www.atmarkit.co.jp/fwin2k/win2ktips/781dnsamp/dnsamp.html

基本的な設定ができていれば問題はないはずなのですがなかなか慣れないとbindの設定は難しいものです。recursionの設定とLOGさえしっかりと行っておくと万が一の対応も出来るかと思います。本当に基本的な設定、ゾーンファイルの定義などはここでは説明していません。ゾーンファイルの書き方、設定の仕方はgoogleなどで検索してみてください。bindの基本的な設定は下記のとおり。

/etc/bind/named.confファイル

include "/etc/bind/named.conf.options";
include "/etc/bind/named.conf.logging";
include "/etc/bind/named.conf.zones";
include "/etc/bind/named.conf.local";

/etc/bind/named.conf.zonesファイル

acl localnet {
        127.0.0.1;
};
view "internal" {
        match-clients { localnet; };
        recursion yes;
        allow-recursion { localnet; };
        allow-query { localnet; };
        allow-transfer{ localnet; };
        zone "." {
                type hint;
                file "/etc/bind/db.root";
        };
        zone "localhost" {
                type master;
                file "/etc/bind/db.local";
        };
        zone "127.in-addr.arpa" {
                type master;
                file "/etc/bind/db.127";
        };
        zone "0.in-addr.arpa" {
                type master;
                file "/etc/bind/db.0";
        };
        zone "255.in-addr.arpa" {
                type master;
                file "/etc/bind/db.255";
        };
};
view "external" {
        match-clients{ any; };
        allow-query { any; };
        recursion no;
        zone "yourdomain.com" {
                type master;
                file "/etc/bind/yourdomain.com.zone";
        };
};

/etc/bind/named.conf.optionsファイル

options {
        directory "/var/cache/bind";
        recursion no;
        allow-query { none; };
        allow-transfer{ none; };
        auth-nxdomain no; # conform to RFC1035
        listen-on-v6 { any; };
};
/etc/bind/named.conf.loggingファイル

        logging {
	    channel "log_default"{
                file "/var/log/named/named.log" versions 7 size 10m;
                severity info;
                print-time yes;
                print-category yes;
        };
        channel "log_security" {
                file "/var/log/named/security.log" versions 3 size 10m;
                severity info;
                print-time yes;
                print-category yes;
        };
        category default { "log_default"; };
        category security { "log_security"; };
        category client { "log_security"; };
};

設定ファイルの構文チェックは

# named-checkconf

で行います。
設定してもこれをどうテストするかというのも重要です。テスト、デバック方法がわからないというケースが意外と多くあるように思います。

# tcpdump -n udp and port 53 // パケットの閲覧
# tail -f /var/log/named/security.log // namedログファイルの閲覧
# dig yourdomain.com @nameserver.com // 実際にDNSへの問い合わせ nameserver.comへ問い合わせ

ゾーン設定のテンプレもついでにのせておきます。

google appsの設定をサンプルにしておきました。

/etc/bind/yourdomain.com.zoneファイル

$TTL 3600
@ IN SOA ns1.yourdomain.com. info.yourdomain.com. (
        2011110601
        3600
        900
        36000
        3600
)
                IN      NS      ns1.yourdomain.com.
;
                IN      MX      1       aspmx.l.google.com.
                IN      MX      5       alt1.aspmx.l.google.com.
                IN      MX      5       alt2.aspmx.l.google.com.
                IN      MX      10      aspmx2.googlemail.com.
                IN      MX      10      aspmx3.googlemail.com.
;
                IN      A       0.0.0.0
ns1          IN      A       0.0.0.0
www        IN       A       0.0.0.0
;
mail            IN      CNAME   ghs.google.com.
docs            IN      CNAME   ghs.google.com.
calendar        IN      CNAME   ghs.google.com.
sites           IN      CNAME   ghs.google.com.
start           IN      CNAME   ghs.google.com.
;
google._domainkey 86400 IN TXT ("v=DKIM1; k=rsa; p=XXXXXXXXXXXXX")

ゾーン設定ファイルの詳細なチェックは

# named-checkconf -z

などで出来ます。

  • このエントリーをはてなブックマークに追加

コメントをどうぞ

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です