1、 中国移动BIND域名解析 软件安全配置规范 安全配置规范 Specification for BIND Software Configuration Used in China Mobile 版本号:1.0.0 中国移动通信有限公司网络部 ╳╳╳╳-╳╳-╳╳发布 ╳╳╳╳-╳╳-╳╳实施 目录 1 概述 1 1.1 适用范围 1 1.2 内部适用性说明 1 1.3 外部引用说明 2 1.4 术语和定义 2 1.5 符号和缩略语 2 2 BIND域名解析软件安全配置要求 3
2、2.1记录安全事件到文件 3 2.2隐藏BIND版本信息 4 2.3禁止DNS域名递归查询 4 2.4增加查询ID的随机性 5 2.5限制域名查询 5 2.6限制域名递归查询 6 2.7指定动态DNS更新主机 6 2.8指定动态DNS更新主机 7 2.9指定不接受区域请求 7 2.10指定不接受区域请求 8 2.11定义ACL地址名 9 2.12控制管理接口 10 2.13防止DNS欺骗 10 2.14设置重试查询次数 11 2.15防止污染高速缓存(Cache) 12 前言 为了贯彻安全三同步的要求,在设备选型、入网测试、工程验收以及运行维护等环节,明
3、确并落实安全功能和配置要求。有限公司组织部分省公司编制了中国移动设备安全功能和配置系列规范。本系列规范可作为编制设备技术规范、设备入网测试规范,工程验收手册,局数据模板等文档的依据。本规范是该系列规范之一,明确了中国移动各类型设备所需满足的通用安全功能和配置要求,并作为本系列其他规范的编制基础。 本标准起草单位:中国移动通信有限公司网络部、中国移动集团北京公司。 本标准解释单位:同提出单位。 本标准主要起草人:王 悦、陈敏时、周智、曹一生。 1 概述 1.1 适用范围 本规范适用于中国移动互联网使用BIND软件进行域名解析的DNS系统。本规范明确了BIND域名解析软件
4、安全配置方面的基本要求。 BIND:全称是Berkeley Internet Name Domain(伯克利因特网名字系统)。官方网址:http://www.isc.org/。它主要有3个版本:BIND 4,BIND 8,BIND9。BIND没有5,6,7这几个版本,一下就跳到8了,在BIND8以后的版本里融合了许多提高效率,稳定性和安全性的技术。 BIND安全选项非常多,应针对BIND服务软件进行安全配置,充分利用BIND自身已经实现的保护功能加强BIND安全性,从而能抵御目前已知的BIND安全漏洞,并尽可能使潜在的安全漏洞对DNS服务造成最小的影响。 BIND安全配置可完成针对限制域
5、传输、限制查询、防止DNS欺骗、设置重试查询次数、修改BIND的版本信息等Bind系统安全配置。本规范基于BIND9.x.x以上的版本提供了安全配置操作方法。 1.2 内部适用性说明 本规范是在《中国移动设备通用设备安全功能和配置规范》(以下简称《通用规范》)各项设备配置要求的基础上,提出的BIND域名解析软件安全配置规范。本规范新增的安全配置要求,如下: 安全要求-设备-通用-BIND-配置-1 安全要求-设备-通用-BIND-配置-2 安全要求-设备-通用-BIND-配置-3 安全要求-设备-通用-BIND-配置-4 安全要求-设备-通用-BIND-配置-5 安全要求-
6、设备-通用-BIND-配置-6 安全要求-设备-通用-BIND-配置-7 安全要求-设备-通用-BIND-配置-8 安全要求-设备-通用-BIND-配置-9 安全要求-设备-通用-BIND-配置-10 安全要求-设备-通用-BIND-配置-11 安全要求-设备-通用-BIND-配置-12 安全要求-设备-通用-BIND-配置-13 安全要求-设备-通用-BIND-配置-14 安全要求-设备-通用-BIND-配置-15 1.3 外部引用说明 《中国移动设备通用安全功能和配置规范》 1.4 术语和定义 1、 域名系统DNS(Domain Name System)是
7、域名解析服务的意思,它在互联网的作用是:把域名转换成为网络可以识别的ip地址。 2、 名字服务器和区:存储关于域名空间信息的程序叫做名字服务器(name server)。名字服务器通常含有域名空间中某一部分的完整信息,这一部分成为区(zone),区的内容是从文件或其他名字服务器中加载而来的。 3、 递归或递归解析(recursive resolution):名字服务器在收到递归查询时所采用的解析过程。 4、 反复(iteration)或反复解析(iteration resolution):名字服务器在收到反复查询时所使用的解析过程。 5、 DNS通知(DNS NOTIFY):允许一个区
8、zone)的主名字服务器在序列号增加的时候通知该区(zone)的辅名字服务器。 1.5 符号和缩略语 缩写 英文描述 中文描述 BIND Berkeley Internet Name Domain 伯克利因特网名字域系统 DNS Domain Name System 域名系统 ISC Internet Systems Consortium 互联网(系统)协会 Recursive recursive 递归方式 Iterative iterative 反复方式 Nonrecursive onrecursive 非递归方式 Resolution
9、resolution 解析 query query 查询 2 BIND域名解析软件安全配置要求 本规范所指的BIND为域名解析软件。本规范提出的安全配置要求,在未特别说明的情况下,均适用于BIND9.x.x以上版本的域名解析软件。 本规范只基于BIND9.x.x域名解析软件自身提供的安全特性进行描述,不包括承载BIND软件的操作系统的安全性以及外部网络设备、安全设备所提供的域名解析安全配置。 2.1记录安全事件到文件 编号:安全要求-设备-通用-BIND-配置-1 要求内容 解决遇到的各种的异常问题,记录日志和认真地读取日志文件是系统管理员的一项非常重要的任务
10、所以要记录安全事件到文件中,同时还要保持原有的日志模式。 检测方法 检测 /etc/bind/named.conf 文件中是否有如下内容: logging { …… } 操作指南 在 /etc/bind/named.conf 文件中增加如下内容: logging { channel my_security_channel { file "my_security_file.log" versions 3 size 20m; severity info;
11、 }; category security { my_security_channel; default_syslog; default_debug; }; } 其中my_security_channel是用户自定义的channel名字,my_security_file.log 是安全事件日志文件,可包含全路径(否则是以named进程工作目录为当前目录)。安全事件日志文件名为my_security_file.log,保存三个最近的
12、备份(my_security_file.log0、my_security_file.log1、my_security_file.log2),日志文件的最大容量为20MB(如果达到或超这一数值,直到该文件被再次打开前,将不再记录任何日志消息。缺省(省略)时是没有大小限制。) 操作结果 日志记录完整,所有异常问题都会在日志文件记录。 2.2隐藏BIND版本信息 编号:安全要求-设备-通用-配置-2 要求内容 通过DNS服务查询BIND版本号时,返回的信息BIND版本信息。 检测方法 检测 /etc/bind/named.conf 文件中是否有如下内容: version
13、 "Who knows?"; 操作指南 在 /etc/bind/named.conf 文件中增加如下内容: version "Who knows?"; 操作结果 如果通过DNS服务查询BIND版本号时,返回的信息就是"Who knows?"。 2.3禁止DNS域名递归查询 编号:安全要求-设备-通用-配置-3 要求内容 针对非递归服务器,要禁止DNS域名递归查询,在options(或特定zone区域)中增加。 检测方法 检测 /etc/bind/named.conf 文件中是否有如下内容: recursion no; fetch-glue no; 操作指南
14、在/etc/bind/named.conf 文件中的 options(或特定的zone区域)节中增加: recursion no; fetch-glue no; 操作结果 防止了DNS域名递归查询。 2.4增加查询ID的随机性 编号:安全要求-设备-通用-BIND-配置-4 要求内容 服务器将跟踪其出站查询ID值以避免出现重复,并增加随机性。 检测方法 检测 /etc/bind/named.conf 文件的options节中是否有如下内容:use-id-pool no 操作指南 在/etc/bind/named.conf 文件中的options节中增加如下内容:
15、use-id-pool yes
操作结果
这将会使服务器多占用超过128KB内存。(缺省值为no)
2.5限制域名查询
编号:安全要求-设备-通用-BIND-配置-5
要求内容
要限制对DNS服务器进行域名查询的主机
检测方法
检测 /etc/bind/named.conf 文件的options节中是否有如下内容:
allow-query {
16、tions(或特定的zone区域)节中增加:
allow-query { 17、list> };
address_match_list是允许进行域名递归查询的主机IP列表,如 "1.2.3.4; 5.6.7/24;"。
操作指南
在/etc/bind/named.conf 文件的options(或特定的zone区域)节中增加:
allow-recursion { 18、要求内容
缺省时为拒绝所有主机的提交动态DNS更新主机,我们可以根据需要指定允许哪些主机向本DNS服务器提交动态DNS更新。
检测方法
检测 /etc/bind/named.conf 文件的options节中是否有如下内容:
allow-update { 19、{ 20、tch_list是允许进行区域记录传输的主机IP列表,如"1.2.3.4; 5.6.7/24;"。
操作指南
在 /etc/bind/named.conf 文件的options(或特定的zone区域)节中增加:
allow-transfer { 21、传输请求
检测方法
检测 /etc/bind/named.conf 文件的options节中是否有如下内容:
blackhole { 22、4; 5.6.7/24;"。
操作结果
不会对系统造成任何不良的影响。
2.10指定不接受区域请求
编号:安全要求-设备-通用-BIND-配置-10
要求内容
要指定不接受哪些服务器的区域记录传输请求
检测方法
检测 /etc/bind/named.conf 文件的options节中相关内容。
操作指南
在options节中还有一些资源限制选项,不同用户可根据实际情况灵活设置,但一定要注意不当的设置会损失DNS服务的性能。
coresize 23、ize_spec> ; // 服务器所使用的最大数据段内存。缺省为 default。
files 24、不良影响。
2.11定义ACL地址名
编号:安全要求-设备-通用-BIND-配置-11
要求内容
定义ACL地址名(即用于上面的 25、{
!172.16.0.1;
172.16/12; // 除172.168.0.1外172.16.0.0/12网络中其它主机
};
BIND已内置以下四个ACL:
all // 允许所有主机
none // 禁止所有主机
localhost // 本机的所有网络接口
localnets // 本机所在网络
操作结果
上述操作建议不会对系统造成不良影响。
2.12控制管理接口
编号:安全要求-设备-通用-BIND-配置- 26、12
要求内容
BIND域名服务器的一个有用功能,controls提供管理接口。如果使用第一种(inet),则在指定IP(接口)和端口上监听,但只允许在allow中限定允许与其连接的IP地址列表。如果使用第二种(unix),则产生一个FIFO的控制管道,权限、属主和用户组都由其参数限定。
检测方法
检测 /etc/bind/named.conf 文件的相关内容:
controls {
……
};
操作指南
在 /etc/bind/named.conf 文件中增加(注意控制管理接口controls节语法格式):
controls {
27、 [ inet ip_addr
port ip_port
allow { 28、然后通过猜测序列号,假冒域名服务器返回查询地址使查询者收到虚假IP,其危害极大。现有的大多数DNS服务的实现存在两个比较危险的漏洞:
其一为当DNS服务器收到一个合法的DNS应答信息时它会接受这一返回包中的所有信息,并存入CACHE。
其二是当DNS服务器发查询包时,它在包内有一query id,应答信息只有query id及ip地址都对上时才能为服务器所接受。而此id是可以预测的,这就给了入侵者以可乘之机.
操作指南
防止入侵者上述漏洞的话,可以采取以下的方法:
1. 加强内网的安全性,使用性能优良的交换机作为网络连接设备,这样可以隔离点播,在一定范围内实现对监听的控制。
如果认 29、为必要的话,可以作一脚本定时清除CACHE。或者禁止DNS的递归查询,如果系统允许DNS的递归查询的话,将会给攻击者实施DNS欺骗造成可乘之机。
操作结果
上述操作建议在正确配置时不会对系统造成不良影响,但建议谨慎使用。
2.14设置重试查询次数
编号:安全要求-设备-通用-BIND-配置-14
要求内容
辅名字服务器在收到来自其主名字服务器的某个区的NOTIFY请求时,它就发送一个NOTIFY响应。这个响应告诉主名字服务器,该辅名字服务器已经收到NOTIFY请求,这样它就停止发送该区的NOTIFY消息了,然后辅名字服务器就会象刷新计时器到期了一样操作:他向主名字服务器查询,请 30、求那个主名字服务器声称已经改变了的区SOA记录。如果序列号较高,辅名字服务器就传送该区。
如果有人给辅名字服务器发送假冒的NOTIFY请求,造成许多不必要的区传送,从而产生对主名字服务器的dos攻击。
操作指南
如果要防止此类攻击的发生,可以采用以下的方法:
在BIND中DNS NOTIFY是缺省打开的,可以通过使用下面的配置全部关闭该功能:
options {
notify no;
};
也可以针对某个区打开或关闭该功能。例如,下面的语句可以使得区不会向的辅名字服务器发送NOTIFY消息,也可以只针对某一台辅名字服务器发送NOTIFY消息:
zone “” {
31、 type master;
file “db.abc”;
notify no;
};
操作结果
上述操作建议在正确配置时不会对系统造成不良影响,但建议谨慎使用。
2.15防止污染高速缓存(Cache)
编号:安全要求-设备-通用-BIND-配置-15
要求内容
攻击者可以通过猜测DNS解析过程中的报文序列号来伪造DNS权威服务器的应答,从而达到“污染”高速缓存(Cache)中的记录的目的,即将错误的域名指向信息注入DNS服务器,最终导致受到污染的DNS服务器将对外提供错误的解析结果。该种攻击方式可造成域名劫持攻击,使得公众在不知情的情况下通过域名访问到 32、黑客指定的网站,面临网络钓鱼和网页木马等一系列严重的安全威胁。 该攻击出现时,会短时出现大量伪造的域名解析响应数据包,呈现拒绝服务攻击特点,这些数据包的源IP、目的IP、解析的IP地址相同,但序列号不同。
操作指南
针对该漏洞,可采取以下措施进行防范:
1、在防火墙设备上配置相应的规则加以屏蔽或过滤
2、定期清理DNS缓存或在发现异常访问后清理缓存。
在crontab中增加定期清理脚本:
#Crontab –e
插入一下
0 5 * * * cd /usr/local/named/sbin;/usr/local/named/sbin/rndc flush ;
操作结果
上述操作建议在正确配置时不会对系统造成不良影响。






