Hello list,

inspired by Brian Krebs’ article

Omitting the “o” in .com Could Be Costly
https://krebsonsecurity.com/2018/03/omitting-the-o-in-com-could-be-costly/

this weekend I set out to reconfigure BIND running in my local network to 
prevent resolving any domain with a «cm» TLD (and, based on further research, a 
few others known for phishing and spreading malware).

Unfortunately, I can’t make RPZ to work at all.

System:
Linux HOSTNAME 4.9.0-6-amd64 #1 SMP Debian 4.9.82-1+deb9u3 (2018-03-02) x86_64 
GNU/Linux
/etc/debian_version: 9.4

BIND
dpkg --list | grep -i bind9
ii  bind9                               1:9.10.3.dfsg.P4-12.3+deb9u4   amd64    
    Internet Domain Name Server

To further debug the problem and not accidentally kill DNS resolving in the 
household, I set up BIND on a second server (similar OS configuration as stated 
above, but with a bare minimum BIND configuration to exclude conflicts with 
advanced configuration options) in the same LAN.

Symptoms (on both servers)
* All queries are logged in /var/log/named/queries.log
* The RPZ log at /var/log/named/rpz.log stays empty no matter what queries I 
place which should be caught by RPZ
* When using «allow-query { any; };» in the RPZ zone definition I can 
successfully query BIND for predefined domains (e.g. youtube.com.rpz) and it 
returns the intended result (ie. the sinkhole address in the local network)
* When querying youtube.com, BIND resolves it to the public and correct address 
(since I have not configured any forwarders in BIND itself, I assume it uses 
the production DNS at 10.12.34.12 defined in /etc/resolv.conf (?))

Some log excerpts, if of any use:

default.log
01-Apr-2018 14:39:39.154 general: info: managed-keys-zone: loaded serial 0
01-Apr-2018 14:39:39.163 general: info: zone rpz/IN: loaded serial 2018040103
01-Apr-2018 14:39:39.163 general: notice: all zones loaded
01-Apr-2018 14:39:39.163 general: notice: running
01-Apr-2018 14:39:49.130 general: info: received control channel command 'flush'
01-Apr-2018 14:39:49.130 general: info: flushing caches in all views succeeded
01-Apr-2018 15:01:46.451 general: info: received control channel command 
'dumpdb -all'
01-Apr-2018 15:01:46.451 general: info: dumpdb started: -all
01-Apr-2018 15:01:46.673 general: info: dumpdb complete

queries.log
01-Apr-2018 14:31:17.436 queries: info: client 10.12.34.102#59664 
(youtube.com): query: youtube.com IN A +E (10.12.34.11)
01-Apr-2018 14:37:38.574 queries: info: client 10.12.34.102#54125 
(youtube.com): query: youtube.com IN A +E (10.12.34.11)
01-Apr-2018 14:37:47.381 queries: info: client 10.12.34.102#57566 
(youtube.com.rpz): query: youtube.com.rpz IN A +E (10.12.34.11)
01-Apr-2018 14:39:53.181 queries: info: client 10.12.34.102#58174 
(youtube.com.rpz): query: youtube.com.rpz IN A +E (10.12.34.11)
01-Apr-2018 14:39:58.196 queries: info: client 10.12.34.102#61735 
(youtube.com): query: youtube.com IN A +E (10.12.34.11)
01-Apr-2018 14:50:02.495 queries: info: client 10.12.34.102#57401 
(youtube.com): query: youtube.com IN A +E (10.12.34.11)
01-Apr-2018 14:50:32.661 queries: info: client 10.12.34.102#62122 
(youtube.com.rpz): query: youtube.com.rpz IN A +E (10.12.34.11)

rndc -c /etc/rndc.conf dumpdb -all
cat /named_dump.db
...
; Zone dump of 'rpz/IN'
;
rpz.                                          60 IN SOA         localhost. 
root.localhost. 2018040103 60 60 60 60
rpz.                                          60 IN NS          localhost.
rpz.                                          60 IN A           10.12.34.11
google.com.rpz.                               60 IN A           10.12.34.12
youtube.com.rpz.                              60 IN CNAME       .
...

This is the following (minimal) configuration on my test server:

named.conf
logging {
  channel default {
    file "/var/log/named/default.log";
    //severity debug 3;
    severity info;
    print-time yes;
    print-severity yes;
    print-category yes;
  };
  category default { default; };

  channel queries {
    file "/var/log/named/queries.log";
    //severity debug 3;
    severity info;
    print-time yes;
    print-severity yes;
    print-category yes;
  };
  category queries { queries; };

  channel rpz-queries {
    file "/var/log/named/rpz.log";
    severity debug 3;
    //severity info;
    print-time yes;
    print-severity yes;
    print-category yes;
  };
  category rpz { rpz-queries; };
};

key "rndc-key" {
    algorithm hmac-md5;
    secret «S1KR1T";
};

controls {
    inet * port 953
    allow { 127.0.0.1; 10.12.34.11; } keys { "rndc-key"; };
};

zone "rpz" {
    type master;
    file "/etc/bind/zones/rpz.dns";
    //allow-query { none; };
    allow-query { any; };
};

named.conf.local
EMPTY

named.conf.options
options {
        response-policy    { zone "rpz"; };
};

zones/rpz.dns
$TTL 60
@       IN SOA  localhost. root.localhost. (
                                 2018040103    ; Serial number
                                 60            ; Refresh
                                 60            ; Retry
                                 60            ; Expire
                                 60          ) ; Minimum TTL
@       IN NS   localhost.
@       IN A    10.12.34.11
youtube.com CNAME .
google.com A 10.12.34.12

Resolving examples
$ dig youtube.com @10.12.34.11

; <<>> DiG 9.10.6 <<>> youtube.com @10.12.34.11
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 29841
;; flags: qr rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 4, ADDITIONAL: 9

;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 4096
;; QUESTION SECTION:
;youtube.com.                   IN      A

;; ANSWER SECTION:
youtube.com.            300     IN      A       172.217.19.174

;; AUTHORITY SECTION:
youtube.com.            172196  IN      NS      ns1.google.com.
youtube.com.            172196  IN      NS      ns2.google.com.
youtube.com.            172196  IN      NS      ns3.google.com.
youtube.com.            172196  IN      NS      ns4.google.com.

;; ADDITIONAL SECTION:
ns1.google.com.         172196  IN      A       216.239.32.10
ns1.google.com.         172196  IN      AAAA    2001:4860:4802:32::a
ns2.google.com.         172196  IN      A       216.239.34.10
ns2.google.com.         172196  IN      AAAA    2001:4860:4802:34::a
ns3.google.com.         172196  IN      A       216.239.36.10
ns3.google.com.         172196  IN      AAAA    2001:4860:4802:36::a
ns4.google.com.         172196  IN      A       216.239.38.10
ns4.google.com.         172196  IN      AAAA    2001:4860:4802:38::a

;; Query time: 18 msec
;; SERVER: 10.12.34.11#53(10.12.34.11)
;; WHEN: Sun Apr 01 14:50:02 CEST 2018
;; MSG SIZE  rcvd: 311

$ dig youtube.com.rpz @10.12.34.11

; <<>> DiG 9.10.6 <<>> youtube.com.rpz @10.12.34.11
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 38286
;; flags: qr aa rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 1, ADDITIONAL: 1

;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 4096
;; QUESTION SECTION:
;youtube.com.rpz.               IN      A

;; ANSWER SECTION:
youtube.com.rpz.        60      IN      CNAME   .

;; AUTHORITY SECTION:
.                       10161   IN      SOA     a.root-servers.net. 
nstld.verisign-grs.com. 2018033101 1800 900 604800 86400

;; Query time: 0 msec
;; SERVER: 10.12.34.11#53(10.12.34.11)
;; WHEN: Sun Apr 01 14:50:32 CEST 2018
;; MSG SIZE  rcvd: 132

Thank you for your support
Best regards,
Mario
_______________________________________________
Please visit https://lists.isc.org/mailman/listinfo/bind-users to unsubscribe 
from this list

bind-users mailing list
bind-users@lists.isc.org
https://lists.isc.org/mailman/listinfo/bind-users

Reply via email to