Bind 响应策略区域 Response Policy Zones (RPZ)

2022-11-19 09:44:22 浏览数 (2)

响应策略区域(Response policy zones)

响应策略区域(RPZ)是使用递归DNS服务器控制查询者可以查询和不能查询的内容的一种方式。通过了解客户端正在查询的服务器和服务的信誉,可以确定递归服务器接收某些域名查询或在DNS响应中看到指向那些恶意服务器的信息时要采取的措施。

RPZ工作原理的总体思路是,可以为如何处理特定查询(或响应)创建策略,并选择要采取的一些可能操作(如将客户端重定向到内部安全页),然后将这些策略存储在DNS服务器上的特别权威区域中。还可以通过将这些区域从DNS服务器传输到(另外的)DNS服务器来共享这些区域。

RPZ中的记录也是由owner name,type和rdata组成。只是RPZ区域不会用于接收用户发起的请求,只在用户发起的请求时会匹配RPZ定义的规则。RPZ规则中owner name用于定义触发器,rdata用于定义动作,即满足触发器的请求会按照策略执行相应的动作。

RPZ 作用

  1. 劫持互联网恶意域名
  2. 丢弃指定域名的解析请求
  3. 指定域名解析到NXDOMAIN .
  4. 禁用恶意IP的DNS请求
  5. 封禁I域名对应IP解析

RPZ触发器

  • Client IP Address,owner name为:以.rpz-client-ip结尾。用于匹配发起请求的客户端的IP地址,双栈均可支持。定义IPv4地址段的客户端时,如B1.B2.B3.B4/prefix,在RPZ策略规则的书写规则中应当写成prefix.B4.B3.B2.B1;定义IPv6地址段的客户端时,如B1:B2:B3:B4:B5:B6:B7:B8/prefix,在RPZ策略规则的书写格式中应当写成prefix.B8.B7.B6.B5.B4.B3.B2.B1。如同IPv6地址可以使用双冒号缩写,此处的IPv6地址可以相应的使用zz替代。如2001::6:180/128可写成128.180.6.zz.2001。
  • QDNAME,owner name 为:正常域名,可带通配符。用于匹配发起请求包或应答包中请求域名字段的域名。
  • Response IP Address,owner name为:以.rpz-ip结尾。用于匹配应答记录中的的IP地址,双栈均可支持。IP地址段的编写格式与Client IP Address中描述的一致。

匹配到180.101.49.0/24IP段后,www.baidu.com将会返回NXDOMAIN。

  • NSDNAME,owner name 为:以.rpz-nsdname结尾。用于匹配应答记录中NS的名字,可以在回答部分,授权部分。
  • NSIP,owner name 为:以.rpz-nsip结尾。用于匹配应答记录中NS名字对应的IP地址(A或AAAA的数据),可以在回答部分,附加部分。

RPZ执行动作

  • NXDOMAIN,rdata为:. 。动作为回复NXDOMAIN类型的应答。当RPZ存在一个域名CNAME记录指向根域(.)的话,recursor不会向上游DNS进行查询,直接返回NXDOMAIN,即域名不存在。
  • NODATA,rdata为:*. 。动作为回复NODATA类型(rcode为noerror但是answer个数为0)的应答。当RPZ存在一个域名CNAME记录指向通配符顶级域名,recursor不会向上游DNS进行查询,直接返回NODATA,即空返回。
  • PASSTHRU,rdata为:rpz-passthru. 。动作为透传,即RPZ白名单,不走RPZ策略规则。ok.example.com CNAME记录指向rpz-passthru.,会正常返回查询结果,尽管example.com子域下其他域名会返回NXDOMAIN。
  • DROP,radata为:rpz-drop. 。动作为丢弃,即不做应答。当RPZ存在一个域名CNAME指向rpz-drop.,recursor会直接丢弃查询请求,查询客户端无法得到正确响应。
  • TCP-ACTION,rdata为:rpz-tcp-only. 。动作为将应答中的TC标志置1,强制用户发起TCP的DNS请求,用于攻击防护。当RPZ存在一个域名CNAME指向rpz-tcp-only.,recursor会引导客户的重新以TCP协议再次发起域名查询。
  • LOCAL DATA,rdata为:正常域名 。动作为回复指定预先配置好的解析结果。

Bind响应策略区域配置

vim /etc/named/named.conf

RPZ日志配置

RPZ zone 配置

vim named.rfc1912.zones

RPZ 区域主配置文件

vim /var/named/rpz.test.local

代码语言:javascript复制
$TTL 10M
@         IN      SOA     kylin.zabbix.com.      dnsadmin.zabbix.com. (                        1   ;序列号                        1H  ;1小时后刷新                        5M  ;15分钟后重试                        7D  ;1星期后过期                        1D );否定缓存TTL为1天          IN      NS     kylin
www.jd.com IN A  192.168.100.161
*.google.com IN A  192.168.100.161
www.souhu.com   CNAME  www.baidu.com.
www.3399.com    CNAME  .

RPZ 区域域名dig测试

www.jd.com

*.google.com

www.souhu.com

www.3399.com

查看RPZ日志

代码语言:javascript复制
tail -n 10 /var/named/data/rpz.log

0 人点赞