[转载]DNS扩展机制(EDNS0)
信息来源:邪恶八进制信息安全团队([url]www.eviloctal.com[/url])[b]含图资料在附件里[/b]
摘要
DNS协议中包括一些长度固定的域,这些域在以后的使用中会因为功能的增加而变得不够用了,本文主要讨论如何利用现有的情况对它进行扩展。
1 - 原理
DNS指定了一种消息机制,利用这种消息机制可以传输编码选项,错误和压缩后的名字。DNS消息的长度是固定的,许多DNS协议对包的限制太死而影响了使用。现存的用户不必知道如何解释协议扩展的细节,实际上,这些客户在需要这些特征时可以进行升级,只有这些新特征用到了扩展部分。我们必须考虑客户如何处理这些多余的域,并考虑到相应的兼容性问题。
2 - 影响到的协议单元
DNS消息头的第二个16位字,被分为一个4位OPCODE,一个4位RCODE和一此一位的标记,有个保留的Z位被分配为不同的用途,大部分的RCODE值都已被使用,现在需要更多的标记和RCODE值。传输格式域标签的前2位被使用代表标签的类型。有些文档将四种可能的类型保留两种。而要求的标签数可能大大多于这个数目,因此需要更多的标签。DNS消息长度限制于512字节。因为必须要提供新机制以提供更大的缓冲,以适应更大的包。
3 - 扩展标记类型
"0 1"标签类型可以用于指示一个可扩展的标记类型,它的值可在标签头一字节的低六位进行扩展。所有因此而得到的标准类型必须使用扩展标签类型。"1 1 1 1 1 1"扩展标签类型留做以后使用。
4 - OPT pseudo-RR
OPT pseudo-RR可被加入请求或响应的附加数据区内。OPT称为pseudo-RR,是因为它不传输任何数据。OPT RR不应该被缓冲,转发或从主文件中存取。每条信息中的OPT pseudo-RR数量必须小于等于1。OPT RR有固定部分,也有表现为{属性,值}对的选项集,这个集是不不定的。固定部分有DNS元数据,还有一些新协议单元,这些新协议在未来可以比较流行。下面是固定部分的结构:
域名
域类型
说明
NAME
domain name
空(根域)
TYPE
u_int16_t
OPT
CLASS
u_int16_t
发送者的UDP payload大小
TTL
u_int32_t
扩充RCODE和标记
RDLEN
u_int16_t
描述RDATA
RDATA
octet stream
{属性,值} 对
OPT RR的变长域在RDATA中,它可以是0到多个以下结构的集合:
OPTION-CODE由IANA指定
OPTION-LENGTH是OPTION-DATA的大小
OPTION-DATA根据不同的OPTION-CODE而不同
发送者的payload大小是最大的UPD payload大小的字节数。这样的大小刚好可以在网络上进行重组和传输。请注意:512字节的UPD payload需要576字节的IP缓冲,这就需要在连接的以太网要选择1280。请求和响应者都需要注意路径发现MTU(path discovered MTU)的大小。请求方的最大payload大小可能经常变化,所以应该事先留有相应的余量。虽然会变化,可是我们必须要求在两个操作之间payload的大小必须保持一致。下面就是一个例子:一个意义的QUERY,来获得响应方的最大UDP payload大小,下来是一个利用这个大小的UPDATE命令。我们不应该对UDP payload的大小进行限制,因为我们把栈设置为可以重组64KB大小的数据报,所以我们不应该假设每个操作需要超过4KB的状态内存。下面是扩展RCODE和标记:
EXTENDED-RCODE:形成扩展12位RCODE的高8位。注意:EXTENED-RCODE值0代表使用了非扩展的RCODE。
VERSION:表示实现的程度。与本文档安全兼容的就使用"0.",请求方应该使用最低的版本号。请求方的版本号理想情况下应该是运行时动态配置的。如果响应方未实现请求的版本号,响应为RCODE=BADVERS,所有的响应将被限制在请求方限制的版本能够识别的范围之内。但是每个响应应该是实现方最高的版本。通过这种方法请求方就能够知道响应方的最高版本。
Z:设置为0
5 传输问题
出现了OPT pseudo-RR就表示请求方完全实现了EDNS的给定版本,能够正确理解响应的内容。如果没有使用这个标记,则认为请求者未实现本文档中的任何要求,响应方不应该在响应中使用任何协议扩展。响应方如果不能识别协议扩展,应该发送RCODE NOTIMPL,FORMERR或SERVFAIL。因为在确定可以使用协议扩展前必须要进行试探,不要对方不支持你也要用。如果响应方的实现级别由请求者缓冲,应该进行进行新的测试,以确定这一结果。
6 安全问题
请求方指定最大的缓冲区大小时,如果请求方能够发送过大的包给中间网关转发,会可以打开一个新的DNS拒绝访问攻击入口,到时会在网关和响应者之间引起潜在的ICMP风暴。
7 - IANA的问题
IANA为OPT的RR类型设置类型代码41。
页:
[1]