■DNSSEC Bindについて
※以下のリンクrndcの設定後にDNSSECを設定する。
bindのログ出力とrndcによるキャッシュコントロール
http://d.hatena.ne.jp/labunix/20120502
squeeze+bindでDNSSECに対応する
http://d.hatena.ne.jp/labunix/20120503
squeeze+bindでDNSSECに対応する(セカンダリDNS)
http://d.hatena.ne.jp/labunix/20120504
IP制限あれこれ for Squeeze
http://d.hatena.ne.jp/labunix/20121001
■隔離環境で行う場合の注意点
外部にTCP/53が通らず、UDP/53のみの環境で、
自身への問い合わせのみDNSSEC対応するには、以下の3ファイルは取得出来ないので、予め準備しておく。
/var/cache/bind/managed-keys.bind
root-anchors.key
/var/cache/bind/trusted-keys
※「trusted-keys」は以下リンクやググるなどして下さいw。。。
無くても良かったような、必要だったような。。。(指定する場合はinclude文で)
Using the root DNSSEC key in BIND 9 resolvers
http://www.isc.org/community/blog/201007/using-root-dnssec-key-bind-9-resolvers
■「1053/udp」について、
bindの便利なオプションを見つけたので、
以下も併せて「options」ステートメントに追加。
BINDが送出するUDPの送信元ポートを固定する
http://www.tatsuyababa.com/NW-DNS/NW-200309-DNSQA01.pdf
$ sudo grep 1053 /etc/bind/named.conf.options
query-source address 192.168.188.188 port 1053;
transfer-source 192.168.188.188 port 1053;
notify-source 192.168.188.188 port 1053;
■「1053/udp」のIP制限を設定すると以下のようになります。
$ netstat -an | grep 53 | grep ^[tu][cd]
tcp 0 0 192.168.188.188:53 0.0.0.0:* LISTEN
tcp 0 0 127.0.0.1:953 0.0.0.0:* LISTEN
tcp6 0 0 :::53 :::* LISTEN
udp 0 0 192.168.188.188:53 0.0.0.0:*
udp 0 0 192.168.188.188:1053 0.0.0.0:*
udp6 0 0 :::53 :::*
■bindのバージョンを隠す
$ sudo grep "version " /etc/bind/named.conf.options
version "Unknown";
$ nslookup -type=txt -class=chaos version.bind 192.168.188.188
Server: 192.168.188.188
Address: 192.168.188.188#53
version.bind text = "Unknown"
$ dig @192.168.188.188 chaos txt version.bind | grep "TXT"
;version.bind. CH TXT
version.bind. 0 CH TXT "Unknown"
■「options」ステートメントで以下のように記載すると
一切の問い合わせ要求を無視出来るのを利用して、
他NICからの問い合わせを無視します。
※「allow-query」等は設定されているものとして。。。
$ sudo grep -A 3 blackhole /etc/bind/named.conf.options
blackhole {
192.168.72.0/24;
192.168.188.255;
};
■確認方法はsnortやtcpdump、tsharkで。
snortは統計が見れるのでお勧め。
$ sudo snort -dev host 192.168.188.255
$ sudo snort -dev net 192.168.72.0/24
$ sudo tcpdump -nv host 192.16.188.255
$ sudo tcpdump -nv net 192.168.72.0/24
(Windows+WireShark付属のtsharkの場合)
> tshark.exe -i 1 -n host 192.168.188.255
> tshark.exe -i 1 -n net 192.168.72.0/24
■セキュリティ、クライアントやクエリのログを出す。
※以下のように設定し、必要に応じてコメントアウトを外す。
$ grep ^logging -A 16 /etc/bind/named.conf.options
logging {
channel "default-log" {
file "/var/log/bind/bind.log" versions 10 size 100k;
severity info;
print-time yes;
print-severity yes;
print-category yes;
};
category default { "default-log"; };
category security { "default-log"; };
category queries { "default-log"; };
//category client { "default-log"; };
category lame-servers { null; };
};
■問い合わせがあると「queries」のログが出る。
※「dnssec」の問い合わせも「queries」ログを有効にすると出力される。
$ dig +dnssec dnssec.jp
$ sudo tail -f /var/log/bind/bind.log
02-Oct-2012 21:30:00.172 queries: info: client 192.168.188.188#50475: query: dnssec.jp IN A +ED (192.168.188.188)
02-Oct-2012 21:30:00.176 dnssec: info: validating @0x7f230f51fc90: . DNSKEY: got insecure response; parent indicates it should be secure
02-Oct-2012 21:30:00.367 dnssec: info: validating @0x7f230f520000: jp DNSKEY: got insecure response; parent indicates it should be secure
02-Oct-2012 21:30:00.525 dnssec: info: validating @0x7f23000018c0: dnssec.jp DNSKEY: got insecure response; parent indicates it should be secure
■rndcでチェックすると、以下のように出る。
バージョン情報を隠さなければ、「(Unknown)」は無くなるし、
「queries」のログをオフにしてあれば、「query logging is OFF」となる。
$ sudo rndc status
version: 9.7.3 (Unknown)
CPUs found: 2
worker threads: 2
number of zones: 24
debug level: 0
xfers running: 0
xfers deferred: 0
soa queries in progress: 0
query logging is ON
recursive clients: 0/0/400
tcp clients: 0/100
server is up and running
※私のブログの手順ではrndcからの管理操作は連携していない。「rndc.conf」の設定が必要。
統計の確認(squidに対するsquidclientのような用途)に使用する。
■上記で「0/0/400」となっている箇所は、
「queries」ログを正しく取得する為に以下のように制限を行っている。
※但し、超過した場合はDNSクエリの問い合わせができなくなる。
$ sudo grep recursive-clients /etc/bind/named.conf.options
recursive-clients 400;
■統計を見る。
$ sudo rndc stats
$ sudo cat /var/cache/bind/named.stats
+++ Statistics Dump +++ (1349182671)
++ Incoming Requests ++
++ Incoming Queries ++
++ Outgoing Queries ++
[View: default]
[View: _bind]
++ Name Server Statistics ++
++ Zone Maintenance Statistics ++
++ Resolver Statistics ++
[Common]
[View: default]
[View: _bind]
++ Cache DB RRsets ++
[View: default]
[View: _bind (Cache: _bind)]
++ Socket I/O Statistics ++
2 UDP/IPv4 sockets opened
1 UDP/IPv6 sockets opened
2 TCP/IPv4 sockets opened
1 TCP/IPv6 sockets opened
3 TCP/IPv4 sockets closed
4 TCP/IPv4 connections accepted
++ Per Zone Query Statistics ++
--- Statistics Dump --- (1349182671)
■例えば、DNSSECを含む問い合わせがあると以下のようになる。
+++ Statistics Dump +++ (1349179291)
++ Incoming Requests ++
13417 QUERY
++ Incoming Queries ++
11888 A
138 NS
142 MX
154 TXT
1008 AAAA
50 DS
23 DNSKEY
14 DLV
++ Outgoing Queries ++
[View: default]
15202 A
114 NS
74 TXT
539 AAAA
21099 DS
693 DNSKEY
5257 DLV
[View: _bind]
++ Name Server Statistics ++