DNS-06-安全设置

DNS-06-安全设置

实验环境

ns1.magedu.com 172.18.71.101/24 CentOS-6.7-x86_64 父域        可以连接互联网
ns1.dev.magedu.com 172.18.71.102/24 CentOS-7.2-x86_64 子域    不能连接互联网
localhost.localdomain 172.18.71.103/24 CentOS-7.2-x86_64 测试机

iptablesSELinux均处于关闭状态。

安装bind

[root@ns1 ~]# yum install -y bind bind-libs bind-utils

首先,分别修改两个节点主机的主配置文件/etc/named.conf,注释掉仅允许本机查询请求和dnssec(可能影响实验结果),并在监听地址列表中增加各自向外部提供服务的IP地址。

options {
    listen-on port 53 { 127.0.0.1; 172.18.71.101; };
    ...
    //allow-query     { localhost; };
    ...

    //dnssec-enable yes;
    //dnssec-validation yes;
    //dnssec-lookaside auto;
    ...
};

时间同步

一般来说,多节点协同工作首先就是要校准时间,使之时间同步。联网状态下可使用ntpdate命令统一找授时中心校准,不能联网可使用date命令手动校准。

递归查询的安全设置

首先,参照DNS-05-转发配置一个父域服务器和一个子域服务器,并在子域设置全局转发,将非域内解析请求全部转发给父域服务器。

在测试机上使用dig命令测试,此时是可以解析的。

[root@localhost ~]# dig -t A www.baidu.com @172.18.71.102

; <<>> DiG 9.9.4-RedHat-9.9.4-29.el7 <<>> -t A www.baidu.com @172.18.71.102
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 26725
;; flags: qr rd ra; QUERY: 1, ANSWER: 3, AUTHORITY: 0, ADDITIONAL: 1

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

;; ANSWER SECTION:
www.baidu.com.        1197    IN    CNAME    www.a.shifen.com.
www.a.shifen.com.    296    IN    A    61.135.169.121
www.a.shifen.com.    296    IN    A    61.135.169.125

;; Query time: 1 msec
;; SERVER: 172.18.71.102#53(172.18.71.102)
;; WHEN: 六 4月 09 02:58:41 CST 2016
;; MSG SIZE  rcvd: 101

在父域服务器主配置文件/etc/named.conf中设置不允许给任何主机做递归查询。

options {
    ...
    allow-recursion { none; };
    ...    
};

重载配置文件

[root@ns1 named]# rndc reload
server reload successful

清空父域和子域的缓存

[root@ns1 named]# rndc flush

再次测试,发现已经无法解析了。

[root@localhost ~]# dig -t A www.baidu.com @172.18.71.102

; <<>> DiG 9.9.4-RedHat-9.9.4-29.el7 <<>> -t A www.baidu.com @172.18.71.102
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: SERVFAIL, id: 23120
;; flags: qr rd ra; QUERY: 1, ANSWER: 0, AUTHORITY: 0, ADDITIONAL: 1

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

;; Query time: 2 msec
;; SERVER: 172.18.71.102#53(172.18.71.102)
;; WHEN: 六 4月 09 03:01:25 CST 2016
;; MSG SIZE  rcvd: 42

在父域服务器主配置文件/etc/named.conf中增加一个ACL列表internel_network,将子域服务器IP地址加入此列表,并设置只允许给此列表中主机做递归查询。

options {
    ...
    allow-recursion {
            internal_network;
    };
    ...    
};

acl internal_network {
    172.18.71.102;
    172.18.71.0/24;
};

重载配置文件

[root@ns1 named]# rndc reload
server reload successful

再次测试,又可以解析了。

[root@localhost ~]# dig -t A www.baidu.com @172.18.71.102

; <<>> DiG 9.9.4-RedHat-9.9.4-29.el7 <<>> -t A www.baidu.com @172.18.71.102
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 49036
;; flags: qr rd ra; QUERY: 1, ANSWER: 3, AUTHORITY: 0, ADDITIONAL: 1

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

;; ANSWER SECTION:
www.baidu.com.        1200    IN    CNAME    www.a.shifen.com.
www.a.shifen.com.    300    IN    A    61.135.169.125
www.a.shifen.com.    300    IN    A    61.135.169.121

;; Query time: 2560 msec
;; SERVER: 172.18.71.102#53(172.18.71.102)
;; WHEN: 六 4月 09 03:08:43 CST 2016
;; MSG SIZE  rcvd: 101

结论

通过以上设置可以限制只有访问控制列表(acl)中的主机才可以发起某些操作指令。访问控制指令有:

allow-query  {};  允许查询的主机;即白名单;
allow-transfer {};  允许向哪些主机做区域传送;默认为向所有主机;应该配置仅允许从服务器;
allow-recursion {}; 允许哪此主机向当前DNS服务器发起递归查询请求;应该配置仅允许内部网络和可信主机;
allow-update {}; DDNS,允许动态更新区域数据库文件中内容;

acl除了可以指定主机或网络外还有4个内置:noneanylocallocalnet。实际上acl并不是做访问控制使用的,它只是一个或多个主机集合,在视图的match-clients {};中也可以使用。


你可能感兴趣的:(dns)